Add tests for DateExpr
This commit is contained in:
parent
05c946fbcc
commit
2da41951e1
3 changed files with 115 additions and 1 deletions
41
test/Spec.hs
41
test/Spec.hs
|
|
@ -1,2 +1,41 @@
|
|||
import Test.Hspec
|
||||
|
||||
import Tests.DateExpr
|
||||
|
||||
{-
|
||||
parseEval :: String -> Maybe Integer
|
||||
parseEval str =
|
||||
let day = ModifiedJulianDay 0
|
||||
expr = TM.parseIntExpr str
|
||||
in expr >>= flip TM.evalIntExpr day
|
||||
|
||||
prop_ParseInteger :: Integer -> Bool
|
||||
prop_ParseInteger n = parseEval (show n) == Just n
|
||||
|
||||
prop_ParseAddSub :: Integer -> Integer -> Integer -> Integer -> Bool
|
||||
prop_ParseAddSub a b c d =
|
||||
let formula = show a ++ "+" ++ show b ++ "- (" ++ show c ++ "+" ++ show d ++ ")"
|
||||
expected = a + b - (c + d)
|
||||
in parseEval formula == Just expected
|
||||
|
||||
prop_ParseMultDiv :: Integer -> Integer -> Integer -> Integer -> Property
|
||||
prop_ParseMultDiv a b c d =
|
||||
let formula = show a ++ "*" ++ show b ++ "/ (" ++ show c ++ "*" ++ show d ++ ")"
|
||||
expected = a * b `div` (c * d)
|
||||
in (c * d /= 0) ==> parseEval formula == Just expected
|
||||
|
||||
main :: IO ()
|
||||
main = putStrLn "Test suite not yet implemented"
|
||||
main = hspec $ do
|
||||
describe "Expressions" $ do
|
||||
describe "IntExpr" $ do
|
||||
it "parses integers" $ property $ prop_ParseInteger
|
||||
it "parses addition and subtraction" $ property $ prop_ParseAddSub
|
||||
it "parses multiplication and division" $ property $ prop_ParseMultDiv
|
||||
it "parses a complicated equation" $
|
||||
parseEval "12 - (2 / 5) * 3 + ((37))" `shouldBe` Just (12 - (2 `div` 5) * 3 + 37)
|
||||
describe "BoolExpr" $ do
|
||||
-}
|
||||
|
||||
main :: IO ()
|
||||
main = hspec $ do
|
||||
testDateExpr
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue