HMock-0.4.0.0: A flexible mock framework for testing effectful code.
Safe HaskellSafe-Inferred
LanguageHaskell2010

Test.HMock.Multiplicity

Description

This module provides the basic vocabulary for talking about multiplicity, which is the number of times something is allowed to happen. Multiplicities can be any range of natural numbers, with or without an upper bound.

Synopsis

Documentation

data Multiplicity Source #

An acceptable range of number of times for something to happen.

A multiplicity can have a lower and an upper bound.

Instances

Instances details
Eq Multiplicity Source # 
Instance details

Defined in Test.HMock.Multiplicity

Num Multiplicity Source #

This is an incomplete instance, provided for convenience.

>>> meetsMultiplicity 5 4
False
>>> meetsMultiplicity 5 5
True
>>> between 4 6 - between 1 2
2 to 5 times
Instance details

Defined in Test.HMock.Multiplicity

Show Multiplicity Source # 
Instance details

Defined in Test.HMock.Multiplicity

meetsMultiplicity :: Multiplicity -> Int -> Bool Source #

Checks whether a certain number satisfies the Multiplicity.

feasible :: Multiplicity -> Bool Source #

Checks whether a Multiplicity is capable of matching any number at all.

>>> feasible once
True
>>> feasible 0
True
>>> feasible (once - 2)
False

once :: Multiplicity Source #

A Multiplicity that means exactly once.

>>> meetsMultiplicity once 0
False
>>> meetsMultiplicity once 1
True
>>> meetsMultiplicity once 2
False

anyMultiplicity :: Multiplicity Source #

A Multiplicity that means any number of times. >>> meetsMultiplicity anyMultiplicity 0 True >>> meetsMultiplicity anyMultiplicity 1 True >>> meetsMultiplicity anyMultiplicity 10 True

atLeast :: Multiplicity -> Multiplicity Source #

A Multiplicity that means at least this many times.

>>> meetsMultiplicity (atLeast 2) 1
False
>>> meetsMultiplicity (atLeast 2) 2
True
>>> meetsMultiplicity (atLeast 2) 3
True

atMost :: Multiplicity -> Multiplicity Source #

A Multiplicity that means at most this many times.

>>> meetsMultiplicity (atMost 2) 1
True
>>> meetsMultiplicity (atMost 2) 2
True
>>> meetsMultiplicity (atMost 2) 3
False

between :: Multiplicity -> Multiplicity -> Multiplicity Source #

A Multiplicity that means any number in this interval, endpoints included. For example, between 2 3 means 2 or 3 times, while between n n is equivalent to n.

>>> meetsMultiplicity (between 2 3) 1
False
>>> meetsMultiplicity (between 2 3) 2
True
>>> meetsMultiplicity (between 2 3) 3
True
>>> meetsMultiplicity (between 2 3) 4
False