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