Как я могу проверить Control.Monad.Except
(оба результата защиты) такую функцию, как:
foo :: Double -> Double -> Except String Double
foo x y
| x < -10.0 = throwError "Invalid parameter"
| otherwise = pure $ x + y
используя hunit
?
Как я могу проверить Control.Monad.Except
(оба результата защиты) такую функцию, как:
foo :: Double -> Double -> Except String Double
foo x y
| x < -10.0 = throwError "Invalid parameter"
| otherwise = pure $ x + y
используя hunit
?
Довольно просто написать некоторые функции, использующие runExcept
для выполнения действия Except
и использования ~?=
, чтобы проверить его результаты.
shouldThrow :: Eq e => Except e a -> e -> Test
m `shouldThrow` e = runExcept m ~?= Left e
shouldReturn :: Eq a => Except e a -> a -> Test
m `shouldReturn` x = runExcept m ~?= Right x
Пример использования:
testFoo = TestList [
foo -11 2 `shouldThrow` "Invalid parameter",
foo 3 1 `shouldReturn` 4
]
runExcept
, но у меня возникали ошибки, и я не был уверен, что поступаю правильно.
- person Randomize; 15.01.2017
Maybe
вместо этого здесь. - person Eli Sadoff   schedule 15.01.2017