module Test.Amazonka.Assert where
import Control.Monad
import Test.Amazonka.Diff
import Test.Amazonka.Orphans ()
import Test.Tasty.HUnit
assertDiff :: (Eq a, Show a) => String -> a -> Either String a -> Assertion
assertDiff :: forall a.
(Eq a, Show a) =>
String -> a -> Either String a -> Assertion
assertDiff String
_ a
_ (Left String
m) = forall a. HasCallStack => String -> IO a
assertFailure String
m
assertDiff String
n a
e (Right a
a) = forall (f :: * -> *). Applicative f => Bool -> f () -> f ()
unless (a
e forall a. Eq a => a -> a -> Bool
== a
a) (IO String
msg forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= forall a. HasCallStack => String -> IO a
assertFailure)
where
msg :: IO String
msg = do
String
d <- forall a b. (Show a, Show b) => a -> b -> IO String
diff a
e a
a
forall (m :: * -> *) a. Monad m => a -> m a
return forall a b. (a -> b) -> a -> b
$!
String
"[Expected]:\n"
forall a. [a] -> [a] -> [a]
++ forall a. Show a => a -> String
show a
e
forall a. [a] -> [a] -> [a]
++ String
"\n["
forall a. [a] -> [a] -> [a]
++ String
n
forall a. [a] -> [a] -> [a]
++ String
"]:\n"
forall a. [a] -> [a] -> [a]
++ forall a. Show a => a -> String
show a
a
forall a. [a] -> [a] -> [a]
++ String
"\n"
forall a. [a] -> [a] -> [a]
++ String
d