leancheck-0.3.0: Cholesterol-free property-based testing

Safe HaskellNone
LanguageHaskell2010

Test.Operators

Contents

Synopsis

Combining properties

(===) :: Eq b => (a -> b) -> (a -> b) -> a -> Bool infix 4 Source

(====) :: Eq c => (a -> b -> c) -> (a -> b -> c) -> a -> b -> Bool infix 4 Source

(&&&) :: (a -> Bool) -> (a -> Bool) -> a -> Bool infix 3 Source

(&&&&) :: (a -> b -> Bool) -> (a -> b -> Bool) -> a -> b -> Bool infix 3 Source

(|||) :: (a -> Bool) -> (a -> Bool) -> a -> Bool infix 2 Source

(||||) :: (a -> b -> Bool) -> (a -> b -> Bool) -> a -> b -> Bool infix 2 Source

Properties over functions

commutative :: Eq b => (a -> a -> b) -> a -> a -> Bool Source

associative :: Eq a => (a -> a -> a) -> a -> a -> a -> Bool Source

distributive :: Eq a => (a -> a -> a) -> (a -> a -> a) -> a -> a -> a -> Bool Source

transitive :: (a -> a -> Bool) -> a -> a -> a -> Bool Source

idempotent :: Eq a => (a -> a) -> a -> Bool Source

identity :: Eq a => (a -> a) -> a -> Bool Source

notIdentity :: Eq a => (a -> a) -> a -> Bool Source

Ternary comparison operators

(=$) :: Eq b => a -> (a -> b) -> a -> Bool infixl 4 Source

Equal under. A ternary operator.

x =$ f $= y  =  f x = f y
[1,2,3,4,5] =$  take 2    $= [1,2,4,8,16] -- > True
[1,2,3,4,5] =$  take 3    $= [1,2,4,8,16] -- > False
    [1,2,3] =$    sort    $= [3,2,1]      -- > True
         42 =$ (`mod` 10) $= 16842        -- > True
         42 =$ (`mod`  9) $= 16842        -- > False
        'a' =$  isLetter  $= 'b'          -- > True
        'a' =$  isLetter  $= '1'          -- > False

($=) :: (a -> Bool) -> a -> Bool infixl 4 Source

(=|) :: Eq a => [a] -> Int -> [a] -> Bool infixl 4 Source

Check if two lists are equal for n values.

xs =| n |= ys  =  take n xs == take n ys
[1,2,3,4,5] =| 2 |= [1,2,4,8,16] -- > True
[1,2,3,4,5] =| 3 |= [1,2,4,8,16] -- > False

(|=) :: (a -> Bool) -> a -> Bool infixl 4 Source