packages feed

fortran-src-0.7.0: test/Language/Fortran/AST/RealLitSpec.hs

module Language.Fortran.AST.RealLitSpec where

import           Prelude hiding ( exp )

import           Test.Hspec

import           Language.Fortran.AST.RealLit

spec :: Spec
spec = do
  describe "Fortran real literals" $ do
    it "parses & normalizes various well-formed valid real literals" $ do
      prl "1.0"    `shouldBe` rl "1.0" expDef
      prl "1.0e0"  `shouldBe` rl "1.0" expDef
      prl "10e-1"  `shouldBe` rl "10.0" (exp e "-1")
      prl "-1.e-1" `shouldBe` rl "-1.0" (exp e "-1")
      prl "+1.e+1" `shouldBe` rl "1.0" (exp e "1")
      prl "1.e1"   `shouldBe` rl "1.0" (exp e "1")
      prl ".1"     `shouldBe` rl "0.1" expDef
      prl "1.0d0"  `shouldBe` rl "1.0" (exp d "0")
      prl "1.0q0"  `shouldBe` rl "1.0" (exp q "0")
    where
      prl = parseRealLit
      rl = RealLit
      exp = Exponent
      expDef = Exponent ExpLetterE "0"
      e = ExpLetterE
      d = ExpLetterD
      q = ExpLetterQ