hspec-expectations-0.4.0: Catchy combinators for HUnit

Safe HaskellNone

Test.Hspec.Expectations.Lifted

Contents

Description

Synopsis

Setting expectations

expectationFailure :: MonadIO m => String -> m ()Source

This is just an alias for HUnit's assertFailure.

shouldBe :: (Show a, Eq a, MonadIO m) => a -> a -> m ()Source

actual `shouldBe` expected sets the expectation that actual is equal to expected (this is just an alias for @?=).

shouldSatisfy :: (Show a, MonadIO m) => a -> (a -> Bool) -> m ()Source

v `shouldSatisfy` p sets the expectation that p v is True.

shouldContain :: (Show a, Eq a, MonadIO m) => [a] -> [a] -> m ()Source

list `shouldContain` sublist sets the expectation that sublist is contained, wholly and intact, anywhere in the second.

shouldReturn :: (Show a, Eq a, MonadIO m) => IO a -> a -> m ()Source

action `shouldReturn` expected sets the expectation that action returns expected.

Expecting exceptions

shouldThrow :: (Exception e, MonadIO m) => IO a -> Selector e -> m ()Source

action `shouldThrow` selector sets the expectation that action throws an exception. The precise nature of the expected exception is described with a Selector.

Selecting exceptions

type Selector a = a -> BoolSource

A Selector is a predicate; it can simultaneously constrain the type and value of an exception.

Predefined type-based selectors

There are predefined selectors for some standard exceptions. Each selector is just const True with an appropriate type.

Combinators for defining value-based selectors

Some exceptions (most prominently ErrorCall) have no Eq instance. Selecting a specific value would require pattern matching.

For such exceptions, combinators that construct selectors are provided. Each combinator corresponds to a constructor; it takes the same arguments, and has the same name (but starting with a lower-case letter).