on master help sign in
Fix up compilation warnings.
5c20ca6Bryan O'Sullivan
tests/Properties.hs+12−6
@@ -4,17 +4,18 @@ 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 Test.Framework (defaultMain, testGroup)
7+import Test.Framework (Test, defaultMain, testGroup)
8import Test.Framework.Providers.QuickCheck2 (testProperty)
8import Test.Framework.Providers.QuickCheck2 (testProperty)
9−import Test.QuickCheck (Arbitrary(..))
10−import Test.QuickCheck.Monadic (assert, monadicIO, run)
11import qualified Data.ByteString.Lazy.Char8 as L
9import qualified Data.ByteString.Lazy.Char8 as L
12import qualified Data.Attoparsec.Lazy as L
10import qualified Data.Attoparsec.Lazy as L
13
11
12+encodeDouble :: Double -> Double -> Bool
14encodeDouble num denom
13encodeDouble num denom
15 | isInfinite d || isNaN d = encode (Number (D d)) == "null"
14 | isInfinite d || isNaN d = encode (Number (D d)) == "null"
16 | otherwise = encode (Number (D d)) == L.pack (show d)
15 | otherwise = encode (Number (D d)) == L.pack (show d)
17 where d = num / denom
16 where d = num / denom
17+
18+encodeInteger :: Integer -> Bool
18encodeInteger i = encode (Number (I i)) == L.pack (show i)
19encodeInteger i = encode (Number (I i)) == L.pack (show i)
19
20
20roundTrip :: (FromJSON a, ToJSON a) => (a -> a -> Bool) -> a -> Bool
21roundTrip :: (FromJSON a, ToJSON a) => (a -> a -> Bool) -> a -> Bool
@@ -23,9 +24,12 @@ roundTrip eq i =
23 L.Done _ (Success v) -> v `eq` i
24 L.Done _ (Success v) -> v `eq` i
24 _ -> False
25 _ -> False
25
26
26−roundTripBool (v::Bool) = roundTrip (==) v
27+roundTripBool :: Bool -> Bool
28+roundTripBool = roundTrip (==)
27−roundTripDouble (v::Double) = roundTrip approxEq v
29+roundTripDouble :: Double -> Bool
30+roundTripDouble = roundTrip approxEq
28−roundTripInteger (v::Integer) = roundTrip (==) v
31+roundTripInteger :: Integer -> Bool
32+roundTripInteger = roundTrip (==)
29
33
30approxEq :: Double -> Double -> Bool
34approxEq :: Double -> Double -> Bool
31approxEq a b = a == b ||
35approxEq a b = a == b ||
@@ -35,8 +39,10 @@ approxEq a b = a == b ||
35 maxAbsoluteError = 1e-15
39 maxAbsoluteError = 1e-15
36 maxRelativeError = 1e-15
40 maxRelativeError = 1e-15
37
41
42+main :: IO ()
38main = defaultMain tests
43main = defaultMain tests
39
44
45+tests :: [Test]
40tests = [
46tests = [
41 testGroup "encode" [
47 testGroup "encode" [
42 testProperty "encodeDouble" encodeDouble
48 testProperty "encodeDouble" encodeDouble