@@ -15,10 +15,10 @@ import Instances ()
16import Control.Applicative (Const(..))
16import Control.Applicative (Const(..))
17import Control.Monad (forM)
17import Control.Monad (forM)
18−import Data.Aeson (FromJSONKeyFunction(..), FromJSONKey(..), decode, eitherDecode, encode, genericParseJSON, genericToJSON, genericToEncoding, object, FromJSON(..), withObject, (.=), (.:), (.:?), (.:!))
18+import Data.Aeson (FromJSONKeyFunction(..), FromJSONKey(..), decode, eitherDecode, encode, genericParseJSON, genericToJSON, genericToEncoding, object, FromJSON(..), withObject, ToJSON1(..), (.=), (.:), (.:?), (.:!))
19import Data.Aeson.Text (encodeToTextBuilder)
19import Data.Aeson.Text (encodeToTextBuilder)
20import Data.Aeson.Internal (JSONPathElement(..), formatError)
20import Data.Aeson.Internal (JSONPathElement(..), formatError)
21−import Data.Aeson.TH (deriveJSON)
21+import Data.Aeson.TH (deriveJSON, deriveToJSON, deriveToJSON1)
22import Data.Aeson.Types (ToJSON(..), Value, camelTo, camelTo2, defaultOptions, omitNothingFields, Options(..), SumEncoding(..))
22import Data.Aeson.Types (ToJSON(..), Value, camelTo, camelTo2, defaultOptions, omitNothingFields, Options(..), SumEncoding(..))
23import Data.Char (toUpper)
23import Data.Char (toUpper)
24import Data.Hashable (hash)
24import Data.Hashable (hash)
@@ -93,6 +93,7 @@ tests = testGroup "unit" [
93 , testGroup "Issue #351" $ fmap (testCase "-") issue351
93 , testGroup "Issue #351" $ fmap (testCase "-") issue351
94 , testGroup "Nullary constructors" $ fmap (testCase "-") nullaryConstructors
94 , testGroup "Nullary constructors" $ fmap (testCase "-") nullaryConstructors
95 , testGroup "FromJSONKey" $ fmap (testCase "-") fromJSONKeyAssertions
95 , testGroup "FromJSONKey" $ fmap (testCase "-") fromJSONKeyAssertions
96+ , testCase "PR #455" pr455
98roundTripCamel :: String -> Assertion
99roundTripCamel :: String -> Assertion
@@ -544,10 +545,24 @@ encoderComparisonTests = do
545-- A regression test for: https://github.com/bos/aeson/issues/293
546-- A regression test for: https://github.com/bos/aeson/issues/293
546data MyRecord = MyRecord {_field1 :: Maybe Int, _field2 :: Maybe Bool}
547data MyRecord = MyRecord {_field1 :: Maybe Int, _field2 :: Maybe Bool}
547−deriveJSON defaultOptions{omitNothingFields=True} ''MyRecord
549data MyRecord2 = MyRecord2 {_field3 :: Maybe Int, _field4 :: Maybe Bool}
549data MyRecord2 = MyRecord2 {_field3 :: Maybe Int, _field4 :: Maybe Bool}
550 deriving Generic
550 deriving Generic
552instance ToJSON MyRecord2
552instance ToJSON MyRecord2
553instance FromJSON MyRecord2
553instance FromJSON MyRecord2
555+-- A regression test for: https://github.com/bos/aeson/pull/455
556+data Foo a = FooNil | FooCons (Foo Int)
559+pr455 = assertEqual "FooCons FooNil"
560+ (toJSON foo) (liftToJSON undefined undefined foo)
563+ foo = FooCons FooNil
565+deriveJSON defaultOptions{omitNothingFields=True} ''MyRecord
567+deriveToJSON defaultOptions ''Foo
568+deriveToJSON1 defaultOptions ''Foo