| /* |
| * Copyright (c) 2007 Mockito contributors |
| * This program is made available under the terms of the MIT License. |
| */ |
| package org.mockito.internal.verification.checkers; |
| |
| import org.junit.Rule; |
| import org.junit.Test; |
| import org.junit.rules.ExpectedException; |
| import org.mockito.exceptions.verification.TooLittleActualInvocations; |
| import org.mockito.exceptions.verification.VerificationInOrderFailure; |
| import org.mockito.internal.invocation.InvocationBuilder; |
| import org.mockito.internal.invocation.InvocationMatcher; |
| import org.mockito.internal.verification.InOrderContextImpl; |
| import org.mockito.internal.verification.api.InOrderContext; |
| import org.mockito.invocation.Invocation; |
| |
| import static java.util.Arrays.asList; |
| import static org.assertj.core.api.Assertions.assertThat; |
| import static org.mockito.internal.verification.checkers.AtLeastXNumberOfInvocationsChecker.checkAtLeastNumberOfInvocations; |
| |
| public class AtLeastXNumberOfInvocationsCheckerTest { |
| |
| @Rule |
| public ExpectedException exception = ExpectedException.none(); |
| |
| @Test |
| public void shouldMarkActualInvocationsAsVerifiedInOrder() { |
| InOrderContext context = new InOrderContextImpl(); |
| //given |
| Invocation invocation = new InvocationBuilder().simpleMethod().toInvocation(); |
| Invocation invocationTwo = new InvocationBuilder().differentMethod().toInvocation(); |
| |
| //when |
| checkAtLeastNumberOfInvocations(asList(invocation, invocationTwo), new InvocationMatcher(invocation), 1, context); |
| |
| //then |
| assertThat(invocation.isVerified()).isTrue(); |
| } |
| |
| @Test |
| public void shouldReportTooLittleInvocationsInOrder() { |
| InOrderContext context = new InOrderContextImpl(); |
| //given |
| Invocation invocation = new InvocationBuilder().simpleMethod().toInvocation(); |
| Invocation invocationTwo = new InvocationBuilder().differentMethod().toInvocation(); |
| |
| exception.expect(VerificationInOrderFailure.class); |
| exception.expectMessage("iMethods.simpleMethod()"); |
| exception.expectMessage("Wanted *at least* 2 times"); |
| exception.expectMessage("But was 1 time"); |
| |
| //when |
| checkAtLeastNumberOfInvocations(asList(invocation, invocationTwo), new InvocationMatcher(invocation), 2, context); |
| |
| |
| } |
| |
| @Test |
| public void shouldMarkActualInvocationsAsVerified() { |
| //given |
| Invocation invocation = new InvocationBuilder().simpleMethod().toInvocation(); |
| Invocation invocationTwo = new InvocationBuilder().differentMethod().toInvocation(); |
| |
| //when |
| checkAtLeastNumberOfInvocations(asList(invocation, invocationTwo), new InvocationMatcher(invocation), 1); |
| |
| //then |
| assertThat(invocation.isVerified()).isTrue(); |
| } |
| |
| @Test |
| public void shouldReportTooLittleInvocations() { |
| //given |
| Invocation invocation = new InvocationBuilder().simpleMethod().toInvocation(); |
| Invocation invocationTwo = new InvocationBuilder().differentMethod().toInvocation(); |
| |
| exception.expect(TooLittleActualInvocations.class); |
| exception.expectMessage("iMethods.simpleMethod()"); |
| exception.expectMessage("Wanted *at least* 2 times"); |
| exception.expectMessage("But was 1 time"); |
| |
| //when |
| checkAtLeastNumberOfInvocations(asList(invocation, invocationTwo), new InvocationMatcher(invocation), 2); |
| } |
| } |