{-# OPTIONS_GHC -Wno-missing-local-signatures #-} {-# OPTIONS_GHC -Wno-monomorphism-restriction #-} {-# OPTIONS_GHC -Wno-type-defaults #-} module Main where import Effectful import Effectful.Hspec import Prelude main :: IO () main = runEff . runHspec $ do it "shouldBe" $ do 10 `shouldBe` 10 it "shouldSatisfy" $ do 10 `shouldSatisfy` (> 5) let xs = [1, 2, 3, 4, 5] :: [Int] it "shouldStartWith" $ do xs `shouldStartWith` [1, 2] it "shouldEndWith" $ do xs `shouldEndWith` [4, 5] it "shouldContain" $ do [1, 2, 3] `shouldContain` [2] it "shouldMatchList" $ do [1, 2, 3] `shouldMatchList` [3, 2, 1] it "shouldReturn" $ do let action = pure "hello" action `shouldReturn` "hello" it "shouldThrow" $ do let errorAction = error "boom" :: Eff es () errorAction `shouldThrow` anyException it "shouldNotBe" do 1 `shouldNotBe` 2 it "shouldNotSatisfy" do 1 `shouldNotSatisfy` (> 10) it "shouldNotContain" do [1, 2] `shouldNotContain` [3] it "handles shouldNotReturn" $ do let action = pure (1 :: Int) :: Eff es Int action `shouldNotReturn` 2