non-empty-0.3.6.1: test/Test/Data/NonEmptyPrivate.hs
-- Do not edit! Automatically created with doctest-extract from src/Data/NonEmptyPrivate.hs
{-# LINE 43 "src/Data/NonEmptyPrivate.hs" #-}
module Test.Data.NonEmptyPrivate where
import Test.DocTest.Base
import qualified Test.DocTest.Driver as DocTest
{-# LINE 44 "src/Data/NonEmptyPrivate.hs" #-}
import qualified Data.NonEmpty.Class as NonEmptyC
import qualified Data.NonEmpty as NonEmpty
import qualified Data.Empty as Empty
import qualified Data.List.HT as ListHT
import qualified Data.Either.HT as EitherHT
import qualified Control.Functor.HT as FuncHT
import qualified Data.Ix as Ix
import Data.NonEmpty ((!:))
import Data.Tuple.HT (swap)
import Data.Maybe (mapMaybe)
import Control.Applicative (liftA2)
import Control.Functor.HT (void)
import qualified Test.QuickCheck as QC
forRange :: (QC.Testable test) => ((Char,Char) -> test) -> QC.Property
forRange =
QC.forAll (liftA2 (,) (QC.choose ('a','h')) (QC.choose ('a','h')))
test :: DocTest.T ()
test = do
DocTest.printPrefix "Data.NonEmptyPrivate:483: "
{-# LINE 483 "src/Data/NonEmptyPrivate.hs" #-}
DocTest.property(
{-# LINE 483 "src/Data/NonEmptyPrivate.hs" #-}
\xs ys ->
NonEmpty.flatten (NonEmptyC.mergeBy (<=) xs (ys :: NonEmpty.T [] Int))
==
ListHT.mergeBy (<=) (NonEmpty.flatten xs) (NonEmpty.flatten ys)
)
DocTest.printPrefix "Data.NonEmptyPrivate:497: "
{-# LINE 497 "src/Data/NonEmptyPrivate.hs" #-}
DocTest.property(
{-# LINE 497 "src/Data/NonEmptyPrivate.hs" #-}
\xs ys ->
NonEmpty.flatten (NonEmpty.mergeLeftBy (<=) xs (ys :: [Int]))
==
ListHT.mergeBy (<=) (NonEmpty.flatten xs) ys
)
DocTest.printPrefix "Data.NonEmptyPrivate:516: "
{-# LINE 516 "src/Data/NonEmptyPrivate.hs" #-}
DocTest.property(
{-# LINE 516 "src/Data/NonEmptyPrivate.hs" #-}
\xs ys ->
NonEmpty.flatten (NonEmpty.mergeRightBy (<=) (xs :: [Int]) ys)
==
ListHT.mergeBy (<=) xs (NonEmpty.flatten ys)
)
DocTest.printPrefix "Data.NonEmptyPrivate:535: "
{-# LINE 535 "src/Data/NonEmptyPrivate.hs" #-}
DocTest.example(
{-# LINE 535 "src/Data/NonEmptyPrivate.hs" #-}
NonEmpty.mergeBy (<=) ('c'!:'d':'f':[]) ('a'!:'e':'h':[])
)
[ExpectedLine [LineChunk "'a'!:'c'!:'d':'e':'f':'h':[]"]]
DocTest.printPrefix "Data.NonEmptyPrivate:538: "
{-# LINE 538 "src/Data/NonEmptyPrivate.hs" #-}
DocTest.property(
{-# LINE 538 "src/Data/NonEmptyPrivate.hs" #-}
\xs ys ->
NonEmpty.flatten
(NonEmpty.flatten (NonEmpty.mergeBy (<=) xs (ys :: NonEmpty.T [] Int)))
==
ListHT.mergeBy (<=) (NonEmpty.flatten xs) (NonEmpty.flatten ys)
)
DocTest.printPrefix "Data.NonEmptyPrivate:683: "
{-# LINE 683 "src/Data/NonEmptyPrivate.hs" #-}
DocTest.property(
{-# LINE 683 "src/Data/NonEmptyPrivate.hs" #-}
let takeUntil p xs = NonEmpty.zipWith const xs $ () !: void (takeWhile (not . p) $ NonEmpty.flatten xs) in \k xs -> takeUntil (>=k) xs == NonEmpty.takeUntil (>=(k::Int)) xs
)
DocTest.printPrefix "Data.NonEmptyPrivate:827: "
{-# LINE 827 "src/Data/NonEmptyPrivate.hs" #-}
DocTest.property(
{-# LINE 827 "src/Data/NonEmptyPrivate.hs" #-}
\xs -> mapMaybe EitherHT.maybeLeft (NonEmpty.flatten xs) == either NonEmpty.flatten fst (NonEmpty.partitionEithersLeft (xs::NonEmpty.T[](Either Char Int)))
)
DocTest.printPrefix "Data.NonEmptyPrivate:828: "
{-# LINE 828 "src/Data/NonEmptyPrivate.hs" #-}
DocTest.property(
{-# LINE 828 "src/Data/NonEmptyPrivate.hs" #-}
\xs -> mapMaybe EitherHT.maybeRight (NonEmpty.flatten xs) == either (const []) (NonEmpty.flatten . snd) (NonEmpty.partitionEithersLeft (xs::NonEmpty.T[](Either Char Int)))
)
DocTest.printPrefix "Data.NonEmptyPrivate:829: "
{-# LINE 829 "src/Data/NonEmptyPrivate.hs" #-}
DocTest.property(
{-# LINE 829 "src/Data/NonEmptyPrivate.hs" #-}
\xs -> NonEmpty.partitionEithersRight (fmap EitherHT.swap xs) == EitherHT.mapLeft swap (EitherHT.swap (NonEmpty.partitionEithersLeft (xs::NonEmpty.T[](Either Char Int))))
)
DocTest.printPrefix "Data.NonEmptyPrivate:839: "
{-# LINE 839 "src/Data/NonEmptyPrivate.hs" #-}
DocTest.property(
{-# LINE 839 "src/Data/NonEmptyPrivate.hs" #-}
\xs -> NonEmpty.partitionEithersLeft (fmap EitherHT.swap xs) == EitherHT.mapRight swap (EitherHT.swap (NonEmpty.partitionEithersRight (xs::NonEmpty.T[](Either Char Int))))
)
DocTest.printPrefix "Data.NonEmptyPrivate:850: "
{-# LINE 850 "src/Data/NonEmptyPrivate.hs" #-}
DocTest.property(
{-# LINE 850 "src/Data/NonEmptyPrivate.hs" #-}
forRange $ \b0 -> forRange $ \b1 -> forRange $ \b2 -> let b = FuncHT.unzip $ b0!:b1!:b2!:Empty.Cons in map (Ix.index b) (Ix.range b) == take (Ix.rangeSize b) [0..]
)