module TupleSpec where import Composite.Aeson.Base (JsonFormat, fromJsonWithFormat, toJsonWithFormat) import Composite.Aeson.Formats.Provided (tuple3JsonFormat, integralJsonFormat, stringJsonFormat, charJsonFormat) import Data.Aeson.BetterErrors (parseValue) import Data.Void (Void) import Test.Hspec (Spec, describe, it, shouldBe) import Test.QuickCheck (property) tupleSuite :: Spec tupleSuite = describe "Tuple formats" $ do it "works for 3-tuples" $ do let fmt = tuple3JsonFormat (integralJsonFormat :: JsonFormat Void Int) stringJsonFormat charJsonFormat property $ \ t -> parseValue (fromJsonWithFormat fmt) (toJsonWithFormat fmt t) `shouldBe` Right t