on master help sign in
Firewall off tests for deprecated features
25972f6Bryan O'Sullivan
aeson.cabal+1
@@ -144,6 +144,7 @@ test-suite tests
144 Types
144 Types
145 Options
145 Options
146 Encoders
146 Encoders
147+ Properties.Deprecated
147
148
148 ghc-options:
149 ghc-options:
149 -Wall -threaded -rtsopts
150 -Wall -threaded -rtsopts
tests/Properties.hs+3−38
@@ -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)
25
24
26
25
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
50
49
51−genericTo :: (Data a, ToJSON a) => a -> a -> Bool
52−genericTo _ v = G.toJSON v == toJSON v
53−
54−genericFrom :: (Eq a, Data a, ToJSON a) => a -> a -> Bool
55−genericFrom _ v = G.fromJSON (toJSON v) == Success v
56−
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'
61
54
62−genericToFromJSON :: (Arbitrary a, Eq a, Data a) => a -> Bool
63−genericToFromJSON x = case G.fromJSON . G.toJSON $ x of
64− Error _ -> False
65− Success x' -> x == x'
66−
67−regress_gh72 :: [(String, Maybe String)] -> Bool
68−regress_gh72 ys = G.decode (G.encode m) == Just m
69− where m = Map.fromList ys
70−
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
111
95
112tests :: [Test]
96tests :: [Test]
113tests = [
97tests = [
114− testGroup "regression" [
115− testProperty "gh-72" regress_gh72
116− ],
117 testGroup "encode" [
98 testGroup "encode" [
118 testProperty "encodeDouble" encodeDouble
99 testProperty "encodeDouble" encodeDouble
119 , testProperty "encodeInteger" encodeInteger
100 , testProperty "encodeInteger" encodeInteger
120 ],
101 ],
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)
127− ],
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)
134− ],
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)
159 ],
126 ],
160− testGroup "genericToFromJSON" [
127+ testGroup "deprecated" deprecatedTests,
161− testProperty "_UFoo" (genericToFromJSON :: UFoo -> Bool)
162− ],
163 testGroup "failure messages" [
128 testGroup "failure messages" [
164 testProperty "modify failure" modifyFailureProp
129 testProperty "modify failure" modifyFailureProp
165 ],
130 ],
tests/Properties/Deprecated.hsnew file+57
@@ -0,0 +1,57 @@
1+-- This module is only for testing deprecated features, so we can
2+-- silence compiler warnings selectively.
3+
4+{-# LANGUAGE OverloadedStrings, RecordWildCards, ScopedTypeVariables #-}
5+{-# OPTIONS_GHC -fno-warn-warnings-deprecations #-}
6+
7+module Properties.Deprecated (deprecatedTests) where
8+
9+import Data.Aeson.Types
10+import Data.Data (Data)
11+import Test.Framework (Test, testGroup)
12+import Test.Framework.Providers.QuickCheck2 (testProperty)
13+import Test.QuickCheck (Arbitrary(..))
14+import qualified Data.Aeson.Generic as G
15+import qualified Data.Map as Map
16+import Types (Foo(..), UFoo(..))
17+import Instances ()
18+
19+
20+genericTo :: (Data a, ToJSON a) => a -> a -> Bool
21+genericTo _ v = G.toJSON v == toJSON v
22+
23+genericFrom :: (Eq a, Data a, ToJSON a) => a -> a -> Bool
24+genericFrom _ v = G.fromJSON (toJSON v) == Success v
25+
26+genericToFromJSON :: (Arbitrary a, Eq a, Data a) => a -> Bool
27+genericToFromJSON x = case G.fromJSON . G.toJSON $ x of
28+ Error _ -> False
29+ Success x' -> x == x'
30+
31+regress_gh72 :: [(String, Maybe String)] -> Bool
32+regress_gh72 ys = G.decode (G.encode m) == Just m
33+ where m = Map.fromList ys
34+
35+deprecatedTests :: [Test]
36+deprecatedTests = [
37+ testGroup "regression" [
38+ testProperty "gh-72" regress_gh72
39+ ],
40+ testGroup "genericFrom" [
41+ testProperty "Bool" $ genericFrom True
42+ , testProperty "Double" $ genericFrom (1::Double)
43+ , testProperty "Int" $ genericFrom (1::Int)
44+ , testProperty "Foo" $ genericFrom (undefined::Foo)
45+ , testProperty "Maybe" $ genericFrom (Just 1 :: Maybe Int)
46+ ],
47+ testGroup "genericTo" [
48+ testProperty "Bool" $ genericTo True
49+ , testProperty "Double" $ genericTo (1::Double)
50+ , testProperty "Int" $ genericTo (1::Int)
51+ , testProperty "Foo" $ genericTo (undefined::Foo)
52+ , testProperty "Maybe" $ genericTo (Just 1 :: Maybe Int)
53+ ],
54+ testGroup "genericToFromJSON" [
55+ testProperty "_UFoo" (genericToFromJSON :: UFoo -> Bool)
56+ ]
57+ ]