package org.mockito.internal.verification;
import org.junit.Before;
import org.junit.Rule;
import org.junit.Test;
import org.junit.rules.ExpectedException;
import org.mockito.Mock;
import org.mockito.exceptions.base.MockitoAssertionError;
import org.mockito.exceptions.verification.junit.ArgumentsAreDifferent;
import org.mockito.verification.VerificationMode;
import static org.hamcrest.CoreMatchers.is;
import static org.mockito.Mockito.doThrow;
import static org.mockito.Mockito.verify;
import static org.mockito.MockitoAnnotations.initMocks;
public class VerificationOverTimeImplTest {
@Mock
private VerificationMode delegate;
private VerificationOverTimeImpl impl;
@Rule
public ExpectedException exception = ExpectedException.none();
@Before
public void setUp() {
initMocks(this);
impl = new VerificationOverTimeImpl(10, 1000, delegate, true);
}
@Test
public void should_return_on_success() {
impl.verify(null);
verify(delegate).verify(null);
}
@Test
public void should_throw_mockito_assertion_error() {
MockitoAssertionError toBeThrown = new MockitoAssertionError("message");
exception.expect(is(toBeThrown));
doThrow(toBeThrown).when(delegate).verify(null);
impl.verify(null);
}
@Test
public void should_deal_with_junit_assertion_error() {
ArgumentsAreDifferent toBeThrown = new ArgumentsAreDifferent("message", "wanted", "actual");
exception.expect(is(toBeThrown));
exception.expectMessage("message");
doThrow(toBeThrown).when(delegate).verify(null);
impl.verify(null);
}
@Test
public void should_not_wrap_other_exceptions() {
RuntimeException toBeThrown = new RuntimeException();
exception.expect(is(toBeThrown));
doThrow(toBeThrown).when(delegate).verify(null);
impl.verify(null);
}
}