-- Do not edit! Automatically created with doctest-extract from src/Data/Interval.hs {-# LINE 99 "src/Data/Interval.hs" #-} module Test.Data.Interval where import Data.Interval import Test.DocTest.Base import qualified Test.DocTest.Driver as DocTest {-# LINE 100 "src/Data/Interval.hs" #-} import Data.IntervalTest import qualified Data.Sequence as Seq import qualified Data.List as List import Data.Function (on) import Data.Maybe (isJust, fromJust, catMaybes) import Data.Foldable (toList) import qualified Test.QuickCheck as QC import Test.QuickCheck ((==>)) without' :: (Int,Int) -> (Int,Int) -> [(Int,Int)]; without' = without test :: DocTest.T () test = do DocTest.printPrefix "Data.Interval:177: " {-# LINE 177 "src/Data/Interval.hs" #-} DocTest.property {-# LINE 177 "src/Data/Interval.hs" #-} (genInterval /\ \i -> overlapTime i i == intervalDuration i) DocTest.printPrefix "Data.Interval:178: " {-# LINE 178 "src/Data/Interval.hs" #-} DocTest.property {-# LINE 178 "src/Data/Interval.hs" #-} (genInterval /\* \i j -> not (i `properlyIntersects` j) ==> overlapTime i j == 0) DocTest.printPrefix "Data.Interval:179: " {-# LINE 179 "src/Data/Interval.hs" #-} DocTest.property {-# LINE 179 "src/Data/Interval.hs" #-} (genInterval /\* \i j -> overlapTime i j == (sum $ fmap intervalDuration $ maybeIntersection i j)) DocTest.printPrefix "Data.Interval:189: " {-# LINE 189 "src/Data/Interval.hs" #-} DocTest.property {-# LINE 189 "src/Data/Interval.hs" #-} (genInterval /\ \i c -> prevailing i (Seq.singleton (c,i)) == Just (c::Char)) DocTest.printPrefix "Data.Interval:190: " {-# LINE 190 "src/Data/Interval.hs" #-} DocTest.property {-# LINE 190 "src/Data/Interval.hs" #-} (genInterval /\ \i -> genLabeledSeq /\ \js -> isJust (prevailing i js) == any (intersects i . snd) js) DocTest.printPrefix "Data.Interval:191: " {-# LINE 191 "src/Data/Interval.hs" #-} DocTest.property {-# LINE 191 "src/Data/Interval.hs" #-} (genInterval /\ \i -> genLabeledSeq /\* \js ks -> all (flip elem $ catMaybes [prevailing i js, prevailing i ks]) $ prevailing i (js<>ks)) DocTest.printPrefix "Data.Interval:214: " {-# LINE 214 "src/Data/Interval.hs" #-} DocTest.property {-# LINE 214 "src/Data/Interval.hs" #-} (genInterval /\* \i j -> isJust (maybeUnion i j) ==> fromJust (maybeUnion i j) `contains` i && fromJust (maybeUnion i j) `contains` j) DocTest.printPrefix "Data.Interval:215: " {-# LINE 215 "src/Data/Interval.hs" #-} DocTest.property {-# LINE 215 "src/Data/Interval.hs" #-} (genInterval /\* \i j -> i `intersects` j ==> (maybeUnion i j >>= maybeIntersection i) == Just i) DocTest.printPrefix "Data.Interval:223: " {-# LINE 223 "src/Data/Interval.hs" #-} DocTest.property {-# LINE 223 "src/Data/Interval.hs" #-} (genInterval /\* \i j -> i `intersects` j ==> i `contains` fromJust (maybeIntersection i j)) DocTest.printPrefix "Data.Interval:231: " {-# LINE 231 "src/Data/Interval.hs" #-} DocTest.property {-# LINE 231 "src/Data/Interval.hs" #-} (\xs -> isJust (hull xs) ==> all (\x -> fromJust (hull xs) `contains` x) (xs :: [(Int,Int)])) DocTest.printPrefix "Data.Interval:248: " {-# LINE 248 "src/Data/Interval.hs" #-} DocTest.property {-# LINE 248 "src/Data/Interval.hs" #-} (genInterval /\* \i j -> length (i `without` j) <= 2) DocTest.printPrefix "Data.Interval:249: " {-# LINE 249 "src/Data/Interval.hs" #-} DocTest.property {-# LINE 249 "src/Data/Interval.hs" #-} (genInterval /\ \i -> i `without` i == []) DocTest.printPrefix "Data.Interval:250: " {-# LINE 250 "src/Data/Interval.hs" #-} DocTest.property {-# LINE 250 "src/Data/Interval.hs" #-} (genInterval /\* \i j -> all (contains i) (i `without` j)) DocTest.printPrefix "Data.Interval:251: " {-# LINE 251 "src/Data/Interval.hs" #-} DocTest.property {-# LINE 251 "src/Data/Interval.hs" #-} (genInterval /\* \i j -> not $ any (properlyIntersects j) (i `without` j)) DocTest.printPrefix "Data.Interval:239: " {-# LINE 239 "src/Data/Interval.hs" #-} DocTest.example {-# LINE 239 "src/Data/Interval.hs" #-} (without' (1,5) (4,5)) [ExpectedLine [LineChunk "[(1,4)]"]] DocTest.printPrefix "Data.Interval:241: " {-# LINE 241 "src/Data/Interval.hs" #-} DocTest.example {-# LINE 241 "src/Data/Interval.hs" #-} (without' (1,5) (2,3)) [ExpectedLine [LineChunk "[(1,2),(3,5)]"]] DocTest.printPrefix "Data.Interval:243: " {-# LINE 243 "src/Data/Interval.hs" #-} DocTest.example {-# LINE 243 "src/Data/Interval.hs" #-} (without' (1,5) (1,5)) [ExpectedLine [LineChunk "[]"]] DocTest.printPrefix "Data.Interval:245: " {-# LINE 245 "src/Data/Interval.hs" #-} DocTest.example {-# LINE 245 "src/Data/Interval.hs" #-} (without' (1,5) (0,1)) [ExpectedLine [LineChunk "[(1,5)]"]] DocTest.printPrefix "Data.Interval:267: " {-# LINE 267 "src/Data/Interval.hs" #-} DocTest.property {-# LINE 267 "src/Data/Interval.hs" #-} (genSortedIntervals /\ all (\xs -> and $ List.zipWith intersects xs (tail xs)) . contiguous) DocTest.printPrefix "Data.Interval:282: " {-# LINE 282 "src/Data/Interval.hs" #-} DocTest.property {-# LINE 282 "src/Data/Interval.hs" #-} (genSortedIntervals /\ \xs -> all (\i -> any (flip contains i) (components xs)) xs) DocTest.printPrefix "Data.Interval:293: " {-# LINE 293 "src/Data/Interval.hs" #-} DocTest.property {-# LINE 293 "src/Data/Interval.hs" #-} (genSortedIntervals /\ \xs -> componentsSeq (Seq.fromList xs) == Seq.fromList (components xs)) DocTest.printPrefix "Data.Interval:306: " {-# LINE 306 "src/Data/Interval.hs" #-} DocTest.property {-# LINE 306 "src/Data/Interval.hs" #-} (genInterval /\ \i -> genIntervalSeq /\ \js -> all (contains i) (covered i js)) DocTest.printPrefix "Data.Interval:307: " {-# LINE 307 "src/Data/Interval.hs" #-} DocTest.property {-# LINE 307 "src/Data/Interval.hs" #-} (genInterval /\ \i -> genIntervalSeq /\ \js -> covered i (covered i js) == covered i js) DocTest.printPrefix "Data.Interval:315: " {-# LINE 315 "src/Data/Interval.hs" #-} DocTest.property {-# LINE 315 "src/Data/Interval.hs" #-} (genInterval /\* \i j -> j `contains` i == i `coveredBy` [j]) DocTest.printPrefix "Data.Interval:316: " {-# LINE 316 "src/Data/Interval.hs" #-} DocTest.property {-# LINE 316 "src/Data/Interval.hs" #-} (genInterval /\ \i -> genSortedIntervals /\ \js -> i `coveredBy` js ==> any (flip contains i) (components js)) DocTest.printPrefix "Data.Interval:322: " {-# LINE 322 "src/Data/Interval.hs" #-} DocTest.property {-# LINE 322 "src/Data/Interval.hs" #-} (genNonEmptyInterval /\ \i -> genIntervalSeq /\ \js -> i `coveredBy` js == (fractionCovered i js >= (1::Rational))) DocTest.printPrefix "Data.Interval:323: " {-# LINE 323 "src/Data/Interval.hs" #-} DocTest.property {-# LINE 323 "src/Data/Interval.hs" #-} (genNonEmptyInterval /\ \i -> genNonEmptyIntervalSeq /\ \js -> any (properlyIntersects i) js == (fractionCovered i js > (0::Rational))) DocTest.printPrefix "Data.Interval:342: " {-# LINE 342 "src/Data/Interval.hs" #-} DocTest.property {-# LINE 342 "src/Data/Interval.hs" #-} (genInterval /\* \i j -> i `intersects` j == (overlap i j == EQ)) DocTest.printPrefix "Data.Interval:354: " {-# LINE 354 "src/Data/Interval.hs" #-} DocTest.property {-# LINE 354 "src/Data/Interval.hs" #-} (genInterval /\* \i j -> (lb i <= ub i && lb j <= ub j && i `intersects` j) == (max (lb i) (lb j) <= min (ub i) (ub j))) DocTest.printPrefix "Data.Interval:351: " {-# LINE 351 "src/Data/Interval.hs" #-} DocTest.example {-# LINE 351 "src/Data/Interval.hs" #-} (((1,2)::(Int,Int)) `intersects` ((2,3)::(Int,Int))) [ExpectedLine [LineChunk "True"]] DocTest.printPrefix "Data.Interval:365: " {-# LINE 365 "src/Data/Interval.hs" #-} DocTest.property {-# LINE 365 "src/Data/Interval.hs" #-} (genInterval /\* \i j -> ((i `intersects` j) && not (i `properlyIntersects` j)) == (ub i == lb j || ub j == lb i)) DocTest.printPrefix "Data.Interval:371: " {-# LINE 371 "src/Data/Interval.hs" #-} DocTest.property {-# LINE 371 "src/Data/Interval.hs" #-} (genInterval /\ \i -> i `contains` i) DocTest.printPrefix "Data.Interval:372: " {-# LINE 372 "src/Data/Interval.hs" #-} DocTest.property {-# LINE 372 "src/Data/Interval.hs" #-} (genInterval /\* \i j -> (i `contains` j && j `contains` i) == (i==j)) DocTest.printPrefix "Data.Interval:373: " {-# LINE 373 "src/Data/Interval.hs" #-} DocTest.property {-# LINE 373 "src/Data/Interval.hs" #-} (genInterval /\* \i j -> i `contains` j == (maybeUnion i j == Just i)) DocTest.printPrefix "Data.Interval:385: " {-# LINE 385 "src/Data/Interval.hs" #-} DocTest.property {-# LINE 385 "src/Data/Interval.hs" #-} (genSortedList /\ \xs -> (components $ toList $ fromEndPoints xs) == if length xs < 2 then [] else [(head xs, last xs)]) DocTest.printPrefix "Data.Interval:398: " {-# LINE 398 "src/Data/Interval.hs" #-} DocTest.property {-# LINE 398 "src/Data/Interval.hs" #-} (genInterval /\ \i -> genSortedIntervalSeq /\ \js -> toList (getIntersects i js) `List.isSubsequenceOf` toList js) DocTest.printPrefix "Data.Interval:415: " {-# LINE 415 "src/Data/Interval.hs" #-} DocTest.property {-# LINE 415 "src/Data/Interval.hs" #-} (genSortedIntervalSeq /\ \xs -> hullSeq xs == hull (toList xs)) DocTest.printPrefix "Data.Interval:447: " {-# LINE 447 "src/Data/Interval.hs" #-} DocTest.property {-# LINE 447 "src/Data/Interval.hs" #-} (invariant . itree 4 . fmap (\(x,y) -> (x, x + QC.getNonNegative y :: Integer))) DocTest.printPrefix "Data.Interval:457: " {-# LINE 457 "src/Data/Interval.hs" #-} DocTest.property {-# LINE 457 "src/Data/Interval.hs" #-} (genInterval /\ \i -> genIntervalSeq /\ \t -> on (==) sortByLeft (getIntersectsIT i $ itree 2 t) (i `intersecting` t)) DocTest.printPrefix "Data.Interval:468: " {-# LINE 468 "src/Data/Interval.hs" #-} DocTest.property {-# LINE 468 "src/Data/Interval.hs" #-} (genInterval /\ \i -> genIntervalSeq /\ \t -> on (==) sortByLeft (getProperIntersectsIT i $ itree 2 t) (i `intersectingProperly` t)) DocTest.printPrefix "Data.Interval:573: " {-# LINE 573 "src/Data/Interval.hs" #-} DocTest.property {-# LINE 573 "src/Data/Interval.hs" #-} (genIntervalSeq /\ \is -> joinSeq (splitSeq is) == is) DocTest.printPrefix "Data.Interval:630: " {-# LINE 630 "src/Data/Interval.hs" #-} DocTest.property {-# LINE 630 "src/Data/Interval.hs" #-} (genDisjointIntervalSeq /\ \xs -> hullSeqNonOverlap xs == hullSeq xs) DocTest.printPrefix "Data.Interval:647: " {-# LINE 647 "src/Data/Interval.hs" #-} DocTest.property {-# LINE 647 "src/Data/Interval.hs" #-} (genInterval /\ \i -> genDisjointIntervalSeq /\ \js -> findSeq intersects i js == intersecting i js)