blob: 1815c503e05e963ec3d145c0b56b0ea9f3601319 [file] [log] [blame]
/*
* 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);
}
}