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