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