packages feed

hgeometry-combinatorial-0.14: test/Data/RealNumber/RationalSpec.hs

{-# 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, "")]