ron-hs-0.4.0: test/Values.hs
module Values
( valuesTests
) where
import Data.Text (Text)
import Data.Ron.Deserialize (decode)
import Data.Ron.Serialize (dumps)
import Test.Tasty.HUnit (testCase, (@?=), (@?))
import Test.Tasty (testGroup)
valuesTests = testGroup "Various specific values"
[ testGroup "floats"
[ testCase "0.0" $ decode @Double " 0.0 " @?= Right 0
, testCase "0.1" $ decode @Double " 0.1 " @?= Right 0.1
, testCase "1.0e1" $ decode @Double " 1.0e1 " @?= Right 1e1
, testCase "1.0e+1" $ decode @Double " 1.0e+1 " @?= Right 1e1
, testCase "1.0e-1" $ decode @Double " 1.0e-1 " @?= Right 1e-1
, testCase "1e1" $ decode @Double " 1e1 " @?= Right 1e1
, testCase "1e+1" $ decode @Double " 1e+1 " @?= Right 1e1
, testCase "1e-1" $ decode @Double " 1e-1 " @?= Right 1e-1
, testCase "1__e1__" $ decode @Double " 1__e1__ " @?= Right 1e1
, testCase "1_._0e1_" $ decode @Double " 1_._0e1_ " @?= Right 1e1
, testCase "inf" $ decode @Double " inf " @?= Right (read "Infinity")
]
, testCase "nan" $ case decode @Double " NaN " of
Left _ -> False @? "isRight . decode $ \"NaN\""
Right x -> isNaN x @? "isNaN . fromLeft . decode $ \"NaN\""
, testCase "raw string" $ decode @Text
" r##\" foo \\n bar \"baz\" \"## "
@?= Right " foo \\n bar \"baz\" "
]