{-# LANGUAGE OverloadedStrings #-} {-# OPTIONS_GHC -fno-warn-deprecations #-} module UnitTests.NullaryConstructors ( nullaryConstructors ) where import Prelude () import Prelude.Compat import Data.Aeson (decode, eitherDecode, fromEncoding, Value) import Data.Aeson.Internal (IResult (..), iparse) import Data.Aeson.Types (Parser) import Data.ByteString.Builder (toLazyByteString) import Data.Maybe (fromJust) import Encoders import Test.HUnit ((@=?), Assertion) import Types import qualified Data.ByteString.Lazy.Char8 as L nullaryConstructors :: [Assertion] nullaryConstructors = [ dec "\"C1\"" @=? thNullaryToJSONString C1 , dec "\"C1\"" @=? gNullaryToJSONString C1 , dec "{\"c1\":[]}" @=? thNullaryToJSONObjectWithSingleField C1 , dec "{\"c1\":[]}" @=? gNullaryToJSONObjectWithSingleField C1 , dec "[\"c1\",[]]" @=? gNullaryToJSON2ElemArray C1 , dec "[\"c1\",[]]" @=? thNullaryToJSON2ElemArray C1 , dec "{\"tag\":\"c1\"}" @=? thNullaryToJSONTaggedObject C1 , dec "{\"tag\":\"c1\"}" @=? gNullaryToJSONTaggedObject C1 , decE "\"C1\"" @=? enc (gNullaryToEncodingString C1) , decE "\"C1\"" @=? enc (thNullaryToEncodingString C1) , decE "[\"c1\",[]]" @=? enc (gNullaryToEncoding2ElemArray C1) , decE "[\"c1\",[]]" @=? enc (thNullaryToEncoding2ElemArray C1) , decE "{\"c1\":[]}" @=? enc (thNullaryToEncodingObjectWithSingleField C1) , decE "{\"c1\":[]}" @=? enc (gNullaryToEncodingObjectWithSingleField C1) , decE "{\"tag\":\"c1\"}" @=? enc (thNullaryToEncodingTaggedObject C1) , decE "{\"tag\":\"c1\"}" @=? enc (gNullaryToEncodingTaggedObject C1) , ISuccess C1 @=? parse thNullaryParseJSONTaggedObject (dec "{\"tag\":\"c1\"}") , ISuccess C1 @=? parse gNullaryParseJSONTaggedObject (dec "{\"tag\":\"c1\"}") , ISuccess C1 @=? parse thNullaryParseJSONString (dec "\"C1\"") , ISuccess C1 @=? parse gNullaryParseJSONString (dec "\"C1\"") , ISuccess C1 @=? parse thNullaryParseJSON2ElemArray (dec "[\"c1\",[]]") , ISuccess C1 @=? parse gNullaryParseJSON2ElemArray (dec "[\"c1\",[]]") , ISuccess C1 @=? parse thNullaryParseJSONObjectWithSingleField (dec "{\"c1\":[]}") , ISuccess C1 @=? parse gNullaryParseJSONObjectWithSingleField (dec "{\"c1\":[]}") -- Make sure that the old `"contents" : []' is still allowed , ISuccess C1 @=? parse thNullaryParseJSONTaggedObject (dec "{\"tag\":\"c1\",\"contents\":[]}") , ISuccess C1 @=? parse gNullaryParseJSONTaggedObject (dec "{\"tag\":\"c1\",\"contents\":[]}") ] where enc = eitherDecode . toLazyByteString . fromEncoding dec :: L.ByteString -> Value dec = fromJust . decode decE :: L.ByteString -> Either String Value decE = eitherDecode parse :: (a -> Parser b) -> a -> IResult b parse parsejson v = iparse parsejson v