@@ -1,7 +1,29 @@
11module Test.Main where
22
3−import Prelude (Unit, pure, unit)
3+import Prelude (Unit, ($), unit, pure, bind, const)
44import Effect
5+import Effect.Aff (Aff, bracket)
6+import Effect.Class (liftEffect)
7+import HTTPure.Response (ok)
8+import HTTPure.Server (serve)
9+import HTTPure.Body (class Body)
10+import Test.Unit (suite, test)
11+import Test.Unit.Main (runTest)
12+import Test.Unit.Assert (equal)
13+import Main (compile)
14+
15+mockSrv :: forall a. Body a => a -> Aff (Effect Unit)
16+mockSrv res = do
17+ close <- liftEffect $ serve 3000 (const $ ok res) $ pure unit
18+ pure $ close $ pure unit
19+
20+setupSrv :: forall a b. Body a => a -> Aff b -> Aff b
21+setupSrv res act = bracket (mockSrv res) liftEffect (const act)
522
623main :: Effect Unit
7−main = pure unit
24+main = runTest do
25+ suite "compile" do
26+ test "produces expected output" do
27+ let expected = "2"
28+ actual <- setupSrv expected (compile "1+1")
29+ actual `equal` expected