packages feed

multi-except-1.0.0: test/Test/MultiExcept/Bifunctor.hs

{-# LANGUAGE CPP             #-}

module Test.MultiExcept.Bifunctor
  ( spec
  ) where

import Test.Hspec

#if MIN_VERSION_base(4,8,0)

import Data.Bifunctor
import Control.Applicative.MultiExcept

spec :: Spec
spec = describe "Bifunctor instance" $ do
  it "maps errors with first" $
    first (+ 1) (throwError 3 *> throwError 4) `shouldBe` (throwError 4 *> throwError 5 :: MultiExcept Int ())
  it "maps successes with second" $
    second (+ 1) (succeed 3) `shouldBe` (succeed 4 :: MultiExcept Int Int)

#else

import Control.Applicative

spec :: Spec
spec = pure ()

#endif