| Safe Haskell | None |
|---|
Test.ClassLaws.Partial
Description
This module collects the infrastructure used to easily switch between testing ClassLaws with or without partial values. Built around QuickCheck and ChasingBottoms.
- newtype Partial a = Partial {
- unPartial :: a
- class TestablePartial prop where
- propertyPartial :: prop -> Property
- class ArbitraryPartial a where
- arbitraryPartial :: Gen a
- shrinkPartial :: a -> [a]
- showPartial :: String -> (a -> String) -> a -> String
- genPartial :: Int -> Int -> Gen a -> Gen a
- module Test.ChasingBottoms
Documentation
A modifier to indicate that partial values should be generated (or tested, or both).
Instances
| Show (Partial Bool) | |
| Show (Partial Char) | |
| (Enum e, Bounded e, Show (Partial e), Show (Partial b)) => Show (Partial (e -> b)) | |
| Show (Partial Int) | |
| Show (Partial Ordering) | |
| Show (Partial ()) | |
| (Show (Partial a), Show (Partial b)) => Show (Partial (a, b)) | |
| (Show (Partial a), Show (Partial b), Show (Partial c)) => Show (Partial (a, b, c)) | |
| (Bounded a, Enum a, Show (Partial a)) => Show (Partial (Endo a)) | |
| (Enum s, Bounded s, Show (Partial a), Show (Partial s)) => Show (Partial (SS s a)) | |
| (Enum s, Bounded s, Show (Partial a), Show (Partial s)) => Show (Partial (State s a)) | |
| (Show (Partial a), Show (Partial b)) => Show (Partial (Pair a b)) | |
| TestablePartial prop => Testable (Partial prop) |
class TestablePartial prop whereSource
Declaring a property for possibly partial values.
Methods
propertyPartial :: prop -> PropertySource
Instances
| TestablePartial Bool | |
| TestablePartial Property | |
| (ArbitraryPartial a, Show (Partial a), TestablePartial prop) => TestablePartial (a -> prop) |
class ArbitraryPartial a whereSource
We copy the QuickCheck structure to make sure generators of partial values and equality checks handling partial values are used.
Instances
| ArbitraryPartial Bool | |
| ArbitraryPartial Char | |
| ArbitraryPartial Int | |
| ArbitraryPartial Ordering | |
| ArbitraryPartial () | |
| (Bounded a, Enum a, SemanticOrd a, ArbitraryPartial a) => ArbitraryPartial (Endo a) | |
| (Enum e, Bounded e, Eq e, SemanticOrd s, ArbitraryPartial s) => ArbitraryPartial (e -> s) | |
| (ArbitraryPartial a, ArbitraryPartial b) => ArbitraryPartial (a, b) | |
| (Bounded s, Enum s, Eq s, SemanticOrd s, SemanticOrd a, ArbitraryPartial s, ArbitraryPartial a) => ArbitraryPartial (SS s a) | |
| (ArbitraryPartial a, SemanticOrd a, ArbitraryPartial s, SemanticOrd s, Enum s, Bounded s, Eq s) => ArbitraryPartial (State s a) | |
| (ArbitraryPartial a, ArbitraryPartial b) => ArbitraryPartial (Pair a b) | |
| (ArbitraryPartial a, ArbitraryPartial b, ArbitraryPartial c) => ArbitraryPartial (a, b, c) |
showPartial :: String -> (a -> String) -> a -> StringSource
Helper for showing partial values
genPartial :: Int -> Int -> Gen a -> Gen aSource
Helper for generating partial values: genPartial ib ia ga
generates bottom with frequence ib and ga with frequency
ia.
module Test.ChasingBottoms