vintage-basic-1.0: test/Language/VintageBasic/FloatParser_test.hs
module Language.VintageBasic.FloatParser_test where
import Test.HUnit
import Language.VintageBasic.Asserts
import Language.VintageBasic.FloatParser
import Language.VintageBasic.Result
assertFloatPSuccess source expected = assertParseResult id ScanError floatP source expected
assertFloatPFailure source expected = assertParseError id ScanError floatP source expected
test_successes = TestCase $ do
mapM_ (uncurry assertFloatPSuccess) success_cases
success_cases =
[
( "0", 0 ),
( ".", 0 ),
( ".25", 0.25 ),
( "123", 123 ),
( "12.", 12 ),
( "-1", -1 ),
( "+12", 12 ),
( ".5", 0.5 ),
( "2.5", 2.5 ),
( "1e2", 100 ),
( "1E2", 100 ),
( "2.5E-1", 0.25 ),
( "+12.5e-2", 0.125 ),
( "+12.5e+2", 1250 )
]
test_failures = TestCase $ do
mapM_ (`assertFloatPFailure` "") failure_cases
failure_cases =
[
"/",
"+",
"-",
"E",
"E10",
"A",
"1E",
"1A"
]