envparse-0.3.1: test/Env/GenericSpec.hs
{-# LANGUAGE CPP #-}
{-# LANGUAGE DeriveGeneric #-}
{-# LANGUAGE FlexibleContexts #-}
{-# LANGUAGE FlexibleInstances #-}
{-# LANGUAGE MultiParamTypeClasses #-}
module Env.GenericSpec (spec) where
import Test.Hspec
#if __GLASGOW_HASKELL__ < 710
spec :: Spec
spec =
return ()
#else
import Env
import Env.Generic
spec :: Spec
spec = do
fooBarSpec
quxSpec
data FooBar = FooBar
{ foo :: String
, bar :: Int
} deriving (Show, Eq, Generic)
instance Record Error FooBar
fooBarSpec :: Spec
fooBarSpec =
describe "FooBar" $
it "can be parsed using the Generic parser" $
p [("FOO", "blah"), ("BAR", "4")] `shouldBe`
pure FooBar {foo="blah", bar=4}
data Qux = Qux
{ quxXyz :: Bool
, quxXyzZy :: Int
} deriving (Show, Eq, Generic)
instance Record Error Qux
quxSpec :: Spec
quxSpec =
describe "Qux" $
it "can be parsed using the Generic parser" $
p [("XYZ", "1"), ("XYZ_ZY", "7")] `shouldBe`
pure Qux {quxXyz=True, quxXyzZy=7}
p :: Record Error a => [(String, String)] -> Either [(String, Error)] a
p =
parsePure record
#endif