packages feed

monad-io-adapter-0.1.0.0: test/Control/Monad/IO/AdapterSpec.hs

module Control.Monad.IO.AdapterSpec (spec) where

import Control.Monad.Base (MonadBase)
import Control.Monad.IO.Class (MonadIO)
import Test.Hspec

import Control.Monad.IO.Adapter

spec :: Spec
spec = do
  describe "MonadIOAdapterT" $
    it "converts a MonadIO constraint into MonadBase IO" $
      (adaptMonadIO (pure () :: forall n. MonadIO n => n ())
          :: forall m. MonadBase IO m => m ())
        `shouldReturn` ()

  describe "MonadBaseIOAdapterT" $
    it "converts a MonadBase IO constraint into MonadIO" $
      (adaptMonadBaseIO (pure () :: forall n. MonadBase IO n => n ())
          :: forall m. MonadIO m => m ())
        `shouldReturn` ()