fp-ieee-0.1.0: decimal-test/Spec.hs
{-# LANGUAGE NumericUnderscores #-}
import qualified NextFloatSpec
import Numeric.Decimal
import Numeric.Floating.IEEE
import Test.Hspec
import Test.Hspec.Core.Spec
allowFailure :: String -> Item a -> Item a
allowFailure message item@(Item { itemExample = origExample }) = item { itemExample = newExample }
where
newExample params around callback = do
result <- origExample params around callback
case result of
Result { resultStatus = Failure loc reason } -> do
let message' = case reason of
NoReason -> message
_ -> message ++ ": " ++ show reason
return result { resultStatus = Pending loc (Just message') }
_ -> return result
main :: IO ()
main = hspec $ do
mapSpecItem_ (allowFailure "decimal-arithmetic's floatRange may be incorrect") $ do
it "maxFinite :: Decimal32" $ (maxFinite :: Decimal32) == 9.999_999e96 -- 7 digits
it "maxFinite :: Decimal64" $ (maxFinite :: Decimal64) == 9.999_999_999_999_999e384 -- 16 digits
it "maxFinite :: Decimal128" $ (maxFinite :: Decimal128) == 9.999_999_999_999_999_999_999_999_999_999_999e6144 -- 34 digits
describe "NextFloat" NextFloatSpec.spec