closed-intervals-0.1.1.0: doctest/Test/Data/Interval.hs
-- Do not edit! Automatically created with doctest-extract from src/Data/Interval.hs
{-# LINE 107 "src/Data/Interval.hs" #-}
module Test.Data.Interval where
import Data.Interval
import Test.DocTest.Base
import qualified Test.DocTest.Driver as DocTest
{-# LINE 108 "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:189: "
{-# LINE 189 "src/Data/Interval.hs" #-}
DocTest.property
{-# LINE 189 "src/Data/Interval.hs" #-}
(genInterval /\ \i -> overlapTime i i == intervalDuration i)
DocTest.printPrefix "Data.Interval:190: "
{-# LINE 190 "src/Data/Interval.hs" #-}
DocTest.property
{-# LINE 190 "src/Data/Interval.hs" #-}
(genInterval /\* \i j -> not (i `properlyIntersects` j) ==> overlapTime i j == 0)
DocTest.printPrefix "Data.Interval:191: "
{-# LINE 191 "src/Data/Interval.hs" #-}
DocTest.property
{-# LINE 191 "src/Data/Interval.hs" #-}
(genInterval /\* \i j -> overlapTime i j == (sum $ fmap intervalDuration $ maybeIntersection i j))
DocTest.printPrefix "Data.Interval:201: "
{-# LINE 201 "src/Data/Interval.hs" #-}
DocTest.property
{-# LINE 201 "src/Data/Interval.hs" #-}
(genInterval /\ \i c -> prevailing i (Seq.singleton (c,i)) == Just (c::Char))
DocTest.printPrefix "Data.Interval:202: "
{-# LINE 202 "src/Data/Interval.hs" #-}
DocTest.property
{-# LINE 202 "src/Data/Interval.hs" #-}
(genInterval /\ \i -> genLabeledSeq /\ \js -> isJust (prevailing i js) == any (intersects i . snd) js)
DocTest.printPrefix "Data.Interval:203: "
{-# LINE 203 "src/Data/Interval.hs" #-}
DocTest.property
{-# LINE 203 "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:226: "
{-# LINE 226 "src/Data/Interval.hs" #-}
DocTest.property
{-# LINE 226 "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:227: "
{-# LINE 227 "src/Data/Interval.hs" #-}
DocTest.property
{-# LINE 227 "src/Data/Interval.hs" #-}
(genInterval /\* \i j -> i `intersects` j ==> (maybeUnion i j >>= maybeIntersection i) == Just i)
DocTest.printPrefix "Data.Interval:235: "
{-# LINE 235 "src/Data/Interval.hs" #-}
DocTest.property
{-# LINE 235 "src/Data/Interval.hs" #-}
(genInterval /\* \i j -> i `intersects` j ==> i `contains` fromJust (maybeIntersection i j))
DocTest.printPrefix "Data.Interval:243: "
{-# LINE 243 "src/Data/Interval.hs" #-}
DocTest.property
{-# LINE 243 "src/Data/Interval.hs" #-}
(\xs -> isJust (hull xs) ==> all (\x -> fromJust (hull xs) `contains` x) (xs :: [(Int,Int)]))
DocTest.printPrefix "Data.Interval:260: "
{-# LINE 260 "src/Data/Interval.hs" #-}
DocTest.property
{-# LINE 260 "src/Data/Interval.hs" #-}
(genInterval /\* \i j -> length (i `without` j) <= 2)
DocTest.printPrefix "Data.Interval:261: "
{-# LINE 261 "src/Data/Interval.hs" #-}
DocTest.property
{-# LINE 261 "src/Data/Interval.hs" #-}
(genInterval /\ \i -> i `without` i == [])
DocTest.printPrefix "Data.Interval:262: "
{-# LINE 262 "src/Data/Interval.hs" #-}
DocTest.property
{-# LINE 262 "src/Data/Interval.hs" #-}
(genInterval /\* \i j -> all (contains i) (i `without` j))
DocTest.printPrefix "Data.Interval:263: "
{-# LINE 263 "src/Data/Interval.hs" #-}
DocTest.property
{-# LINE 263 "src/Data/Interval.hs" #-}
(genInterval /\* \i j -> not $ any (properlyIntersects j) (i `without` j))
DocTest.printPrefix "Data.Interval:251: "
{-# LINE 251 "src/Data/Interval.hs" #-}
DocTest.example
{-# LINE 251 "src/Data/Interval.hs" #-}
(without' (1,5) (4,5))
[ExpectedLine [LineChunk "[(1,4)]"]]
DocTest.printPrefix "Data.Interval:253: "
{-# LINE 253 "src/Data/Interval.hs" #-}
DocTest.example
{-# LINE 253 "src/Data/Interval.hs" #-}
(without' (1,5) (2,3))
[ExpectedLine [LineChunk "[(1,2),(3,5)]"]]
DocTest.printPrefix "Data.Interval:255: "
{-# LINE 255 "src/Data/Interval.hs" #-}
DocTest.example
{-# LINE 255 "src/Data/Interval.hs" #-}
(without' (1,5) (1,5))
[ExpectedLine [LineChunk "[]"]]
DocTest.printPrefix "Data.Interval:257: "
{-# LINE 257 "src/Data/Interval.hs" #-}
DocTest.example
{-# LINE 257 "src/Data/Interval.hs" #-}
(without' (1,5) (0,1))
[ExpectedLine [LineChunk "[(1,5)]"]]
DocTest.printPrefix "Data.Interval:279: "
{-# LINE 279 "src/Data/Interval.hs" #-}
DocTest.property
{-# LINE 279 "src/Data/Interval.hs" #-}
(genSortedIntervals /\ all (\xs -> and $ List.zipWith intersects xs (tail xs)) . contiguous)
DocTest.printPrefix "Data.Interval:294: "
{-# LINE 294 "src/Data/Interval.hs" #-}
DocTest.property
{-# LINE 294 "src/Data/Interval.hs" #-}
(genSortedIntervals /\ \xs -> all (\i -> any (flip contains i) (components xs)) xs)
DocTest.printPrefix "Data.Interval:305: "
{-# LINE 305 "src/Data/Interval.hs" #-}
DocTest.property
{-# LINE 305 "src/Data/Interval.hs" #-}
(genSortedIntervals /\ \xs -> componentsSeq (Seq.fromList xs) == Seq.fromList (components xs))
DocTest.printPrefix "Data.Interval:318: "
{-# LINE 318 "src/Data/Interval.hs" #-}
DocTest.property
{-# LINE 318 "src/Data/Interval.hs" #-}
(genInterval /\ \i -> genIntervalSeq /\ \js -> all (contains i) (covered i js))
DocTest.printPrefix "Data.Interval:319: "
{-# LINE 319 "src/Data/Interval.hs" #-}
DocTest.property
{-# LINE 319 "src/Data/Interval.hs" #-}
(genInterval /\ \i -> genIntervalSeq /\ \js -> covered i (covered i js) == covered i js)
DocTest.printPrefix "Data.Interval:327: "
{-# LINE 327 "src/Data/Interval.hs" #-}
DocTest.property
{-# LINE 327 "src/Data/Interval.hs" #-}
(genInterval /\* \i j -> j `contains` i == i `coveredBy` [j])
DocTest.printPrefix "Data.Interval:328: "
{-# LINE 328 "src/Data/Interval.hs" #-}
DocTest.property
{-# LINE 328 "src/Data/Interval.hs" #-}
(genInterval /\ \i -> genSortedIntervals /\ \js -> i `coveredBy` js ==> any (flip contains i) (components js))
DocTest.printPrefix "Data.Interval:334: "
{-# LINE 334 "src/Data/Interval.hs" #-}
DocTest.property
{-# LINE 334 "src/Data/Interval.hs" #-}
(genNonEmptyInterval /\ \i -> genIntervalSeq /\ \js -> i `coveredBy` js == (fractionCovered i js >= (1::Rational)))
DocTest.printPrefix "Data.Interval:335: "
{-# LINE 335 "src/Data/Interval.hs" #-}
DocTest.property
{-# LINE 335 "src/Data/Interval.hs" #-}
(genNonEmptyInterval /\ \i -> genNonEmptyIntervalSeq /\ \js -> any (properlyIntersects i) js == (fractionCovered i js > (0::Rational)))
DocTest.printPrefix "Data.Interval:354: "
{-# LINE 354 "src/Data/Interval.hs" #-}
DocTest.property
{-# LINE 354 "src/Data/Interval.hs" #-}
(genInterval /\* \i j -> i `intersects` j == (overlap i j == EQ))
DocTest.printPrefix "Data.Interval:372: "
{-# LINE 372 "src/Data/Interval.hs" #-}
DocTest.property
{-# LINE 372 "src/Data/Interval.hs" #-}
(genInterval /\* \i j -> i `properlyIntersects` j == (properOverlap i j == EQ))
DocTest.printPrefix "Data.Interval:384: "
{-# LINE 384 "src/Data/Interval.hs" #-}
DocTest.property
{-# LINE 384 "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:381: "
{-# LINE 381 "src/Data/Interval.hs" #-}
DocTest.example
{-# LINE 381 "src/Data/Interval.hs" #-}
(((1,2)::(Int,Int)) `intersects` ((2,3)::(Int,Int)))
[ExpectedLine [LineChunk "True"]]
DocTest.printPrefix "Data.Interval:395: "
{-# LINE 395 "src/Data/Interval.hs" #-}
DocTest.property
{-# LINE 395 "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:401: "
{-# LINE 401 "src/Data/Interval.hs" #-}
DocTest.property
{-# LINE 401 "src/Data/Interval.hs" #-}
(genInterval /\ \i -> i `contains` i)
DocTest.printPrefix "Data.Interval:402: "
{-# LINE 402 "src/Data/Interval.hs" #-}
DocTest.property
{-# LINE 402 "src/Data/Interval.hs" #-}
(genInterval /\* \i j -> (i `contains` j && j `contains` i) == (i==j))
DocTest.printPrefix "Data.Interval:403: "
{-# LINE 403 "src/Data/Interval.hs" #-}
DocTest.property
{-# LINE 403 "src/Data/Interval.hs" #-}
(genInterval /\* \i j -> i `contains` j == (maybeUnion i j == Just i))
DocTest.printPrefix "Data.Interval:415: "
{-# LINE 415 "src/Data/Interval.hs" #-}
DocTest.property
{-# LINE 415 "src/Data/Interval.hs" #-}
(genSortedList /\ \xs -> (components $ toList $ fromEndPoints xs) == if length xs < 2 then [] else [(head xs, last xs)])
DocTest.printPrefix "Data.Interval:428: "
{-# LINE 428 "src/Data/Interval.hs" #-}
DocTest.property
{-# LINE 428 "src/Data/Interval.hs" #-}
(genInterval /\ \i -> genSortedIntervalSeq /\ \js -> toList (getIntersects i js) `List.isSubsequenceOf` toList js)
DocTest.printPrefix "Data.Interval:445: "
{-# LINE 445 "src/Data/Interval.hs" #-}
DocTest.property
{-# LINE 445 "src/Data/Interval.hs" #-}
(genSortedIntervalSeq /\ \xs -> hullSeq xs == hull (toList xs))
DocTest.printPrefix "Data.Interval:464: "
{-# LINE 464 "src/Data/Interval.hs" #-}
DocTest.property
{-# LINE 464 "src/Data/Interval.hs" #-}
(genInterval /\ \i -> genSortedIntervals /\ \js -> fst (splitIntersecting i js) == filter (intersects i) js)
DocTest.printPrefix "Data.Interval:465: "
{-# LINE 465 "src/Data/Interval.hs" #-}
DocTest.property
{-# LINE 465 "src/Data/Interval.hs" #-}
(genInterval /\ \i -> genSortedIntervals /\ \js -> all (\j -> not (ub j < ub i)) (snd (splitIntersecting i js)))
DocTest.printPrefix "Data.Interval:461: "
{-# LINE 461 "src/Data/Interval.hs" #-}
DocTest.example
{-# LINE 461 "src/Data/Interval.hs" #-}
(splitIntersecting ((2,5) :: (Int,Int)) ([(0,1),(2,3),(2,2),(3,6),(6,7)] :: [(Int,Int)]))
[ExpectedLine [LineChunk "([(2,3),(2,2),(3,6)],[(3,6),(6,7)])"]]
DocTest.printPrefix "Data.Interval:485: "
{-# LINE 485 "src/Data/Interval.hs" #-}
DocTest.property
{-# LINE 485 "src/Data/Interval.hs" #-}
(genInterval /\ \i -> genSortedIntervals /\ \js -> fst (splitProperlyIntersecting i js) == filter (properlyIntersects i) js)
DocTest.printPrefix "Data.Interval:486: "
{-# LINE 486 "src/Data/Interval.hs" #-}
DocTest.property
{-# LINE 486 "src/Data/Interval.hs" #-}
(genInterval /\ \i -> genSortedIntervals /\ \js -> all (not.contains i) (snd (splitProperlyIntersecting i js)))
DocTest.printPrefix "Data.Interval:482: "
{-# LINE 482 "src/Data/Interval.hs" #-}
DocTest.example
{-# LINE 482 "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:523: "
{-# LINE 523 "src/Data/Interval.hs" #-}
DocTest.property
{-# LINE 523 "src/Data/Interval.hs" #-}
(invariant . itree 4 . fmap (\(x,y) -> (x, x + QC.getNonNegative y :: Integer)))
DocTest.printPrefix "Data.Interval:533: "
{-# LINE 533 "src/Data/Interval.hs" #-}
DocTest.property
{-# LINE 533 "src/Data/Interval.hs" #-}
(genInterval /\ \i -> genIntervalSeq /\ \t -> on (==) sortByLeft (getIntersectsIT i $ itree 2 t) (i `intersecting` t))
DocTest.printPrefix "Data.Interval:544: "
{-# LINE 544 "src/Data/Interval.hs" #-}
DocTest.property
{-# LINE 544 "src/Data/Interval.hs" #-}
(genInterval /\ \i -> genIntervalSeq /\ \t -> on (==) sortByLeft (getProperIntersectsIT i $ itree 2 t) (i `intersectingProperly` t))
DocTest.printPrefix "Data.Interval:649: "
{-# LINE 649 "src/Data/Interval.hs" #-}
DocTest.property
{-# LINE 649 "src/Data/Interval.hs" #-}
(genIntervalSeq /\ \is -> joinSeq (splitSeq is) == is)
DocTest.printPrefix "Data.Interval:706: "
{-# LINE 706 "src/Data/Interval.hs" #-}
DocTest.property
{-# LINE 706 "src/Data/Interval.hs" #-}
(genDisjointIntervalSeq /\ \xs -> hullSeqNonOverlap xs == hullSeq xs)
DocTest.printPrefix "Data.Interval:732: "
{-# LINE 732 "src/Data/Interval.hs" #-}
DocTest.property
{-# LINE 732 "src/Data/Interval.hs" #-}
(genInterval /\ \i -> genDisjointIntervalSeq /\ \js -> findSeq intersects i js == intersecting i js)