-- Do not edit! Automatically created with doctest-extract from src/Data/Interval.hs {-# LINE 109 "src/Data/Interval.hs" #-} module Test.Data.Interval where import Data.Interval import Test.DocTest.Base import qualified Test.DocTest.Driver as DocTest {-# LINE 110 "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 Test.QuickCheck ((==>)) without' :: (Int,Int) -> (Int,Int) -> [(Int,Int)]; without' = without isSubsequenceOf :: Eq a => [a] -> [a] -> Bool; isSubsequenceOf [] _ = True; isSubsequenceOf (_:_) [] = False; isSubsequenceOf xs@(x:xs') (y:ys) = (x == y && xs' `List.isPrefixOf` ys) || xs `isSubsequenceOf` ys test :: DocTest.T () test = do DocTest.printPrefix "Data.Interval:189: " {-# LINE 189 "src/Data/Interval.hs" #-} DocTest.property {-# LINE 189 "src/Data/Interval.hs" #-} (forevery genNonNestedIntervalSeq $ \xs -> propSplit (\subseq -> hullSeqNonNested subseq == hullSeq subseq) (splitSeq xs)) DocTest.printPrefix "Data.Interval:177: " {-# LINE 177 "src/Data/Interval.hs" #-} DocTest.example {-# LINE 177 "src/Data/Interval.hs" #-} (propSplit (\xs -> hullSeqNonNested xs == hullSeq xs) . splitSeq . sortByRight $ Seq.fromList ([(1,3),(2,4),(4,5),(3,6)] :: [(Int,Int)])) [ExpectedLine [LineChunk "False"]] DocTest.printPrefix "Data.Interval:237: " {-# LINE 237 "src/Data/Interval.hs" #-} DocTest.property {-# LINE 237 "src/Data/Interval.hs" #-} (forevery genInterval $ \i -> overlapTime i i == intervalDuration i) DocTest.printPrefix "Data.Interval:238: " {-# LINE 238 "src/Data/Interval.hs" #-} DocTest.property {-# LINE 238 "src/Data/Interval.hs" #-} (foreveryPair genInterval $ \i j -> not (i `properlyIntersects` j) ==> overlapTime i j == 0) DocTest.printPrefix "Data.Interval:239: " {-# LINE 239 "src/Data/Interval.hs" #-} DocTest.property {-# LINE 239 "src/Data/Interval.hs" #-} (foreveryPair genInterval $ \i j -> overlapTime i j == (sum $ fmap intervalDuration $ maybeIntersection i j)) DocTest.printPrefix "Data.Interval:249: " {-# LINE 249 "src/Data/Interval.hs" #-} DocTest.property {-# LINE 249 "src/Data/Interval.hs" #-} (forevery genInterval $ \i c -> prevailing i (Seq.singleton (c,i)) == Just (c::Char)) DocTest.printPrefix "Data.Interval:250: " {-# LINE 250 "src/Data/Interval.hs" #-} DocTest.property {-# LINE 250 "src/Data/Interval.hs" #-} (foreveryPairOf genInterval genLabeledSeq $ \i js -> isJust (prevailing i js) == any (intersects i . snd) js) DocTest.printPrefix "Data.Interval:251: " {-# LINE 251 "src/Data/Interval.hs" #-} DocTest.property {-# LINE 251 "src/Data/Interval.hs" #-} (forevery genInterval $ \i -> foreveryPair genLabeledSeq $ \js ks -> all (flip elem $ catMaybes [prevailing i js, prevailing i ks]) $ prevailing i (js<>ks)) DocTest.printPrefix "Data.Interval:274: " {-# LINE 274 "src/Data/Interval.hs" #-} DocTest.property {-# LINE 274 "src/Data/Interval.hs" #-} (foreveryPair genInterval $ \i j -> isJust (maybeUnion i j) ==> fromJust (maybeUnion i j) `contains` i && fromJust (maybeUnion i j) `contains` j) DocTest.printPrefix "Data.Interval:275: " {-# LINE 275 "src/Data/Interval.hs" #-} DocTest.property {-# LINE 275 "src/Data/Interval.hs" #-} (foreveryPair genInterval $ \i j -> i `intersects` j ==> (maybeUnion i j >>= maybeIntersection i) == Just i) DocTest.printPrefix "Data.Interval:283: " {-# LINE 283 "src/Data/Interval.hs" #-} DocTest.property {-# LINE 283 "src/Data/Interval.hs" #-} (foreveryPair genInterval $ \i j -> i `intersects` j ==> i `contains` fromJust (maybeIntersection i j)) DocTest.printPrefix "Data.Interval:291: " {-# LINE 291 "src/Data/Interval.hs" #-} DocTest.property {-# LINE 291 "src/Data/Interval.hs" #-} (\xs -> isJust (hull xs) ==> all (\x -> fromJust (hull xs) `contains` x) (xs :: [(Int,Int)])) DocTest.printPrefix "Data.Interval:308: " {-# LINE 308 "src/Data/Interval.hs" #-} DocTest.property {-# LINE 308 "src/Data/Interval.hs" #-} (foreveryPair genInterval $ \i j -> length (i `without` j) <= 2) DocTest.printPrefix "Data.Interval:309: " {-# LINE 309 "src/Data/Interval.hs" #-} DocTest.property {-# LINE 309 "src/Data/Interval.hs" #-} (forevery genInterval $ \i -> i `without` i == []) DocTest.printPrefix "Data.Interval:310: " {-# LINE 310 "src/Data/Interval.hs" #-} DocTest.property {-# LINE 310 "src/Data/Interval.hs" #-} (foreveryPair genInterval $ \i j -> all (contains i) (i `without` j)) DocTest.printPrefix "Data.Interval:311: " {-# LINE 311 "src/Data/Interval.hs" #-} DocTest.property {-# LINE 311 "src/Data/Interval.hs" #-} (foreveryPair genInterval $ \i j -> not $ any (properlyIntersects j) (i `without` j)) DocTest.printPrefix "Data.Interval:299: " {-# LINE 299 "src/Data/Interval.hs" #-} DocTest.example {-# LINE 299 "src/Data/Interval.hs" #-} (without' (1,5) (4,5)) [ExpectedLine [LineChunk "[(1,4)]"]] DocTest.printPrefix "Data.Interval:301: " {-# LINE 301 "src/Data/Interval.hs" #-} DocTest.example {-# LINE 301 "src/Data/Interval.hs" #-} (without' (1,5) (2,3)) [ExpectedLine [LineChunk "[(1,2),(3,5)]"]] DocTest.printPrefix "Data.Interval:303: " {-# LINE 303 "src/Data/Interval.hs" #-} DocTest.example {-# LINE 303 "src/Data/Interval.hs" #-} (without' (1,5) (1,5)) [ExpectedLine [LineChunk "[]"]] DocTest.printPrefix "Data.Interval:305: " {-# LINE 305 "src/Data/Interval.hs" #-} DocTest.example {-# LINE 305 "src/Data/Interval.hs" #-} (without' (1,5) (0,1)) [ExpectedLine [LineChunk "[(1,5)]"]] DocTest.printPrefix "Data.Interval:327: " {-# LINE 327 "src/Data/Interval.hs" #-} DocTest.property {-# LINE 327 "src/Data/Interval.hs" #-} (forevery genSortedIntervals $ all (\xs -> and $ List.zipWith intersects xs (tail xs)) . contiguous) DocTest.printPrefix "Data.Interval:328: " {-# LINE 328 "src/Data/Interval.hs" #-} DocTest.property {-# LINE 328 "src/Data/Interval.hs" #-} (forevery genSortedIntervals $ all ((1==).length.components) . contiguous) DocTest.printPrefix "Data.Interval:343: " {-# LINE 343 "src/Data/Interval.hs" #-} DocTest.property {-# LINE 343 "src/Data/Interval.hs" #-} (forevery genSortedIntervals $ \xs -> all (\i -> any (flip contains i) (components xs)) xs) DocTest.printPrefix "Data.Interval:344: " {-# LINE 344 "src/Data/Interval.hs" #-} DocTest.property {-# LINE 344 "src/Data/Interval.hs" #-} (forevery genSortedIntervals $ \xs -> let cs = components xs in all (\(i,j) -> i == j || not (i `intersects` j)) [(c1,c2) | c1 <- cs, c2 <- cs]) DocTest.printPrefix "Data.Interval:363: " {-# LINE 363 "src/Data/Interval.hs" #-} DocTest.property {-# LINE 363 "src/Data/Interval.hs" #-} (forevery genSortedIntervals $ \xs -> componentsSeq (Seq.fromList xs) == Seq.fromList (components xs)) DocTest.printPrefix "Data.Interval:364: " {-# LINE 364 "src/Data/Interval.hs" #-} DocTest.property {-# LINE 364 "src/Data/Interval.hs" #-} (forevery genSortedIntervalSeq $ \xs -> let cs = componentsSeq xs in all (\(i,j) -> i == j || not (i `intersects` j)) $ do {c1 <- cs; c2 <- cs; return (c1,c2)}) DocTest.printPrefix "Data.Interval:377: " {-# LINE 377 "src/Data/Interval.hs" #-} DocTest.property {-# LINE 377 "src/Data/Interval.hs" #-} (foreveryPairOf genInterval genIntervalSeq $ \i js -> all (contains i) (covered i js)) DocTest.printPrefix "Data.Interval:378: " {-# LINE 378 "src/Data/Interval.hs" #-} DocTest.property {-# LINE 378 "src/Data/Interval.hs" #-} (foreveryPairOf genInterval genIntervalSeq $ \i js -> covered i (covered i js) == covered i js) DocTest.printPrefix "Data.Interval:384: " {-# LINE 384 "src/Data/Interval.hs" #-} DocTest.property {-# LINE 384 "src/Data/Interval.hs" #-} (foreveryPair genInterval $ \i j -> j `contains` i == i `coveredBy` [j]) DocTest.printPrefix "Data.Interval:385: " {-# LINE 385 "src/Data/Interval.hs" #-} DocTest.property {-# LINE 385 "src/Data/Interval.hs" #-} (foreveryPairOf genInterval genSortedIntervals $ \i js -> i `coveredBy` js ==> any (flip contains i) (components js)) DocTest.printPrefix "Data.Interval:391: " {-# LINE 391 "src/Data/Interval.hs" #-} DocTest.property {-# LINE 391 "src/Data/Interval.hs" #-} (foreveryPairOf genNonEmptyInterval genIntervalSeq $ \i js -> i `coveredBy` js == (fractionCovered i js >= (1::Rational))) DocTest.printPrefix "Data.Interval:392: " {-# LINE 392 "src/Data/Interval.hs" #-} DocTest.property {-# LINE 392 "src/Data/Interval.hs" #-} (foreveryPairOf genNonEmptyInterval genNonEmptyIntervalSeq $ \i js -> any (properlyIntersects i) js == (fractionCovered i js > (0::Rational))) DocTest.printPrefix "Data.Interval:411: " {-# LINE 411 "src/Data/Interval.hs" #-} DocTest.property {-# LINE 411 "src/Data/Interval.hs" #-} (foreveryPair genInterval $ \i j -> i `intersects` j == (overlap i j == EQ)) DocTest.printPrefix "Data.Interval:429: " {-# LINE 429 "src/Data/Interval.hs" #-} DocTest.property {-# LINE 429 "src/Data/Interval.hs" #-} (foreveryPair genInterval $ \i j -> i `properlyIntersects` j == (properOverlap i j == EQ)) DocTest.printPrefix "Data.Interval:441: " {-# LINE 441 "src/Data/Interval.hs" #-} DocTest.property {-# LINE 441 "src/Data/Interval.hs" #-} (foreveryPair 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:438: " {-# LINE 438 "src/Data/Interval.hs" #-} DocTest.example {-# LINE 438 "src/Data/Interval.hs" #-} (((1,2)::(Int,Int)) `intersects` ((2,3)::(Int,Int))) [ExpectedLine [LineChunk "True"]] DocTest.printPrefix "Data.Interval:452: " {-# LINE 452 "src/Data/Interval.hs" #-} DocTest.property {-# LINE 452 "src/Data/Interval.hs" #-} (foreveryPair genInterval $ \i j -> ((i `intersects` j) && not (i `properlyIntersects` j)) == (ub i == lb j || ub j == lb i)) DocTest.printPrefix "Data.Interval:458: " {-# LINE 458 "src/Data/Interval.hs" #-} DocTest.property {-# LINE 458 "src/Data/Interval.hs" #-} (forevery genInterval $ \i -> i `contains` i) DocTest.printPrefix "Data.Interval:459: " {-# LINE 459 "src/Data/Interval.hs" #-} DocTest.property {-# LINE 459 "src/Data/Interval.hs" #-} (foreveryPair genInterval $ \i j -> (i `contains` j && j `contains` i) == (i==j)) DocTest.printPrefix "Data.Interval:460: " {-# LINE 460 "src/Data/Interval.hs" #-} DocTest.property {-# LINE 460 "src/Data/Interval.hs" #-} (foreveryPair genInterval $ \i j -> i `contains` j == (maybeUnion i j == Just i)) DocTest.printPrefix "Data.Interval:472: " {-# LINE 472 "src/Data/Interval.hs" #-} DocTest.property {-# LINE 472 "src/Data/Interval.hs" #-} (forevery genSortedList $ \xs -> (components $ toList $ fromEndPoints xs) == if length xs < 2 then [] else [(head xs, last xs)]) DocTest.printPrefix "Data.Interval:473: " {-# LINE 473 "src/Data/Interval.hs" #-} DocTest.property {-# LINE 473 "src/Data/Interval.hs" #-} (forevery genSortedList $ \xs -> hullSeqNonNested (fromEndPoints xs) == if length xs < 2 then Nothing else Just (head xs,last xs)) DocTest.printPrefix "Data.Interval:487: " {-# LINE 487 "src/Data/Interval.hs" #-} DocTest.property {-# LINE 487 "src/Data/Interval.hs" #-} (foreveryPairOf genInterval genNonNestedIntervalSeq $ \i js -> toList (getIntersects i (FromSortedSeq js)) `isSubsequenceOf` toList js) DocTest.printPrefix "Data.Interval:488: " {-# LINE 488 "src/Data/Interval.hs" #-} DocTest.property {-# LINE 488 "src/Data/Interval.hs" #-} (forevery genSortedIntervalSeq $ \xs -> propSplit (\subseq -> subseq == sortByRight subseq) (splitSeq xs)) DocTest.printPrefix "Data.Interval:505: " {-# LINE 505 "src/Data/Interval.hs" #-} DocTest.property {-# LINE 505 "src/Data/Interval.hs" #-} (forevery genSortedIntervalSeq $ \xs -> hullSeq xs == if Seq.null xs then Nothing else Just (minimum (fmap lb xs),maximum (fmap ub xs))) DocTest.printPrefix "Data.Interval:506: " {-# LINE 506 "src/Data/Interval.hs" #-} DocTest.property {-# LINE 506 "src/Data/Interval.hs" #-} (forevery genSortedIntervalSeq $ \xs -> hullSeq xs == hull (toList xs)) DocTest.printPrefix "Data.Interval:525: " {-# LINE 525 "src/Data/Interval.hs" #-} DocTest.property {-# LINE 525 "src/Data/Interval.hs" #-} (foreveryPairOf genInterval genNonNestedIntervalSeq $ \i js' -> let js = toList js' in fst (splitIntersecting i js) == filter (intersects i) js) DocTest.printPrefix "Data.Interval:526: " {-# LINE 526 "src/Data/Interval.hs" #-} DocTest.property {-# LINE 526 "src/Data/Interval.hs" #-} (foreveryPairOf genInterval genNonNestedIntervalSeq $ \i js' -> let js = toList js' in all (\j -> not (ub j < ub i)) (snd (splitIntersecting i js))) DocTest.printPrefix "Data.Interval:522: " {-# LINE 522 "src/Data/Interval.hs" #-} DocTest.example {-# LINE 522 "src/Data/Interval.hs" #-} (splitIntersecting ((2,5) :: (Int,Int)) ([(0,1),(2,2),(2,3),(3,6),(6,7)] :: [(Int,Int)])) [ExpectedLine [LineChunk "([(2,2),(2,3),(3,6)],[(3,6),(6,7)])"]] DocTest.printPrefix "Data.Interval:546: " {-# LINE 546 "src/Data/Interval.hs" #-} DocTest.property {-# LINE 546 "src/Data/Interval.hs" #-} (foreveryPairOf genInterval genNonNestedIntervalSeq $ \i js' -> let js = toList js' in fst (splitProperlyIntersecting i js) == filter (properlyIntersects i) js) DocTest.printPrefix "Data.Interval:547: " {-# LINE 547 "src/Data/Interval.hs" #-} DocTest.property {-# LINE 547 "src/Data/Interval.hs" #-} (foreveryPairOf genInterval genNonNestedIntervalSeq $ \i js' -> let js = toList js' in all (not.properlyContains i) (snd (splitProperlyIntersecting i js))) DocTest.printPrefix "Data.Interval:543: " {-# LINE 543 "src/Data/Interval.hs" #-} DocTest.example {-# LINE 543 "src/Data/Interval.hs" #-} (splitProperlyIntersecting ((2,5) :: (Int,Int)) ([(0,1),(2,3),(2,2),(3,5),(5,6),(6,7)] :: [(Int,Int)])) [ExpectedLine [LineChunk "([(2,3),(3,5)],[(5,6),(6,7)])"]] DocTest.printPrefix "Data.Interval:579: " {-# LINE 579 "src/Data/Interval.hs" #-} DocTest.property {-# LINE 579 "src/Data/Interval.hs" #-} (forevery genSortedIntervalSeq $ \xs -> hullSeq xs == hullOfTree (itree 4 xs)) DocTest.printPrefix "Data.Interval:590: " {-# LINE 590 "src/Data/Interval.hs" #-} DocTest.property {-# LINE 590 "src/Data/Interval.hs" #-} (forevery genIntervalSeq $ \xs -> invariant . itree 4 $ xs) DocTest.printPrefix "Data.Interval:600: " {-# LINE 600 "src/Data/Interval.hs" #-} DocTest.property {-# LINE 600 "src/Data/Interval.hs" #-} (foreveryPairOf genInterval genIntervalSeq $ \i t -> on (==) sortByRight (getIntersects i $ itree 2 t) (i `intersecting` t)) DocTest.printPrefix "Data.Interval:611: " {-# LINE 611 "src/Data/Interval.hs" #-} DocTest.property {-# LINE 611 "src/Data/Interval.hs" #-} (foreveryPairOf genInterval genIntervalSeq $ \i t -> on (==) sortByRight (getProperIntersects i $ itree 2 t) (i `intersectingProperly` t)) DocTest.printPrefix "Data.Interval:743: " {-# LINE 743 "src/Data/Interval.hs" #-} DocTest.property {-# LINE 743 "src/Data/Interval.hs" #-} (forevery genIntervalSeq $ \is -> joinSeq (splitSeq is) == is) DocTest.printPrefix "Data.Interval:805: " {-# LINE 805 "src/Data/Interval.hs" #-} DocTest.property {-# LINE 805 "src/Data/Interval.hs" #-} (forevery genNonNestedIntervalSeq $ \xs -> hullSeqNonNested xs == hullSeq xs) DocTest.printPrefix "Data.Interval:822: " {-# LINE 822 "src/Data/Interval.hs" #-} DocTest.property {-# LINE 822 "src/Data/Interval.hs" #-} (foreveryPairOf genInterval genNonNestedIntervalSeq $ \i js -> getIntersects i (FromSortedSeq js) == intersecting i js)