on master help sign in
Added a test for '_' field roundtrip
84644baEduard Sergeev
tests/Properties.hs+23
@@ -56,6 +56,12 @@ toFromJSON x = case fromJSON . toJSON $ x of
56 Error _ -> False
56 Error _ -> False
57 Success x' -> x == x'
57 Success x' -> x == x'
58
58
59+genericToFromJSON :: (Arbitrary a, Eq a, Data a) => a -> Bool
60+genericToFromJSON x = case G.fromJSON . G.toJSON $ x of
61+ Error _ -> False
62+ Success x' -> x == x'
63+
64+
59data Foo = Foo {
65data Foo = Foo {
60 fooInt :: Int
66 fooInt :: Int
61 , fooDouble :: Double
67 , fooDouble :: Double
@@ -94,6 +100,20 @@ instance (Ord k, Arbitrary k, Arbitrary v) => Arbitrary (Map.Map k v) where
94instance Arbitrary Foo where
100instance Arbitrary Foo where
95 arbitrary = liftM4 Foo arbitrary arbitrary arbitrary arbitrary
101 arbitrary = liftM4 Foo arbitrary arbitrary arbitrary arbitrary
96
102
103+
104+{-
105+ Test for Data.Aeson.Generic handling '_' names
106+-}
107+data UFoo = UFoo {
108+ _UFooInt :: Int
109+ , uFooInt :: Int
110+ } deriving (Show, Eq, Data, Typeable)
111+
112+instance Arbitrary UFoo where
113+ arbitrary = UFoo <$> arbitrary <*> arbitrary
114+
115+
116+
97main :: IO ()
117main :: IO ()
98main = defaultMain tests
118main = defaultMain tests
99
119
@@ -130,5 +150,8 @@ tests = [
130 , testProperty "Maybe Integer" (toFromJSON :: Maybe Integer -> Bool)
150 , testProperty "Maybe Integer" (toFromJSON :: Maybe Integer -> Bool)
131 , testProperty "Either Integer Double" (toFromJSON :: Either Integer Double -> Bool)
151 , testProperty "Either Integer Double" (toFromJSON :: Either Integer Double -> Bool)
132 , testProperty "Either Integer Integer" (toFromJSON :: Either Integer Integer -> Bool)
152 , testProperty "Either Integer Integer" (toFromJSON :: Either Integer Integer -> Bool)
153+ ],
154+ testGroup "genericToFromJSON" [
155+ testProperty "_UFoo" (genericToFromJSON :: UFoo -> Bool)
133 ]
156 ]
134 ]
157 ]