on master help sign in
Firewall off tests for deprecated features
commit25972f69991738daeee4b0c4e13e9c408e529cd3 authorBryan O'Sullivan <bos@serpentine.com> dateMon 22 Apr 2013, 21:47 (13 years ago) parentf7428ef
3 files changed+61−38
aeson.cabal+1 tests/Properties.hs+3−38 tests/Properties/Deprecated.hs+57
aeson.cabal+1
@@ -144,6 +144,7 @@ test-suite tests
144144 Types
145145 Options
146146 Encoders
147+ Properties.Deprecated
147148
148149 ghc-options:
149150 -Wall -threaded -rtsopts
tests/Properties.hs+3−38
@@ -4,13 +4,11 @@ import Data.Aeson.Encode
44import Data.Aeson.Parser (value)
55import Data.Aeson.Types
66import Data.Attoparsec.Number
7−import Data.Data (Data)
87import Data.Int
98import Test.Framework (Test, defaultMain, testGroup)
109import Test.Framework.Providers.QuickCheck2 (testProperty)
1110import Test.QuickCheck (Arbitrary(..))
1211import qualified Data.Vector as V
13−import qualified Data.Aeson.Generic as G
1412import qualified Data.Attoparsec.Lazy as L
1513import qualified Data.ByteString.Lazy.Char8 as L
1614import qualified Data.Text as T
@@ -18,10 +16,11 @@ import qualified Data.Map as Map
1816import qualified Data.HashMap.Strict as H
1917import Data.Time.Clock (UTCTime(..))
2018import Data.Time (ZonedTime(..))
21−import Types (Foo(..), UFoo(..))
19+import Types (Foo(..))
2220import Instances ()
2321import Types (Approx(..), OneConstructor(..), Product2, Product6, Sum4)
2422import Encoders
23+import Properties.Deprecated (deprecatedTests)
2524
2625
2726encodeDouble :: Double -> Double -> Bool
@@ -48,26 +47,11 @@ roundTrip eq _ i =
4847roundTripEq :: (Eq a, FromJSON a, ToJSON a) => a -> a -> Bool
4948roundTripEq x y = roundTrip (==) x y
5049
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−
5750toFromJSON :: (Arbitrary a, Eq a, FromJSON a, ToJSON a) => a -> Bool
5851toFromJSON x = case fromJSON . toJSON $ x of
5952 Error _ -> False
6053 Success x' -> x == x'
6154
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−
7155modifyFailureProp :: String -> String -> Bool
7256modifyFailureProp orig added =
7357 result == Error (added ++ orig)
@@ -111,27 +95,10 @@ isObjectWithSingleField _ = False
11195
11296tests :: [Test]
11397tests = [
114− testGroup "regression" [
115− testProperty "gh-72" regress_gh72
116− ],
11798 testGroup "encode" [
11899 testProperty "encodeDouble" encodeDouble
119100 , testProperty "encodeInteger" encodeInteger
120101 ],
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− ],
135102 testGroup "roundTrip" [
136103 testProperty "Bool" $ roundTripEq True
137104 , testProperty "Double" $ roundTripEq (1 :: Approx Double)
@@ -157,9 +124,7 @@ tests = [
157124 , testProperty "Either Integer Double" (toFromJSON :: Either Integer Double -> Bool)
158125 , testProperty "Either Integer Integer" (toFromJSON :: Either Integer Integer -> Bool)
159126 ],
160− testGroup "genericToFromJSON" [
161− testProperty "_UFoo" (genericToFromJSON :: UFoo -> Bool)
162− ],
127+ testGroup "deprecated" deprecatedTests,
163128 testGroup "failure messages" [
164129 testProperty "modify failure" modifyFailureProp
165130 ],
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+ ]