packages feed

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..]
  )