{-# LANGUAGE RecordWildCards #-}
{-# LANGUAGE ScopedTypeVariables #-}
module Monad.Trans where
-- test-framework
import Test.Framework
-- test-framework-quickcheck2
import Test.Framework.Providers.QuickCheck2
-- QuickCheck
import Test.QuickCheck
-- essence-of-live-coding
import LiveCoding
import LiveCoding.Cell.Monad.Trans (State(State))
test = testGroup "Monad.Trans"
[ testProperty "Migrates into runStateL"
$ \(stateT :: Int) (stateInternal :: Int)
-> State { .. } === migrate State { stateInternal = 23, .. } stateInternal
, testProperty "Migrates from runStateL"
$ \(stateT :: Int) (stateInternal :: Int)
-> stateInternal === migrate 42 State { .. }
]