packages feed

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