packages feed

mtl-unleashed-0.3: Tests/Main.hs

module Main where

import Control.Lens
import Control.Monad.Reader (runReader)
import Control.Monad.State (evalState)
import Test.Hspec hiding (runIO)
import Test.Hspec.Core.Spec (SpecM)
import Types

main :: IO ()
main = hspec $ tests

tests :: SpecM () ()
tests = do
  it "runs a test" $ do
     1 `shouldBe` 1

  it "sees some state" $ do
     evalState (use foo) (T 5 'r') `shouldBe` 5

  it "sees T using MonadReaders class and lens" $ do
     runReader monadReaders1 (T 5 'r') `shouldBe` 5

  it "sees T using MonadReaders class and modified lens" $ do
     runReader monadReaders2 (T 5 'r') `shouldBe` 5

  it "sees T using MonadStates class" $ do
     evalState monadStates1 (T 5 'r') `shouldBe` 5