packages feed

checkmate-0.1.0: test/Checkmate/CheckSpec.hs

{-# LANGUAGE FlexibleInstances #-}
module Checkmate.CheckSpec (spec) where

import Data.Range.Range
import System.FilePath
import Test.Hspec

import Checkmate.Check

spec :: Spec
spec =
    describe "Scope" $ do
        let p = "foo" </> "bar"
            r = SingletonRange 1
        it "doesn't equal if two values' data constructors are different" $ do
            FileBlock p r `shouldNotBe` Directory p
            FileBlock p r `shouldNotBe` Directory (p </> "baz")
        it "doesn't equal if two FileBlocks have different scopeRange" $ do
            FileBlock p r `shouldNotBe` FileBlock p (SingletonRange 2)
            FileBlock p r `shouldNotBe`
                FileBlock (p </> "baz") (SingletonRange 2)
        it "equals if two values' scopePaths refer to the same path" $ do
            Directory p `shouldBe` Directory p
            FileBlock p r `shouldBe` FileBlock p r
            Directory p `shouldBe` Directory ("." </> p)
            FileBlock p r `shouldBe` FileBlock ("." </> p) r