blob: 04aef9a408f0b678836be10c960819e6f5e785bb [file] [log] [blame]
/*
* Copyright (c) 2007 Mockito contributors
* This program is made available under the terms of the MIT License.
*/
package org.mockitousage.verification;
import org.junit.Before;
import org.junit.Test;
import org.mockito.exceptions.base.MockitoException;
import org.mockito.exceptions.verification.NoInteractionsWanted;
import org.mockitoutil.TestBase;
import java.util.LinkedList;
import java.util.List;
import java.util.Map;
import static junit.framework.TestCase.fail;
import static org.assertj.core.api.Assertions.assertThat;
import static org.mockito.Mockito.*;
@SuppressWarnings("unchecked")
public class NoMoreInteractionsVerificationTest extends TestBase {
private LinkedList mock;
@Before
public void setup() {
mock = mock(LinkedList.class);
}
@Test
public void shouldStubbingNotRegisterRedundantInteractions() throws Exception {
when(mock.add("one")).thenReturn(true);
when(mock.add("two")).thenReturn(true);
mock.add("one");
verify(mock).add("one");
verifyNoMoreInteractions(mock);
}
@Test
public void shouldVerifyWhenWantedNumberOfInvocationsUsed() throws Exception {
mock.add("one");
mock.add("one");
mock.add("one");
verify(mock, times(3)).add("one");
verifyNoMoreInteractions(mock);
}
@Test
public void shouldVerifyNoInteractionsAsManyTimesAsYouWant() throws Exception {
verifyNoMoreInteractions(mock);
verifyNoMoreInteractions(mock);
verifyZeroInteractions(mock);
verifyZeroInteractions(mock);
verifyNoInteractions(mock);
verifyNoInteractions(mock);
}
@Test
public void shouldFailZeroInteractionsVerification() throws Exception {
mock.clear();
try {
verifyZeroInteractions(mock);
fail();
} catch (NoInteractionsWanted e) {}
}
@Test
public void shouldFailNoInteractionsVerification() throws Exception {
mock.clear();
try {
verifyNoInteractions(mock);
fail();
} catch (NoInteractionsWanted e) {}
}
@Test
public void shouldFailNoMoreInteractionsVerification() throws Exception {
mock.clear();
try {
verifyNoMoreInteractions(mock);
fail();
} catch (NoInteractionsWanted e) {}
}
@Test
public void shouldPrintAllInvocationsWhenVerifyingNoMoreInvocations() throws Exception {
mock.add(1);
mock.add(2);
mock.clear();
verify(mock).add(2);
try {
verifyNoMoreInteractions(mock);
fail();
} catch (NoInteractionsWanted e) {
assertThat(e).hasMessageContaining("list of all invocations");
}
}
@Test
public void shouldNotContainAllInvocationsWhenSingleUnwantedFound() throws Exception {
mock.add(1);
try {
verifyNoMoreInteractions(mock);
fail();
} catch (NoInteractionsWanted e) {
assertThat(e.getMessage()).doesNotContain("list of all invocations");
}
}
@Test
public void shouldVerifyOneMockButFailOnOther() throws Exception {
List<String> list = mock(List.class);
Map<String, Integer> map = mock(Map.class);
list.add("one");
list.add("one");
map.put("one", 1);
verify(list, times(2)).add("one");
verifyNoMoreInteractions(list);
try {
verifyZeroInteractions(map);
fail();
} catch (NoInteractionsWanted e) {}
}
@Test
public void shouldVerifyOneMockButFailOnOtherVerifyNoInteractions() throws Exception {
List<String> list = mock(List.class);
Map<String, Integer> map = mock(Map.class);
list.add("one");
list.add("one");
map.put("one", 1);
verify(list, times(2)).add("one");
verifyNoMoreInteractions(list);
try {
verifyNoInteractions(map);
fail();
} catch (NoInteractionsWanted e) {}
}
@SuppressWarnings("all")
@Test(expected=MockitoException.class)
public void verifyNoMoreInteractionsShouldScreamWhenNullPassed() throws Exception {
verifyNoMoreInteractions((Object[])null);
}
}