non-empty-0.3.6: 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:484: "
{-# LINE 484 "src/Data/NonEmptyPrivate.hs" #-}
DocTest.property(
{-# LINE 484 "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:498: "
{-# LINE 498 "src/Data/NonEmptyPrivate.hs" #-}
DocTest.property(
{-# LINE 498 "src/Data/NonEmptyPrivate.hs" #-}
\xs ys ->
NonEmpty.flatten (NonEmpty.mergeLeftBy (<=) xs (ys :: [Int]))
==
ListHT.mergeBy (<=) (NonEmpty.flatten xs) ys
)
DocTest.printPrefix "Data.NonEmptyPrivate:517: "
{-# LINE 517 "src/Data/NonEmptyPrivate.hs" #-}
DocTest.property(
{-# LINE 517 "src/Data/NonEmptyPrivate.hs" #-}
\xs ys ->
NonEmpty.flatten (NonEmpty.mergeRightBy (<=) (xs :: [Int]) ys)
==
ListHT.mergeBy (<=) xs (NonEmpty.flatten ys)
)
DocTest.printPrefix "Data.NonEmptyPrivate:536: "
{-# LINE 536 "src/Data/NonEmptyPrivate.hs" #-}
DocTest.example(
{-# LINE 536 "src/Data/NonEmptyPrivate.hs" #-}
NonEmpty.mergeBy (<=) ('c'!:'d':'f':[]) ('a'!:'e':'h':[])
)
[ExpectedLine [LineChunk "'a'!:'c'!:'d':'e':'f':'h':[]"]]
DocTest.printPrefix "Data.NonEmptyPrivate:539: "
{-# LINE 539 "src/Data/NonEmptyPrivate.hs" #-}
DocTest.property(
{-# LINE 539 "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:684: "
{-# LINE 684 "src/Data/NonEmptyPrivate.hs" #-}
DocTest.property(
{-# LINE 684 "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:828: "
{-# LINE 828 "src/Data/NonEmptyPrivate.hs" #-}
DocTest.property(
{-# LINE 828 "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:829: "
{-# LINE 829 "src/Data/NonEmptyPrivate.hs" #-}
DocTest.property(
{-# LINE 829 "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:830: "
{-# LINE 830 "src/Data/NonEmptyPrivate.hs" #-}
DocTest.property(
{-# LINE 830 "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:840: "
{-# LINE 840 "src/Data/NonEmptyPrivate.hs" #-}
DocTest.property(
{-# LINE 840 "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:851: "
{-# LINE 851 "src/Data/NonEmptyPrivate.hs" #-}
DocTest.property(
{-# LINE 851 "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..]
)