mockcat 0.2.0.0 → 0.2.1.0
raw patch · 4 files changed
+48/−43 lines, 4 filesPVP ok
version bump matches the API change (PVP)
API changes (from Hackage documentation)
Files
- mockcat.cabal +1/−1
- src/Test/MockCat.hs +0/−3
- src/Test/MockCat/Mock.hs +39/−39
- test/Test/MockCat/MockSpec.hs +8/−0
mockcat.cabal view
@@ -5,7 +5,7 @@ -- see: https://github.com/sol/hpack name: mockcat-version: 0.2.0.0+version: 0.2.1.0 synopsis: Simple mock function library for test in Haskell. description: mockcat is simple mock library for test in Haskell. .
src/Test/MockCat.hs view
@@ -1,6 +1,3 @@--- |--- a--- b module Test.MockCat ( module Test.MockCat.Mock,
src/Test/MockCat/Mock.hs view
@@ -446,8 +446,8 @@ verify :: (Eq params, Show params) => Mock fun params -> VerifyMatchType params -> IO () verify (Mock name _ (Verifier ref)) matchType = do- calledParamsList <- readAppliedParamsList ref- let result = doVerify name calledParamsList matchType+ appliedParamsList <- readAppliedParamsList ref+ let result = doVerify name appliedParamsList matchType result & maybe (pure ()) (\(VerifyFailed msg) -> errorWithoutStackTrace msg) newtype VerifyFailed = VerifyFailed Message@@ -463,20 +463,20 @@ pure $ verifyFailedMesssage name list a verifyFailedMesssage :: Show a => Maybe MockName -> AppliedParamsList a -> a -> VerifyFailed-verifyFailedMesssage name calledParams expected =+verifyFailedMesssage name appliedParams expected = VerifyFailed $ intercalate "\n" [ "Expected arguments were not applied to the function" <> mockNameLabel name <> ".", " expected: " <> show expected,- " but got: " <> formatCalledParamsList calledParams+ " but got: " <> formatAppliedParamsList appliedParams ] -formatCalledParamsList :: Show a => AppliedParamsList a -> String-formatCalledParamsList calledParams- | length calledParams == 0 = "Never been called."- | length calledParams == 1 = init . drop 1 . show $ calledParams- | otherwise = show calledParams+formatAppliedParamsList :: Show a => AppliedParamsList a -> String+formatAppliedParamsList appliedParams+ | length appliedParams == 0 = "It has never been applied"+ | length appliedParams == 1 = init . drop 1 . show $ appliedParams+ | otherwise = show appliedParams _replace :: Show a => String -> a -> String _replace r s = unpack $ replace (pack r) (pack "") (pack (show s))@@ -532,9 +532,9 @@ verifyCount :: Eq params => Mock fun params -> params -> CountVerifyMethod -> IO () verifyCount (Mock name _ (Verifier ref)) v method = do- calledParamsList <- readAppliedParamsList ref- let callCount = length (filter (v ==) calledParamsList)- if compareCount method callCount+ appliedParamsList <- readAppliedParamsList ref+ let appliedCount = length (filter (v ==) appliedParamsList)+ if compareCount method appliedCount then pure () else errorWithoutStackTrace $@@ -542,7 +542,7 @@ "\n" [ "The expected argument was not applied the expected number of times to the function" <> mockNameLabel name <> ".", " expected: " <> show method,- " but got: " <> show callCount+ " but got: " <> show appliedCount ] to :: (a -> IO ()) -> a -> IO ()@@ -591,8 +591,8 @@ [params] -> IO () verifyOrder method (Mock name _ (Verifier ref)) matchers = do- calledParamsList <- readAppliedParamsList ref- let result = doVerifyOrder method name calledParamsList matchers+ appliedParamsList <- readAppliedParamsList ref+ let result = doVerifyOrder method name appliedParamsList matchers result & maybe (pure ()) (\(VerifyFailed msg) -> errorWithoutStackTrace msg) doVerifyOrder ::@@ -603,22 +603,22 @@ AppliedParamsList a -> [a] -> Maybe VerifyFailed-doVerifyOrder ExactlySequence name calledValues expectedValues- | length calledValues /= length expectedValues = do- pure $ verifyFailedOrderParamCountMismatch name calledValues expectedValues+doVerifyOrder ExactlySequence name appliedValues expectedValues+ | length appliedValues /= length expectedValues = do+ pure $ verifyFailedOrderParamCountMismatch name appliedValues expectedValues | otherwise = do- let unexpectedOrders = collectUnExpectedOrder calledValues expectedValues+ let unexpectedOrders = collectUnExpectedOrder appliedValues expectedValues guard $ length unexpectedOrders > 0 pure $ verifyFailedSequence name unexpectedOrders-doVerifyOrder PartiallySequence name calledValues expectedValues- | length calledValues < length expectedValues = do- pure $ verifyFailedOrderParamCountMismatch name calledValues expectedValues+doVerifyOrder PartiallySequence name appliedValues expectedValues+ | length appliedValues < length expectedValues = do+ pure $ verifyFailedOrderParamCountMismatch name appliedValues expectedValues | otherwise = do- guard $ isOrderNotMatched calledValues expectedValues- pure $ verifyFailedPartiallySequence name calledValues expectedValues+ guard $ isOrderNotMatched appliedValues expectedValues+ pure $ verifyFailedPartiallySequence name appliedValues expectedValues verifyFailedPartiallySequence :: Show a => Maybe MockName -> AppliedParamsList a -> [a] -> VerifyFailed-verifyFailedPartiallySequence name calledValues expectedValues =+verifyFailedPartiallySequence name appliedValues expectedValues = VerifyFailed $ intercalate "\n"@@ -626,11 +626,11 @@ " expected order:", intercalate "\n" $ (" " <>) . show <$> expectedValues, " but got:",- intercalate "\n" $ (" " <>) . show <$> calledValues+ intercalate "\n" $ (" " <>) . show <$> appliedValues ] isOrderNotMatched :: Eq a => AppliedParamsList a -> [a] -> Bool-isOrderNotMatched calledValues expectedValues =+isOrderNotMatched appliedValues expectedValues = isNothing $ foldl ( \candidates e -> do@@ -638,17 +638,17 @@ index <- elemIndex e c Just $ drop (index + 1) c )- (Just calledValues)+ (Just appliedValues) expectedValues verifyFailedOrderParamCountMismatch :: Maybe MockName -> AppliedParamsList a -> [a] -> VerifyFailed-verifyFailedOrderParamCountMismatch name calledValues expectedValues =+verifyFailedOrderParamCountMismatch name appliedValues expectedValues = VerifyFailed $ intercalate "\n" [ "Expected arguments were not applied to the function" <> mockNameLabel name <> " in the expected order (count mismatch).", " expected: " <> show (length expectedValues),- " but got: " <> show (length calledValues)+ " but got: " <> show (length appliedValues) ] verifyFailedSequence :: Show a => Maybe MockName -> [VerifyOrderResult a] -> VerifyFailed@@ -660,12 +660,12 @@ ) verifyOrderFailedMesssage :: Show a => VerifyOrderResult a -> String-verifyOrderFailedMesssage VerifyOrderResult {index, calledValue, expectedValue} =- let callCount = showHumanReadable (index + 1)+verifyOrderFailedMesssage VerifyOrderResult {index, appliedValue, expectedValue} =+ let appliedCount = showHumanReadable (index + 1) in intercalate "\n"- [ " expected " <> callCount <> " applied: " <> show expectedValue,- " but got " <> callCount <> " applied: " <> show calledValue+ [ " expected " <> appliedCount <> " applied: " <> show expectedValue,+ " but got " <> appliedCount <> " applied: " <> show appliedValue ] where showHumanReadable :: Int -> String@@ -676,18 +676,18 @@ data VerifyOrderResult a = VerifyOrderResult { index :: Int,- calledValue :: a,+ appliedValue :: a, expectedValue :: a } collectUnExpectedOrder :: Eq a => AppliedParamsList a -> [a] -> [VerifyOrderResult a]-collectUnExpectedOrder calledValues expectedValues =+collectUnExpectedOrder appliedValues expectedValues = catMaybes $ mapWithIndex ( \i expectedValue -> do- let calledValue = calledValues !! i- guard $ expectedValue /= calledValue- pure VerifyOrderResult {index = i, calledValue, expectedValue}+ let appliedValue = appliedValues !! i+ guard $ expectedValue /= appliedValue+ pure VerifyOrderResult {index = i, appliedValue, expectedValue} ) expectedValues
test/Test/MockCat/MockSpec.hs view
@@ -639,6 +639,14 @@ \ expected: \"X\"\n\ \ but got: \"A\"" + it "It has never been applied." do+ m <- createMock $ "X" |> pure @IO True+ m `shouldApplyTo` "X"+ `shouldThrow` errorCall+ "Expected arguments were not applied to the function.\n\+ \ expected: \"X\"\n\+ \ but got: It has never been applied"+ it "count" do m <- createMock $ any |> pure @IO True evaluate $ stubFn m "A"