module Test.TLT.Standard where
import Data.Maybe
import Test.TLT.Assertion
infix 1 @==, @/=, @<, @>, @<=, @>=
infix 1 @==-, @/=-, @<-, @>-, @<=-, @>=-
(@==-) :: (Monad m, Eq a, Show a) => a -> a -> Assertion m
@==- :: a -> a -> Assertion m
(@==-) = (a -> a -> Bool) -> (a -> a -> String) -> a -> a -> Assertion m
forall (m :: * -> *) a.
Monad m =>
(a -> a -> Bool) -> (a -> a -> String) -> a -> a -> Assertion m
liftAssertion2Pure a -> a -> Bool
forall a. Eq a => a -> a -> Bool
(==) ((a -> a -> String) -> a -> a -> Assertion m)
-> (a -> a -> String) -> a -> a -> Assertion m
forall a b. (a -> b) -> a -> b
$
\ a
exp a
actual -> String
"Expected " String -> String -> String
forall a. [a] -> [a] -> [a]
++ a -> String
forall a. Show a => a -> String
show a
exp String -> String -> String
forall a. [a] -> [a] -> [a]
++ String
" but got " String -> String -> String
forall a. [a] -> [a] -> [a]
++ a -> String
forall a. Show a => a -> String
show a
actual
(@==) :: (Monad m, Eq a, Show a) => a -> m a -> Assertion m
@== :: a -> m a -> Assertion m
(@==) = (a -> a -> Assertion m) -> a -> m a -> Assertion m
forall (m :: * -> *) a.
Monad m =>
(a -> a -> Assertion m) -> a -> m a -> Assertion m
assertion2PtoM a -> a -> Assertion m
forall (m :: * -> *) a.
(Monad m, Eq a, Show a) =>
a -> a -> Assertion m
(@==-)
(@/=-) :: (Monad m, Eq a, Show a) => a -> a -> Assertion m
@/=- :: a -> a -> Assertion m
(@/=-) = (a -> a -> Bool) -> (a -> a -> String) -> a -> a -> Assertion m
forall (m :: * -> *) a.
Monad m =>
(a -> a -> Bool) -> (a -> a -> String) -> a -> a -> Assertion m
liftAssertion2Pure a -> a -> Bool
forall a. Eq a => a -> a -> Bool
(/=) ((a -> a -> String) -> a -> a -> Assertion m)
-> (a -> a -> String) -> a -> a -> Assertion m
forall a b. (a -> b) -> a -> b
$
\ a
exp a
actual ->
String
"Expected other than " String -> String -> String
forall a. [a] -> [a] -> [a]
++ a -> String
forall a. Show a => a -> String
show a
exp String -> String -> String
forall a. [a] -> [a] -> [a]
++ String
" but got " String -> String -> String
forall a. [a] -> [a] -> [a]
++ a -> String
forall a. Show a => a -> String
show a
actual
(@/=) :: (Monad m, Eq a, Show a) => a -> m a -> Assertion m
@/= :: a -> m a -> Assertion m
(@/=) = (a -> a -> Assertion m) -> a -> m a -> Assertion m
forall (m :: * -> *) a.
Monad m =>
(a -> a -> Assertion m) -> a -> m a -> Assertion m
assertion2PtoM a -> a -> Assertion m
forall (m :: * -> *) a.
(Monad m, Eq a, Show a) =>
a -> a -> Assertion m
(@/=-)
(@<-) :: (Monad m, Ord a, Show a) => a -> a -> Assertion m
@<- :: a -> a -> Assertion m
(@<-) = (a -> a -> Bool) -> (a -> a -> String) -> a -> a -> Assertion m
forall (m :: * -> *) a.
Monad m =>
(a -> a -> Bool) -> (a -> a -> String) -> a -> a -> Assertion m
liftAssertion2Pure a -> a -> Bool
forall a. Ord a => a -> a -> Bool
(<) ((a -> a -> String) -> a -> a -> Assertion m)
-> (a -> a -> String) -> a -> a -> Assertion m
forall a b. (a -> b) -> a -> b
$
\ a
exp a
actual ->
String
"Lower bound (open) is " String -> String -> String
forall a. [a] -> [a] -> [a]
++ a -> String
forall a. Show a => a -> String
show a
exp String -> String -> String
forall a. [a] -> [a] -> [a]
++ String
" but got " String -> String -> String
forall a. [a] -> [a] -> [a]
++ a -> String
forall a. Show a => a -> String
show a
actual
(@<) :: (Monad m, Ord a, Show a) => a -> m a -> Assertion m
@< :: a -> m a -> Assertion m
(@<) = (a -> a -> Assertion m) -> a -> m a -> Assertion m
forall (m :: * -> *) a.
Monad m =>
(a -> a -> Assertion m) -> a -> m a -> Assertion m
assertion2PtoM a -> a -> Assertion m
forall (m :: * -> *) a.
(Monad m, Ord a, Show a) =>
a -> a -> Assertion m
(@<-)
(@>-) :: (Monad m, Ord a, Show a) => a -> a -> Assertion m
@>- :: a -> a -> Assertion m
(@>-) = (a -> a -> Bool) -> (a -> a -> String) -> a -> a -> Assertion m
forall (m :: * -> *) a.
Monad m =>
(a -> a -> Bool) -> (a -> a -> String) -> a -> a -> Assertion m
liftAssertion2Pure a -> a -> Bool
forall a. Ord a => a -> a -> Bool
(>) ((a -> a -> String) -> a -> a -> Assertion m)
-> (a -> a -> String) -> a -> a -> Assertion m
forall a b. (a -> b) -> a -> b
$
\ a
exp a
actual ->
String
"Upper bound (open) is " String -> String -> String
forall a. [a] -> [a] -> [a]
++ a -> String
forall a. Show a => a -> String
show a
exp String -> String -> String
forall a. [a] -> [a] -> [a]
++ String
" but got " String -> String -> String
forall a. [a] -> [a] -> [a]
++ a -> String
forall a. Show a => a -> String
show a
actual
(@>) :: (Monad m, Ord a, Show a) => a -> m a -> Assertion m
@> :: a -> m a -> Assertion m
(@>) = (a -> a -> Assertion m) -> a -> m a -> Assertion m
forall (m :: * -> *) a.
Monad m =>
(a -> a -> Assertion m) -> a -> m a -> Assertion m
assertion2PtoM a -> a -> Assertion m
forall (m :: * -> *) a.
(Monad m, Ord a, Show a) =>
a -> a -> Assertion m
(@>-)
(@<=-) :: (Monad m, Ord a, Show a) => a -> a -> Assertion m
@<=- :: a -> a -> Assertion m
(@<=-) = (a -> a -> Bool) -> (a -> a -> String) -> a -> a -> Assertion m
forall (m :: * -> *) a.
Monad m =>
(a -> a -> Bool) -> (a -> a -> String) -> a -> a -> Assertion m
liftAssertion2Pure a -> a -> Bool
forall a. Ord a => a -> a -> Bool
(<=) ((a -> a -> String) -> a -> a -> Assertion m)
-> (a -> a -> String) -> a -> a -> Assertion m
forall a b. (a -> b) -> a -> b
$
\ a
exp a
actual ->
String
"Lower bound (closed) is " String -> String -> String
forall a. [a] -> [a] -> [a]
++ a -> String
forall a. Show a => a -> String
show a
exp String -> String -> String
forall a. [a] -> [a] -> [a]
++ String
" but got " String -> String -> String
forall a. [a] -> [a] -> [a]
++ a -> String
forall a. Show a => a -> String
show a
actual
(@<=) :: (Monad m, Ord a, Show a) => a -> m a -> Assertion m
@<= :: a -> m a -> Assertion m
(@<=) = (a -> a -> Assertion m) -> a -> m a -> Assertion m
forall (m :: * -> *) a.
Monad m =>
(a -> a -> Assertion m) -> a -> m a -> Assertion m
assertion2PtoM a -> a -> Assertion m
forall (m :: * -> *) a.
(Monad m, Ord a, Show a) =>
a -> a -> Assertion m
(@<=-)
(@>=-) :: (Monad m, Ord a, Show a) => a -> a -> Assertion m
@>=- :: a -> a -> Assertion m
(@>=-) = (a -> a -> Bool) -> (a -> a -> String) -> a -> a -> Assertion m
forall (m :: * -> *) a.
Monad m =>
(a -> a -> Bool) -> (a -> a -> String) -> a -> a -> Assertion m
liftAssertion2Pure a -> a -> Bool
forall a. Ord a => a -> a -> Bool
(>=) ((a -> a -> String) -> a -> a -> Assertion m)
-> (a -> a -> String) -> a -> a -> Assertion m
forall a b. (a -> b) -> a -> b
$
\ a
exp a
actual ->
String
"Upper bound (closed) is " String -> String -> String
forall a. [a] -> [a] -> [a]
++ a -> String
forall a. Show a => a -> String
show a
exp String -> String -> String
forall a. [a] -> [a] -> [a]
++ String
" but got " String -> String -> String
forall a. [a] -> [a] -> [a]
++ a -> String
forall a. Show a => a -> String
show a
actual
(@>=) :: (Monad m, Ord a, Show a) => a -> m a -> Assertion m
@>= :: a -> m a -> Assertion m
(@>=) = (a -> a -> Assertion m) -> a -> m a -> Assertion m
forall (m :: * -> *) a.
Monad m =>
(a -> a -> Assertion m) -> a -> m a -> Assertion m
assertion2PtoM a -> a -> Assertion m
forall (m :: * -> *) a.
(Monad m, Ord a, Show a) =>
a -> a -> Assertion m
(@>=-)
emptyP :: (Monad m, Traversable t) => t a -> Assertion m
emptyP :: t a -> Assertion m
emptyP = (t a -> Bool) -> (t a -> String) -> t a -> Assertion m
forall (m :: * -> *) a.
Monad m =>
(a -> Bool) -> (a -> String) -> a -> Assertion m
liftAssertionPure t a -> Bool
forall (t :: * -> *) a. Foldable t => t a -> Bool
null
(\ t a
_ -> String
"Expected empty structure but got non-empty")
empty :: (Monad m, Traversable t) => m (t a) -> Assertion m
empty :: m (t a) -> Assertion m
empty = (t a -> Assertion m) -> m (t a) -> Assertion m
forall (m :: * -> *) a.
Monad m =>
(a -> Assertion m) -> m a -> Assertion m
assertionPtoM t a -> Assertion m
forall (m :: * -> *) (t :: * -> *) a.
(Monad m, Traversable t) =>
t a -> Assertion m
emptyP
nonemptyP :: (Monad m, Traversable t) => t a -> Assertion m
nonemptyP :: t a -> Assertion m
nonemptyP = (t a -> Bool) -> (t a -> String) -> t a -> Assertion m
forall (m :: * -> *) a.
Monad m =>
(a -> Bool) -> (a -> String) -> a -> Assertion m
liftAssertionPure (Bool -> Bool
not (Bool -> Bool) -> (t a -> Bool) -> t a -> Bool
forall b c a. (b -> c) -> (a -> b) -> a -> c
. t a -> Bool
forall (t :: * -> *) a. Foldable t => t a -> Bool
null)
(\ t a
_ -> String
"Expected non-empty structure but got empty")
nonempty :: (Monad m, Traversable t) => m (t a) -> Assertion m
nonempty :: m (t a) -> Assertion m
nonempty = (t a -> Assertion m) -> m (t a) -> Assertion m
forall (m :: * -> *) a.
Monad m =>
(a -> Assertion m) -> m a -> Assertion m
assertionPtoM t a -> Assertion m
forall (m :: * -> *) (t :: * -> *) a.
(Monad m, Traversable t) =>
t a -> Assertion m
nonemptyP
nothingP :: Monad m => Maybe a -> Assertion m
nothingP :: Maybe a -> Assertion m
nothingP = (Maybe a -> Bool) -> (Maybe a -> String) -> Maybe a -> Assertion m
forall (m :: * -> *) a.
Monad m =>
(a -> Bool) -> (a -> String) -> a -> Assertion m
liftAssertionPure Maybe a -> Bool
forall a. Maybe a -> Bool
isNothing
(\ Maybe a
_ -> String
"Expected empty Maybe value but got non-Nothing")
nothing :: Monad m => m (Maybe a) -> Assertion m
nothing :: m (Maybe a) -> Assertion m
nothing = (Maybe a -> Assertion m) -> m (Maybe a) -> Assertion m
forall (m :: * -> *) a.
Monad m =>
(a -> Assertion m) -> m a -> Assertion m
assertionPtoM Maybe a -> Assertion m
forall (m :: * -> *) a. Monad m => Maybe a -> Assertion m
nothingP