dump-0.1.0: spec/Spec.hs
{-# LANGUAGE QuasiQuotes #-}
import Test.Hspec
import Debug.Dump
import Utils
main = hspec $ do
describe "wrapInParens" $ do
it "should work" $ do
wrapInParens "a" `shouldBe` "(a)"
wrapInParens "" `shouldBe` "()"
describe "Debug.Dump" $ do
-- TODO decide if this is useful enough to warrant support
-- it "should execute even if empty" $ do
-- [d||] `shouldBe` ""
it "should work with single literal" $ do
[d|1|] `shouldBe` "(1) = 1"
it "should work with simple expression" $ do
[d|1 + 1|] `shouldBe` "(1 + 1) = 2"
it "should work with bindings" $ do
let a = 1
[d|a|] `shouldBe` "(a) = 1"
[d|a + 1|] `shouldBe` "(a + 1) = 2"
it "should work with comma separated expressions" $ do
[d|1, 2|] `shouldBe` "(1) = 1, (2) = 2"
let i = 0.25
let f = (1 -)
[d|i, 1/i, f i, f (1/i)|] `shouldBe`
"(i) = 0.25, (1/i) = 4.0, (f i) = 0.75, (f (1/i)) = -3.0"
-- TODO parser, WIP on 'parse' branch
-- it "should step over commas in sub-expressions" $ do
-- [d|(1, 2), 1|] `shouldBe` "((1, 1)) = (1,1), (1) = 1"