• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright (c) 2007 Mockito contributors
3  * This program is made available under the terms of the MIT License.
4  */
5 
6 package org.mockitousage.verification;
7 
8 import org.junit.Before;
9 import org.junit.Test;
10 import org.mockito.exceptions.base.MockitoException;
11 import org.mockito.exceptions.verification.NoInteractionsWanted;
12 import org.mockitoutil.TestBase;
13 
14 import java.util.LinkedList;
15 import java.util.List;
16 import java.util.Map;
17 
18 import static junit.framework.TestCase.fail;
19 import static org.assertj.core.api.Assertions.assertThat;
20 import static org.mockito.Mockito.*;
21 
22 @SuppressWarnings("unchecked")
23 public class NoMoreInteractionsVerificationTest extends TestBase {
24 
25     private LinkedList mock;
26 
27     @Before
setup()28     public void setup() {
29         mock = mock(LinkedList.class);
30     }
31 
32     @Test
shouldStubbingNotRegisterRedundantInteractions()33     public void shouldStubbingNotRegisterRedundantInteractions() throws Exception {
34         when(mock.add("one")).thenReturn(true);
35         when(mock.add("two")).thenReturn(true);
36 
37         mock.add("one");
38 
39         verify(mock).add("one");
40         verifyNoMoreInteractions(mock);
41     }
42 
43     @Test
shouldVerifyWhenWantedNumberOfInvocationsUsed()44     public void shouldVerifyWhenWantedNumberOfInvocationsUsed() throws Exception {
45         mock.add("one");
46         mock.add("one");
47         mock.add("one");
48 
49         verify(mock, times(3)).add("one");
50 
51         verifyNoMoreInteractions(mock);
52     }
53 
54     @Test
shouldVerifyNoInteractionsAsManyTimesAsYouWant()55     public void shouldVerifyNoInteractionsAsManyTimesAsYouWant() throws Exception {
56         verifyNoMoreInteractions(mock);
57         verifyNoMoreInteractions(mock);
58 
59         verifyZeroInteractions(mock);
60         verifyZeroInteractions(mock);
61     }
62 
63     @Test
shouldFailZeroInteractionsVerification()64     public void shouldFailZeroInteractionsVerification() throws Exception {
65         mock.clear();
66 
67         try {
68             verifyZeroInteractions(mock);
69             fail();
70         } catch (NoInteractionsWanted e) {}
71     }
72 
73     @Test
shouldFailNoMoreInteractionsVerification()74     public void shouldFailNoMoreInteractionsVerification() throws Exception {
75         mock.clear();
76 
77         try {
78             verifyNoMoreInteractions(mock);
79             fail();
80         } catch (NoInteractionsWanted e) {}
81     }
82 
83     @Test
shouldPrintAllInvocationsWhenVerifyingNoMoreInvocations()84     public void shouldPrintAllInvocationsWhenVerifyingNoMoreInvocations() throws Exception {
85         mock.add(1);
86         mock.add(2);
87         mock.clear();
88 
89         verify(mock).add(2);
90         try {
91             verifyNoMoreInteractions(mock);
92             fail();
93         } catch (NoInteractionsWanted e) {
94             assertThat(e).hasMessageContaining("list of all invocations");
95         }
96     }
97 
98     @Test
shouldNotContainAllInvocationsWhenSingleUnwantedFound()99     public void shouldNotContainAllInvocationsWhenSingleUnwantedFound() throws Exception {
100         mock.add(1);
101 
102         try {
103             verifyNoMoreInteractions(mock);
104             fail();
105         } catch (NoInteractionsWanted e) {
106             assertThat(e.getMessage()).doesNotContain("list of all invocations");
107         }
108     }
109 
110     @Test
shouldVerifyOneMockButFailOnOther()111     public void shouldVerifyOneMockButFailOnOther() throws Exception {
112         List<String> list = mock(List.class);
113         Map<String, Integer> map = mock(Map.class);
114 
115         list.add("one");
116         list.add("one");
117 
118         map.put("one", 1);
119 
120         verify(list, times(2)).add("one");
121 
122         verifyNoMoreInteractions(list);
123         try {
124             verifyZeroInteractions(map);
125             fail();
126         } catch (NoInteractionsWanted e) {}
127     }
128 
129     @SuppressWarnings("all")
130     @Test(expected=MockitoException.class)
verifyNoMoreInteractionsShouldScreamWhenNullPassed()131     public void verifyNoMoreInteractionsShouldScreamWhenNullPassed() throws Exception {
132         verifyNoMoreInteractions((Object[])null);
133     }
134 }
135