@@ -1,4 +1,4 @@
1−{-# LANGUAGE ScopedTypeVariables #-}
1+{-# LANGUAGE OverloadedStrings, ScopedTypeVariables #-}
3import Data.Aeson.Encode
3import Data.Aeson.Encode
4import Data.Aeson.Parser (value)
4import Data.Aeson.Parser (value)
@@ -11,7 +11,10 @@ import Test.QuickCheck.Monadic (assert, monadicIO, run)
11import qualified Data.ByteString.Lazy.Char8 as L
11import qualified Data.ByteString.Lazy.Char8 as L
12import qualified Data.Attoparsec.Lazy as L
12import qualified Data.Attoparsec.Lazy as L
14+encodeDouble num denom
15+ | isInfinite d || isNaN d = encode (Number (D d)) == "null"
14−encodeDouble d = encode (Number (D d)) == L.pack (show d)
16+ | otherwise = encode (Number (D d)) == L.pack (show d)
17+ where d = num / denom
15encodeInteger i = encode (Number (I i)) == L.pack (show i)
18encodeInteger i = encode (Number (I i)) == L.pack (show i)
17roundTrip :: (Eq a, FromJSON a, ToJSON a) => a -> Bool
20roundTrip :: (Eq a, FromJSON a, ToJSON a) => a -> Bool