def test_should_detect_too_many_actual_invocations(self):
        self.tester.clear()
        self.tester.clear()

        verify(self.tester, times(2)).had_called_with(call.clear())
        with raises(TooManyActualInvocations):
            verify(self.tester, times(1)).had_called_with(call.clear())
 def test_should_fail_on_last_method_because_one_invocation_wanted_again(self):
     self.tester.verify(self.mock_a, at_least_once()).had_called_with(call.simple_method(1))
     self.tester.verify(self.mock_b, times(2)).had_called_with(call.simple_method(2))
     self.tester.verify(self.mock_c, at_least_once()).had_called_with(call.simple_method(3))
     self.tester.verify(self.mock_b, at_least_once()).had_called_with(call.simple_method(2))
     with raises(VerificationInOrderFailure):
         self.tester.verify(self.mock_a, times(2)).had_called_with(call.simple_method(4))
 def test_should_verify_in_order_when_expecting_some_invocations_to_be_called_zero_times(self):
     self.tester.verify(self.mock_a, times(0)).had_called_with(call.one_argument(False))
     self.tester.verify(self.mock_a).had_called_with(call.simple_method(1))
     self.tester.verify(self.mock_b, times(2)).had_called_with(call.simple_method(2))
     self.tester.verify(self.mock_b, times(0)).had_called_with(call.simple_method(22))
     self.tester.verify(self.mock_c).had_called_with(call.simple_method(3))
     self.tester.verify(self.mock_b).had_called_with(call.simple_method(2))
     self.tester.verify(self.mock_a).had_called_with(call.simple_method(4))
     self.tester.verify(self.mock_c, times(0)).had_called_with(call.one_arg(False))
     verify_no_more_interactions(self.mock_a, self.mock_b, self.mock_c)
 def test_should_fail_on_verify_no_more_interactions(self):
     self.tester.verify(self.mock_a).had_called_with(call.simple_method(1))
     self.tester.verify(self.mock_b, times(2)).had_called_with(call.simple_method(2))
     self.tester.verify(self.mock_c).had_called_with(call.simple_method(3))
     self.tester.verify(self.mock_b).had_called_with(call.simple_method(2))
     with raises(NoInteractionWanted):
         verify_no_more_interactions(self.mock_a, self.mock_b, self.mock_c)
 def test_should_fail_on_last_method_because_different_method_wanted(self):
     self.tester.verify(self.mock_a).had_called_with(call.simple_method(1))
     self.tester.verify(self.mock_b, times(2)).had_called_with(call.simple_method(2))
     self.tester.verify(self.mock_c).had_called_with(call.simple_method(3))
     self.tester.verify(self.mock_b).had_called_with(call.simple_method(2))
     with raises(VerificationInOrderFailure):
         self.tester.verify(self.mock_a).had_called_with(call.one_arg(False))
 def test_should_verify_in_order_using_at_least_once(self):
     self.tester.verify(self.mock_a, at_least_once()).had_called_with(call.simple_method(1))
     self.tester.verify(self.mock_b, times(2)).had_called_with(call.simple_method(2))
     self.tester.verify(self.mock_c).had_called_with(call.simple_method(3))
     self.tester.verify(self.mock_b).had_called_with(call.simple_method(2))
     self.tester.verify(self.mock_a, at_least_once()).had_called_with(call.simple_method(4))
     verify_no_more_interactions(self.mock_a, self.mock_b, self.mock_c)
 def test_should_fail_when_last_mock_called_twice(self):
     self.tester.verify(self.mock_a).had_called_with(call.simple_method(1))
     self.tester.verify(self.mock_b, times(2)).had_called_with(call.simple_method(2))
     self.tester.verify(self.mock_c).had_called_with(call.simple_method(3))
     self.tester.verify(self.mock_b).had_called_with(call.simple_method(2))
     self.tester.verify(self.mock_a).had_called_with(call.simple_method(4))
     with raises(VerificationInOrderFailure):
         self.tester.verify(self.mock_a).had_called_with(call.simple_method(4))
    def test_should_not_count_in_stubbed_invocations(self):
        when(self.tester).has_a_call(call.add('test')).then_return(False)
        when(self.tester).has_a_call(call.add('test')).then_return(True)

        self.tester.add('test')
        self.tester.add('test')

        verify(self.tester, times(2)).had_called_with(call.add('test'))
 def test_should_detect_actual_invocations_count_is_more_than_zero(self):
     verify(self.tester, times(0)).had_called_with(call.clear())
     with raises(WantedButNotInvoked):
         verify(self.tester, times(15)).had_called_with(call.clear())
    def test_should_fail_when_middle_method_verified_first(self):
        self.tester.verify(self.mock_b, times(2)).had_called_with(call.simple_method(2))

        with raises(VerificationInOrderFailure):
            self.tester.verify(self.mock_a).had_called_with(call.simple_method(1))
 def test_should_fail_on_second_method_because_different_args_wanted(self):
     self.tester.verify(self.mock_a).had_called_with(call.simple_method(1))
     with raises(VerificationInOrderFailure):
         self.tester.verify(self.mock_b, times(2)).had_called_with(call.simple_method(-999))
 def test_should_fail_on_second_method_because_two_invocations_wanted_again(self):
     self.tester.verify(self.mock_a).had_called_with(call.simple_method(1))
     with raises(VerificationInOrderFailure):
         self.tester.verify(self.mock_b, times(0)).had_called_with(call.simple_method(2))
 def test_should_fail_on_first_method_because_one_invocation_wanted_again(self):
     with raises(VerificationInOrderFailure):
         self.tester.verify(self.mock_a, times(2)).had_called_with(call.simple_method(1))
 def test_should_pass_when_methods_actually_not_called(self):
     verify(self.tester, times(0)).had_called_with(call.clear())
     verify(self.tester, times(0)).had_called_with(call.add("yes, I wasn't called"))
 def test_should_detect_actually_called_once(self):
     self.tester.clear()
     with raises(NeverWantedButInvoked):
         verify(self.tester, times(0)).had_called_with(call.clear())