| /* |
| * Copyright (c) 2007 Mockito contributors |
| * This program is made available under the terms of the MIT License. |
| */ |
| package org.mockito.verification; |
| |
| import org.junit.Test; |
| import org.mockito.InOrder; |
| import org.mockito.Mock; |
| import org.mockito.exceptions.base.MockitoAssertionError; |
| import org.mockito.internal.util.Timer; |
| import org.mockito.internal.verification.VerificationDataImpl; |
| import org.mockitoutil.TestBase; |
| |
| import static junit.framework.TestCase.fail; |
| import static org.mockito.Mockito.*; |
| |
| public class TimeoutTest extends TestBase { |
| |
| @Mock |
| VerificationMode mode; |
| @Mock |
| VerificationDataImpl data; |
| @Mock |
| Timer timer; |
| |
| private final MockitoAssertionError error = new MockitoAssertionError(""); |
| |
| @Test |
| public void should_pass_when_verification_passes() { |
| Timeout t = new Timeout(1, mode, timer); |
| |
| when(timer.isCounting()).thenReturn(true); |
| doNothing().when(mode).verify(data); |
| |
| t.verify(data); |
| |
| InOrder inOrder = inOrder(timer); |
| inOrder.verify(timer).start(); |
| inOrder.verify(timer).isCounting(); |
| } |
| |
| @Test |
| public void should_fail_because_verification_fails() { |
| Timeout t = new Timeout(1, mode, timer); |
| |
| when(timer.isCounting()).thenReturn(true, true, true, false); |
| doThrow(error). |
| doThrow(error). |
| doThrow(error). |
| when(mode).verify(data); |
| |
| try { |
| t.verify(data); |
| fail(); |
| } catch (MockitoAssertionError e) {} |
| |
| verify(timer, times(4)).isCounting(); |
| } |
| |
| @Test |
| public void should_pass_even_if_first_verification_fails() { |
| Timeout t = new Timeout(1, mode, timer); |
| |
| when(timer.isCounting()).thenReturn(true, true, true, false); |
| doThrow(error). |
| doThrow(error). |
| doNothing(). |
| when(mode).verify(data); |
| |
| t.verify(data); |
| verify(timer, times(3)).isCounting(); |
| } |
| |
| @Test |
| public void should_try_to_verify_correct_number_of_times() { |
| Timeout t = new Timeout(10, mode, timer); |
| |
| doThrow(error).when(mode).verify(data); |
| when(timer.isCounting()).thenReturn(true, true, true, true, true, false); |
| |
| try { |
| t.verify(data); |
| fail(); |
| } catch (MockitoAssertionError e) {} |
| |
| verify(mode, times(5)).verify(data); |
| } |
| |
| } |