packages feed

vintage-basic-1.0: test/Language/VintageBasic/RuntimeParser_test.hs

module Language.VintageBasic.RuntimeParser_test where

import Test.HUnit
import Text.ParserCombinators.Parsec
import Language.VintageBasic.RuntimeParser(dataValsP,readFloat)

floatTest string expected = assertEqual "" expected (readFloat string)

test_readFloat = TestCase $
    mapM_ (uncurry floatTest) [
        ("A",     Nothing  ),
        (".",     Just   0.0 ),
        ("0",     Just   0.0 ),
        ("1",     Just   1.0 ),
        (" 1",    Nothing    ),
        ("-1",    Just (-1.0)),
        ("+1",    Just   1.0 ),
        ("1.",    Just   1.0 ),
        ("-1.",   Just (-1.0)),
        (".1",    Just   0.1 ),
        ("-.1",   Just (-0.1)),
        ("1.0",   Just   1.0 ),
        ("1E",    Nothing    ),
        ("1E.2",  Nothing    ),
        ("1A",    Just   1.0 ),
        ("1 E2",  Just   1.0 ),
        ("1 2",   Just   1.0 ),
        ("1E2",   Just   1.0E+2 ),
        ("1E+2",  Just   1.0E+2 ),
        ("1E-2",  Just   1.0E-2 ),
        ("-1E-2", Just (-1.0E-2)),
        ("123456789", Just 123456789.0)
    ]