@@ -4,13 +4,11 @@ import Data.Aeson.Encode
4import Data.Aeson.Parser (value)
4import Data.Aeson.Parser (value)
5import Data.Aeson.Types
5import Data.Aeson.Types
6import Data.Attoparsec.Number
6import Data.Attoparsec.Number
7−import Data.Data (Data)
8import Data.Int
7import Data.Int
9import Test.Framework (Test, defaultMain, testGroup)
8import Test.Framework (Test, defaultMain, testGroup)
10import Test.Framework.Providers.QuickCheck2 (testProperty)
9import Test.Framework.Providers.QuickCheck2 (testProperty)
11import Test.QuickCheck (Arbitrary(..))
10import Test.QuickCheck (Arbitrary(..))
12import qualified Data.Vector as V
11import qualified Data.Vector as V
13−import qualified Data.Aeson.Generic as G
14import qualified Data.Attoparsec.Lazy as L
12import qualified Data.Attoparsec.Lazy as L
15import qualified Data.ByteString.Lazy.Char8 as L
13import qualified Data.ByteString.Lazy.Char8 as L
16import qualified Data.Text as T
14import qualified Data.Text as T
@@ -18,10 +16,11 @@ import qualified Data.Map as Map
18import qualified Data.HashMap.Strict as H
16import qualified Data.HashMap.Strict as H
19import Data.Time.Clock (UTCTime(..))
17import Data.Time.Clock (UTCTime(..))
20import Data.Time (ZonedTime(..))
18import Data.Time (ZonedTime(..))
21−import Types (Foo(..), UFoo(..))
19+import Types (Foo(..))
22import Instances ()
20import Instances ()
23import Types (Approx(..), OneConstructor(..), Product2, Product6, Sum4)
21import Types (Approx(..), OneConstructor(..), Product2, Product6, Sum4)
24import Encoders
22import Encoders
23+import Properties.Deprecated (deprecatedTests)
27encodeDouble :: Double -> Double -> Bool
26encodeDouble :: Double -> Double -> Bool
@@ -48,26 +47,11 @@ roundTrip eq _ i =
48roundTripEq :: (Eq a, FromJSON a, ToJSON a) => a -> a -> Bool
47roundTripEq :: (Eq a, FromJSON a, ToJSON a) => a -> a -> Bool
49roundTripEq x y = roundTrip (==) x y
48roundTripEq x y = roundTrip (==) x y
51−genericTo :: (Data a, ToJSON a) => a -> a -> Bool
52−genericTo _ v = G.toJSON v == toJSON v
54−genericFrom :: (Eq a, Data a, ToJSON a) => a -> a -> Bool
55−genericFrom _ v = G.fromJSON (toJSON v) == Success v
57toFromJSON :: (Arbitrary a, Eq a, FromJSON a, ToJSON a) => a -> Bool
50toFromJSON :: (Arbitrary a, Eq a, FromJSON a, ToJSON a) => a -> Bool
58toFromJSON x = case fromJSON . toJSON $ x of
51toFromJSON x = case fromJSON . toJSON $ x of
59 Error _ -> False
52 Error _ -> False
60 Success x' -> x == x'
53 Success x' -> x == x'
62−genericToFromJSON :: (Arbitrary a, Eq a, Data a) => a -> Bool
63−genericToFromJSON x = case G.fromJSON . G.toJSON $ x of
65− Success x' -> x == x'
67−regress_gh72 :: [(String, Maybe String)] -> Bool
68−regress_gh72 ys = G.decode (G.encode m) == Just m
69− where m = Map.fromList ys
71modifyFailureProp :: String -> String -> Bool
55modifyFailureProp :: String -> String -> Bool
72modifyFailureProp orig added =
56modifyFailureProp orig added =
73 result == Error (added ++ orig)
57 result == Error (added ++ orig)
@@ -111,27 +95,10 @@ isObjectWithSingleField _ = False
112tests :: [Test]
96tests :: [Test]
114− testGroup "regression" [
115− testProperty "gh-72" regress_gh72
117 testGroup "encode" [
98 testGroup "encode" [
118 testProperty "encodeDouble" encodeDouble
99 testProperty "encodeDouble" encodeDouble
119 , testProperty "encodeInteger" encodeInteger
100 , testProperty "encodeInteger" encodeInteger
121− testGroup "genericFrom" [
122− testProperty "Bool" $ genericFrom True
123− , testProperty "Double" $ genericFrom (1::Double)
124− , testProperty "Int" $ genericFrom (1::Int)
125− , testProperty "Foo" $ genericFrom (undefined::Foo)
126− , testProperty "Maybe" $ genericFrom (Just 1 :: Maybe Int)
128− testGroup "genericTo" [
129− testProperty "Bool" $ genericTo True
130− , testProperty "Double" $ genericTo (1::Double)
131− , testProperty "Int" $ genericTo (1::Int)
132− , testProperty "Foo" $ genericTo (undefined::Foo)
133− , testProperty "Maybe" $ genericTo (Just 1 :: Maybe Int)
135 testGroup "roundTrip" [
102 testGroup "roundTrip" [
136 testProperty "Bool" $ roundTripEq True
103 testProperty "Bool" $ roundTripEq True
137 , testProperty "Double" $ roundTripEq (1 :: Approx Double)
104 , testProperty "Double" $ roundTripEq (1 :: Approx Double)
@@ -157,9 +124,7 @@ tests = [
157 , testProperty "Either Integer Double" (toFromJSON :: Either Integer Double -> Bool)
124 , testProperty "Either Integer Double" (toFromJSON :: Either Integer Double -> Bool)
158 , testProperty "Either Integer Integer" (toFromJSON :: Either Integer Integer -> Bool)
125 , testProperty "Either Integer Integer" (toFromJSON :: Either Integer Integer -> Bool)
160− testGroup "genericToFromJSON" [
127+ testGroup "deprecated" deprecatedTests,
161− testProperty "_UFoo" (genericToFromJSON :: UFoo -> Bool)
163 testGroup "failure messages" [
128 testGroup "failure messages" [
164 testProperty "modify failure" modifyFailureProp
129 testProperty "modify failure" modifyFailureProp