checkmate-0.1.0: test/Checkmate/DiffSpec.hs
module Checkmate.DiffSpec (spec) where
import Data.Range.Range as Range
import Test.Hspec
import Test.QuickCheck
import Text.Diff.Parse.Types as DT
import Checkmate.Diff (rangeFromDiffRange)
instance Arbitrary DT.Range where
arbitrary = do
NonZero start <- arbitrary
NonZero lineLen <- arbitrary
return $ DT.Range (abs start) (abs lineLen)
spec :: Spec
spec =
specify "rangeFromDiffRange" $ property $ \ dr@(DT.Range start lineLen) ->
let r = rangeFromDiffRange dr
in
Range.inRange r start &&
not (Range.inRange r $ start - 1) &&
Range.inRange r (start + lineLen - 1) &&
not (Range.inRange r $ start + lineLen)