0 | module Evince.Expectations
3 | import Decidable.Equality
11 | mustBe : DecEq a => Show a => (actual : a) -> (expected : a) -> TestResult ()
12 | mustBe actual expected = case decEq actual expected of
14 | No _ => Fail $
ExpectedButGot "not equal" (show expected) (show actual)
18 | mustNotBe : DecEq a => Show a => (actual : a) -> (expected : a) -> TestResult ()
19 | mustNotBe actual expected = case decEq actual expected of
20 | Yes _ => Fail $
ExpectedButGot "expected to differ" (show expected) (show actual)
26 | mustEqual : Eq a => Show a => (actual : a) -> (expected : a) -> TestResult ()
27 | mustEqual actual expected =
28 | if actual == expected then Pass ()
29 | else Fail $
ExpectedButGot "not equal" (show expected) (show actual)
33 | mustNotEqual : Eq a => Show a => (actual : a) -> (expected : a) -> TestResult ()
34 | mustNotEqual actual expected =
35 | if actual /= expected then Pass ()
36 | else Fail $
ExpectedButGot "expected to differ" (show expected) (show actual)
40 | mustSatisfy : Show a => (actual : a) -> (pred : a -> Bool) -> TestResult ()
41 | mustSatisfy actual pred =
42 | if pred actual then Pass ()
43 | else Fail $
PredicateFailed "predicate not satisfied" (show actual)
47 | mustNotSatisfy : Show a => (actual : a) -> (pred : a -> Bool) -> TestResult ()
48 | mustNotSatisfy actual pred =
49 | if not (pred actual) then Pass ()
50 | else Fail $
PredicateFailed "predicate unexpectedly satisfied" (show actual)
54 | mustBeTrue : Bool -> TestResult ()
55 | mustBeTrue True = Pass ()
56 | mustBeTrue False = Fail $
Reason "expected True but got False"
60 | mustBeFalse : Bool -> TestResult ()
61 | mustBeFalse False = Pass ()
62 | mustBeFalse True = Fail $
Reason "expected False but got True"
66 | mustBeJust : Show a => Maybe a -> TestResult ()
67 | mustBeJust (Just _) = Pass ()
68 | mustBeJust Nothing = Fail $
Reason "expected Just but got Nothing"
72 | mustBeNothing : Show a => Maybe a -> TestResult ()
73 | mustBeNothing Nothing = Pass ()
74 | mustBeNothing (Just x) = Fail $
PredicateFailed "expected Nothing but got Just" (show x)
78 | mustBeRight : (Show a, Show b) => Either a b -> TestResult ()
79 | mustBeRight (Right _) = Pass ()
80 | mustBeRight (Left x) = Fail $
PredicateFailed "expected Right but got Left" (show x)
84 | mustBeLeft : (Show a, Show b) => Either a b -> TestResult ()
85 | mustBeLeft (Left _) = Pass ()
86 | mustBeLeft (Right x) = Fail $
PredicateFailed "expected Left but got Right" (show x)
90 | mustContain : Eq a => Show a => (haystack : List a) -> (needle : List a) -> TestResult ()
91 | mustContain haystack needle =
92 | if isInfixOf needle haystack then Pass ()
93 | else Fail $
ExpectedButGot "does not contain" (show needle) (show haystack)
97 | mustNotContain : Eq a => Show a => (haystack : List a) -> (needle : List a) -> TestResult ()
98 | mustNotContain haystack needle =
99 | if not (isInfixOf needle haystack) then Pass ()
100 | else Fail $
ExpectedButGot "unexpectedly contains" (show needle) (show haystack)
104 | mustStartWith : Eq a => Show a => (actual : List a) -> (prefx : List a) -> TestResult ()
105 | mustStartWith actual prefx =
106 | if isPrefixOf prefx actual then Pass ()
107 | else Fail $
ExpectedButGot "does not start with" (show prefx) (show actual)
111 | mustEndWith : Eq a => Show a => (actual : List a) -> (sufx : List a) -> TestResult ()
112 | mustEndWith actual sufx =
113 | if isSuffixOf sufx actual then Pass ()
114 | else Fail $
ExpectedButGot "does not end with" (show sufx) (show actual)
118 | mustBeEmpty : Show a => List a -> TestResult ()
119 | mustBeEmpty [] = Pass ()
120 | mustBeEmpty xs = Fail $
PredicateFailed "expected empty list" (show xs)
124 | mustNotBeEmpty : List a -> TestResult ()
125 | mustNotBeEmpty [] = Fail $
Reason "expected non-empty list but got []"
126 | mustNotBeEmpty _ = Pass ()
130 | mustFail : String -> TestResult ()
131 | mustFail msg = Fail $
Reason msg
135 | pending : TestResult ()
136 | pending = Skip Nothing
140 | pendingWith : String -> TestResult ()
141 | pendingWith msg = Skip (Just msg)
146 | mustReturn : DecEq a => Show a => IO a -> a -> IO (TestResult ())
147 | mustReturn action expected = do
149 | pure $
actual `mustBe` expected
154 | mustReturnEqual : Eq a => Show a => IO a -> a -> IO (TestResult ())
155 | mustReturnEqual action expected = do
157 | pure $
actual `mustEqual` expected