1
1
mirror of https://github.com/github/semantic.git synced 2024-12-23 14:54:16 +03:00
semantic/test/Numeric/Spec.hs

39 lines
910 B
Haskell
Raw Normal View History

module Numeric.Spec
( spec
) where
import SpecHelpers
import Data.Either
import Numeric.Exts
spec :: Spec
spec = describe "Integer parsing" $ do
let go cases = forM_ cases $ \(s, v) -> parseInteger s `shouldBe` Right v
it "should handle Python integers" $
go [ ("-1", (negate 1))
, ("0xDEAD", 0xDEAD)
, ("0XDEAD", 0xDEAD)
, ("1j", 1)
, ("0o123", 83)
, ("0O123", 83)
, ("0b001", 1)
, ("0B001", 1)
, ("1_1", 11) -- underscore syntax is Python 3 only
, ("0B1_1", 3)
, ("0O1_1", 9)
, ("0L", 0)
]
it "should handle Ruby integers" $
go [ ("0xa_bcd_ef0_123_456_789", 0xabcdef0123456789)
, ("01234567", 342391)
]
it "should not accept floating-points" $ do
parseInteger "1.5" `shouldSatisfy` isLeft
it "should not accept the empty string" $ do
parseInteger "" `shouldSatisfy` isLeft