unused-0.9.0.0: test/Unused/UtilSpec.hs
module Unused.UtilSpec
( main
, spec
) where
import Test.Hspec
import Unused.Util
data Person = Person
{ pName :: String
, pAge :: Int
} deriving (Eq, Show)
main :: IO ()
main = hspec spec
spec :: Spec
spec =
parallel $ do
describe "groupBy" $ do
it "groups by the result of a function" $ do
let numbers = [1 .. 10] :: [Int]
groupBy ((0 ==) . flip mod 2) numbers `shouldBe`
[(False, [1, 3, 5, 7, 9]), (True, [2, 4, 6, 8, 10])]
it "handles records" $ do
let people = [Person "Jane" 10, Person "Jane" 20, Person "John" 20]
groupBy pName people `shouldBe`
[("Jane", [Person "Jane" 10, Person "Jane" 20]), ("John", [Person "John" 20])]
groupBy pAge people `shouldBe`
[(10, [Person "Jane" 10]), (20, [Person "Jane" 20, Person "John" 20])]
describe "stringToInt" $
it "converts a String value to Maybe Int" $ do
stringToInt "12345678" `shouldBe` Just 12345678
stringToInt "0" `shouldBe` Just 0
stringToInt "10591" `shouldBe` Just 10591
stringToInt "bad" `shouldBe` Nothing