Skip to content

Commit 636fbac

Browse files
committed
Add a test for too large inputs
1 parent b056d0a commit 636fbac

File tree

2 files changed

+13
-4
lines changed

2 files changed

+13
-4
lines changed

src/Data/Number.purs

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,11 @@
11
-- | A module for working with PureScripts builtin `Number` type.
22
module Data.Number
33
( Fraction
4+
, fromString
45
, eqRelative
56
, eqApproximate
67
, (~=)
78
, (≅)
8-
, fromString
99
, neqApproximate
1010
, (≇)
1111
, Precision
@@ -19,7 +19,9 @@ import Math (abs)
1919
import Global (readFloat, isFinite)
2020

2121

22-
-- | Attempt to parse a Number from a String using JavaScript's parseFloat.
22+
-- | Attempt to parse a `Number` from a `String` using JavaScripts
23+
-- | `parseFloat`. Returns `Nothing` if the parse fails or if the result is not
24+
-- | a finite number.
2325
-- |
2426
-- | Example:
2527
-- | ```purs
@@ -34,6 +36,9 @@ import Global (readFloat, isFinite)
3436
-- |
3537
-- | > fromString "1.2e4"
3638
-- | (Just 12000.0)
39+
-- |
40+
-- | > fromString "bad"
41+
-- | Nothing
3742
-- | ```
3843
fromString String Maybe Number
3944
fromString = readFloat >>> check

test/Main.purs

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ module Test.Main where
22

33
import Prelude
44

5-
import Data.Maybe (fromMaybe)
5+
import Data.Maybe (Maybe(..), fromMaybe)
66
import Data.Number (eqRelative, eqAbsolute, fromString, (≅), (≇))
77

88
import Control.Monad.Aff.AVar (AVAR)
@@ -136,7 +136,11 @@ main = runTest do
136136

137137
test "invalid number string" do
138138
assert "invalid strings are not coerced" $
139-
fromMaybe true $ false <$ fromString "bad string"
139+
Nothing == fromString "bad string"
140+
141+
test "too large numbers" do
142+
assert "too large numbers are not coerced" $
143+
Nothing == fromString "1e1000"
140144

141145

142146
suite "eqAbsolute" do

0 commit comments

Comments
 (0)