Unique-0.4.6: tests/Complex.hs
module Complex where
import Test.Hspec
import Test.QuickCheck
import Data.List.Unique
import Data.List (sort)
triplet :: (a -> b) -> (a, a, a) -> (b, b, b)
triplet f (x, y, z) = (f x, f y, f z)
complexTests :: SpecWith ()
complexTests =
describe "Data.List.Unique.complex" $ do
it "complex: should return ([],[],[]) with empty list" $ do
complex ( [] :: [Int] ) `shouldBe` ([],[],[])
it "complex: simple test" $ do
complex "This is the test line" `shouldBe` ("This teln","is hte","Tln")
it "complex: returns the same result as `sortUniq`, `repeated`, `unique` but not sorted" $
property $
\ xs -> triplet sort ( complex (xs :: String) )
== (sortUniq xs, repeated xs, unique xs)