packages feed

groupBy-0.1.0.0: test/Spec.hs

import Test.DocTest
import Test.QuickCheck
import Test.QuickCheck.Poly

import Data.List.GroupBy

sameGroupEqual :: Blind (A -> A -> Bool) -> [A] -> Bool
sameGroupEqual (Blind p) =
    all
        (\ys ->
              and (zipWith p ys (tail ys))) .
    groupBy p

differentGroupUnequal :: Blind (A -> A -> Bool) -> [A] -> Bool
differentGroupUnequal (Blind p) xs = and (zipWith t groups (tail groups))
  where
    groups = groupBy p xs
    t ys zs = not (p (last ys) (head zs))

main :: IO ()
main = do
    quickCheck sameGroupEqual
    quickCheck differentGroupUnequal
    doctest ["-isrc", "src/"]