0 | module Evince.Expectations
3 | import Decidable.Equality
11 | mustBe : (Applicative m, DecEq a, Show a) => (actual : a) -> (expected : a) -> TestResultT m ()
12 | mustBe actual expected = liftResult $
case decEq actual expected of
14 | No _ => Fail $
ExpectedButGot "not equal" (show expected) (show actual)
18 | mustNotBe : (Applicative m, DecEq a, Show a) => (actual : a) -> (expected : a) -> TestResultT m ()
19 | mustNotBe actual expected = liftResult $
case decEq actual expected of
20 | Yes _ => Fail $
ExpectedButGot "expected to differ" (show expected) (show actual)
26 | mustEqual : (Applicative m, Eq a, Show a) => (actual : a) -> (expected : a) -> TestResultT m ()
27 | mustEqual actual expected = liftResult $
28 | if actual == expected then Pass ()
29 | else Fail $
ExpectedButGot "not equal" (show expected) (show actual)
34 | mustEqualBy : (Applicative m, Show a) => (rel : a -> a -> Bool) -> (actual, expected : a) -> TestResultT m ()
35 | mustEqualBy rel actual expected = liftResult $
36 | if rel actual expected then Pass ()
37 | else Fail $
ExpectedButGot "not related by the given predicate" (show expected) (show actual)
41 | mustNotEqual : (Applicative m, Eq a, Show a) => (actual : a) -> (expected : a) -> TestResultT m ()
42 | mustNotEqual actual expected = liftResult $
43 | if actual /= expected then Pass ()
44 | else Fail $
ExpectedButGot "expected to differ" (show expected) (show actual)
48 | mustSatisfy : (Applicative m, Show a) => (actual : a) -> (pred : a -> Bool) -> TestResultT m ()
49 | mustSatisfy actual pred = liftResult $
50 | if pred actual then Pass ()
51 | else Fail $
PredicateFailed "predicate not satisfied" (show actual)
55 | mustNotSatisfy : (Applicative m, Show a) => (actual : a) -> (pred : a -> Bool) -> TestResultT m ()
56 | mustNotSatisfy actual pred = liftResult $
57 | if not (pred actual) then Pass ()
58 | else Fail $
PredicateFailed "predicate unexpectedly satisfied" (show actual)
62 | mustBeTrue : Applicative m => Bool -> TestResultT m ()
63 | mustBeTrue True = liftResult $
Pass ()
64 | mustBeTrue False = liftResult $
Fail $
Reason "expected True but got False"
68 | mustBeFalse : Applicative m => Bool -> TestResultT m ()
69 | mustBeFalse False = liftResult $
Pass ()
70 | mustBeFalse True = liftResult $
Fail $
Reason "expected False but got True"
74 | mustBeJust : Applicative m => Maybe a -> TestResultT m ()
75 | mustBeJust (Just _) = liftResult $
Pass ()
76 | mustBeJust Nothing = liftResult $
Fail $
Reason "expected Just but got Nothing"
80 | mustBeNothing : (Applicative m, Show a) => Maybe a -> TestResultT m ()
81 | mustBeNothing Nothing = liftResult $
Pass ()
82 | mustBeNothing (Just x) = liftResult $
Fail $
PredicateFailed "expected Nothing but got Just" (show x)
86 | mustBeRight : (Applicative m, Show a) => Either a b -> TestResultT m ()
87 | mustBeRight (Right _) = liftResult $
Pass ()
88 | mustBeRight (Left x) = liftResult $
Fail $
PredicateFailed "expected Right but got Left" (show x)
92 | mustBeLeft : (Applicative m, Show b) => Either a b -> TestResultT m ()
93 | mustBeLeft (Left _) = liftResult $
Pass ()
94 | mustBeLeft (Right x) = liftResult $
Fail $
PredicateFailed "expected Left but got Right" (show x)
98 | mustContain : (Applicative m, Eq a, Show a) => (haystack : List a) -> (needle : List a) -> TestResultT m ()
99 | mustContain haystack needle = liftResult $
100 | if isInfixOf needle haystack then Pass ()
101 | else Fail $
ExpectedButGot "does not contain" (show needle) (show haystack)
105 | mustNotContain : (Applicative m, Eq a, Show a) => (haystack : List a) -> (needle : List a) -> TestResultT m ()
106 | mustNotContain haystack needle = liftResult $
107 | if not (isInfixOf needle haystack) then Pass ()
108 | else Fail $
ExpectedButGot "unexpectedly contains" (show needle) (show haystack)
112 | mustStartWith : (Applicative m, Eq a, Show a) => (actual : List a) -> (prefx : List a) -> TestResultT m ()
113 | mustStartWith actual prefx = liftResult $
114 | if isPrefixOf prefx actual then Pass ()
115 | else Fail $
ExpectedButGot "does not start with" (show prefx) (show actual)
119 | mustEndWith : (Applicative m, Eq a, Show a) => (actual : List a) -> (sufx : List a) -> TestResultT m ()
120 | mustEndWith actual sufx = liftResult $
121 | if isSuffixOf sufx actual then Pass ()
122 | else Fail $
ExpectedButGot "does not end with" (show sufx) (show actual)
126 | mustBeEmpty : (Applicative m, Show a) => List a -> TestResultT m ()
127 | mustBeEmpty [] = liftResult $
Pass ()
128 | mustBeEmpty xs = liftResult $
Fail $
PredicateFailed "expected empty list" (show xs)
132 | mustNotBeEmpty : Applicative m => List a -> TestResultT m ()
133 | mustNotBeEmpty [] = liftResult $
Fail $
Reason "expected non-empty list but got []"
134 | mustNotBeEmpty _ = liftResult $
Pass ()
138 | mustFail : Applicative m => String -> TestResultT m ()
139 | mustFail msg = liftResult $
Fail $
Reason msg
143 | pending : Applicative m => TestResultT m ()
144 | pending = liftResult $
Skip Nothing
148 | pendingWith : Applicative m => String -> TestResultT m ()
149 | pendingWith msg = liftResult $
Skip (Just msg)
154 | mustReturn : (Monad m, DecEq a, Show a) => m a -> a -> TestResultT m ()
155 | mustReturn action expected = do
156 | actual <- lift action
157 | actual `mustBe` expected
162 | mustReturnEqual : (Monad m, Eq a, Show a) => m a -> a -> TestResultT m ()
163 | mustReturnEqual action expected = do
164 | actual <- lift action
165 | actual `mustEqual` expected