{-# LANGUAGE DataKinds #-} module Data.RealNumber.RationalSpec where import Data.RealNumber.Rational import Test.Hspec import Test.QuickCheck type R = RealNumber 5 spec :: Spec spec = do describe "Read/Show" $ do it "read basic" $ do read (show (1::R)) `shouldBe` (1::R) read (show (negate 1::R)) `shouldBe` negate (1::R) it "read nested" $ do read (show (Just (1::R))) `shouldBe` Just (1::R) read (show (Just (negate 1::R))) `shouldBe` Just (negate (1::R)) specify "significant digits" $ do show (0.12345::RealNumber 2) `shouldBe` "0.12~" show (0.12345::RealNumber 5) `shouldBe` "0.12345" it "should discard tail" $ do read (show (0.12345::RealNumber 2)) `shouldBe` (0.12 ::R) reads "0.12345~" `shouldBe` [(0.12::RealNumber 2, "")]