tomland-1.3.3.3: test/Test/Toml/Codec/Combinator/Map.hs
module Test.Toml.Codec.Combinator.Map
( mapSpec
) where
import Data.Foldable (toList)
import Test.Hspec (Spec, describe, parallel)
import Test.Toml.Codec.Combinator.Common (codecRoundtrip)
import Toml.Type.Printer (prettyKey)
import qualified Test.Toml.Gen as Gen
import qualified Toml.Codec.BiMap.Conversion as Toml
import qualified Toml.Codec.Combinator.List as Toml
import qualified Toml.Codec.Combinator.Map as Toml
import qualified Toml.Codec.Combinator.Primitive as Toml
mapSpec :: Spec
mapSpec = parallel $ describe "Combinator.Map: Roundtrip tests" $ do
codecRoundtrip "Map Int Text (map) "
(Toml.map (Toml.int "key") (Toml.text "val"))
(Gen.genMap Gen.genInt Gen.genText)
codecRoundtrip "Map Text Int (tableMap)"
(Toml.tableMap Toml._KeyText Toml.int)
(Gen.genMap (prettyKey <$> Gen.genKey) Gen.genInt)
-- TODO: handle empty lists in values.
codecRoundtrip "Map Text [Int] (tableMap)"
(Toml.tableMap Toml._KeyText (Toml.list $ Toml.int "val"))
(Gen.genMap (prettyKey <$> Gen.genKey) (toList <$> Gen.genNonEmpty Gen.genInt))