closed-intervals-0.2.0.1: doctest/Test/Data/Interval.hs
-- 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)