packages feed

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)