12637d96c202372854a7c71466ddcc6e90fc4fc53Paul Duffin/*
22637d96c202372854a7c71466ddcc6e90fc4fc53Paul Duffin * Copyright (c) 2007 Mockito contributors
32637d96c202372854a7c71466ddcc6e90fc4fc53Paul Duffin * This program is made available under the terms of the MIT License.
42637d96c202372854a7c71466ddcc6e90fc4fc53Paul Duffin */
52637d96c202372854a7c71466ddcc6e90fc4fc53Paul Duffin
62637d96c202372854a7c71466ddcc6e90fc4fc53Paul Duffinpackage org.mockitousage.verification;
72637d96c202372854a7c71466ddcc6e90fc4fc53Paul Duffin
82637d96c202372854a7c71466ddcc6e90fc4fc53Paul Duffinimport org.junit.Test;
92637d96c202372854a7c71466ddcc6e90fc4fc53Paul Duffinimport org.mockito.Mock;
102637d96c202372854a7c71466ddcc6e90fc4fc53Paul Duffinimport org.mockito.exceptions.base.MockitoAssertionError;
112637d96c202372854a7c71466ddcc6e90fc4fc53Paul Duffinimport org.mockitoutil.TestBase;
122637d96c202372854a7c71466ddcc6e90fc4fc53Paul Duffin
132637d96c202372854a7c71466ddcc6e90fc4fc53Paul Duffinimport java.util.List;
142637d96c202372854a7c71466ddcc6e90fc4fc53Paul Duffin
152637d96c202372854a7c71466ddcc6e90fc4fc53Paul Duffinimport static junit.framework.TestCase.fail;
162637d96c202372854a7c71466ddcc6e90fc4fc53Paul Duffinimport static org.mockito.Mockito.*;
172637d96c202372854a7c71466ddcc6e90fc4fc53Paul Duffin
182637d96c202372854a7c71466ddcc6e90fc4fc53Paul Duffinpublic class AtLeastXVerificationTest extends TestBase {
192637d96c202372854a7c71466ddcc6e90fc4fc53Paul Duffin
202637d96c202372854a7c71466ddcc6e90fc4fc53Paul Duffin    @Mock private List<String> mock;
212637d96c202372854a7c71466ddcc6e90fc4fc53Paul Duffin
222637d96c202372854a7c71466ddcc6e90fc4fc53Paul Duffin    @Test
232637d96c202372854a7c71466ddcc6e90fc4fc53Paul Duffin    public void shouldVerifyAtLeastXTimes() throws Exception {
242637d96c202372854a7c71466ddcc6e90fc4fc53Paul Duffin        //when
252637d96c202372854a7c71466ddcc6e90fc4fc53Paul Duffin        mock.clear();
262637d96c202372854a7c71466ddcc6e90fc4fc53Paul Duffin        mock.clear();
272637d96c202372854a7c71466ddcc6e90fc4fc53Paul Duffin        mock.clear();
282637d96c202372854a7c71466ddcc6e90fc4fc53Paul Duffin
292637d96c202372854a7c71466ddcc6e90fc4fc53Paul Duffin        //then
302637d96c202372854a7c71466ddcc6e90fc4fc53Paul Duffin        verify(mock, atLeast(2)).clear();
312637d96c202372854a7c71466ddcc6e90fc4fc53Paul Duffin    }
322637d96c202372854a7c71466ddcc6e90fc4fc53Paul Duffin
332637d96c202372854a7c71466ddcc6e90fc4fc53Paul Duffin    @Test
342637d96c202372854a7c71466ddcc6e90fc4fc53Paul Duffin    public void shouldFailVerifiationAtLeastXTimes() throws Exception {
352637d96c202372854a7c71466ddcc6e90fc4fc53Paul Duffin        mock.add("one");
362637d96c202372854a7c71466ddcc6e90fc4fc53Paul Duffin        verify(mock, atLeast(1)).add(anyString());
372637d96c202372854a7c71466ddcc6e90fc4fc53Paul Duffin
382637d96c202372854a7c71466ddcc6e90fc4fc53Paul Duffin        try {
392637d96c202372854a7c71466ddcc6e90fc4fc53Paul Duffin            verify(mock, atLeast(2)).add(anyString());
402637d96c202372854a7c71466ddcc6e90fc4fc53Paul Duffin            fail();
412637d96c202372854a7c71466ddcc6e90fc4fc53Paul Duffin        } catch (MockitoAssertionError e) {}
422637d96c202372854a7c71466ddcc6e90fc4fc53Paul Duffin    }
432637d96c202372854a7c71466ddcc6e90fc4fc53Paul Duffin
442637d96c202372854a7c71466ddcc6e90fc4fc53Paul Duffin    @Test
452637d96c202372854a7c71466ddcc6e90fc4fc53Paul Duffin    public void shouldAllowAtLeastZeroForTheSakeOfVerifyNoMoreInteractionsSometimes() throws Exception {
462637d96c202372854a7c71466ddcc6e90fc4fc53Paul Duffin        //when
472637d96c202372854a7c71466ddcc6e90fc4fc53Paul Duffin        mock.add("one");
482637d96c202372854a7c71466ddcc6e90fc4fc53Paul Duffin        mock.clear();
492637d96c202372854a7c71466ddcc6e90fc4fc53Paul Duffin
502637d96c202372854a7c71466ddcc6e90fc4fc53Paul Duffin        //then
512637d96c202372854a7c71466ddcc6e90fc4fc53Paul Duffin        verify(mock, atLeast(0)).add("one");
522637d96c202372854a7c71466ddcc6e90fc4fc53Paul Duffin        verify(mock, atLeast(0)).clear();
532637d96c202372854a7c71466ddcc6e90fc4fc53Paul Duffin
542637d96c202372854a7c71466ddcc6e90fc4fc53Paul Duffin        verifyNoMoreInteractions(mock);
552637d96c202372854a7c71466ddcc6e90fc4fc53Paul Duffin    }
562637d96c202372854a7c71466ddcc6e90fc4fc53Paul Duffin}
57