/*
* Copyright (c) 2007 Mockito contributors
* This program is made available under the terms of the MIT License.
*/
package org.mockito.verification;
import org.mockito.exceptions.Reporter;
import org.mockito.exceptions.misusing.FriendlyReminderException;
import org.mockito.internal.verification.VerificationModeFactory;
import org.mockito.internal.verification.VerificationWithTimeoutImpl;
import org.mockito.internal.verification.api.VerificationData;
/**
* See the javadoc for {@link VerificationWithTimeout}
* <p>
* Typically, you won't use this class explicitly. Instead use timeout() method on Mockito class.
* See javadoc for {@link VerificationWithTimeout}
*/
public class Timeout implements VerificationWithTimeout {
VerificationWithTimeoutImpl impl;
/**
* See the javadoc for {@link VerificationWithTimeout}
* <p>
* Typically, you won't use this class explicitly. Instead use timeout() method on Mockito class.
* See javadoc for {@link VerificationWithTimeout}
*/
public Timeout(int millis, VerificationMode delegate) {
this(10, millis, delegate);
}
/**
* See the javadoc for {@link VerificationWithTimeout}
*/
Timeout(int treshhold, int millis, VerificationMode delegate) {
this.impl = new VerificationWithTimeoutImpl(treshhold, millis, delegate);
}
/**
* See the javadoc for {@link VerificationWithTimeout}
*/
public void verify(VerificationData data) {
impl.verify(data);
}
/**
* See the javadoc for {@link VerificationWithTimeout}
*/
public VerificationMode atLeast(int minNumberOfInvocations) {
return new Timeout(impl.getTreshhold(), impl.getTimeout(), VerificationModeFactory.atLeast(minNumberOfInvocations));
}
/**
* See the javadoc for {@link VerificationWithTimeout}
*/
public VerificationMode atLeastOnce() {
return new Timeout(impl.getTreshhold(), impl.getTimeout(), VerificationModeFactory.atLeastOnce());
}
/**
* See the javadoc for {@link VerificationWithTimeout}
*/
public VerificationMode atMost(int maxNumberOfInvocations) {
new Reporter().atMostShouldNotBeUsedWithTimeout();
return null;
}
/**
* See the javadoc for {@link VerificationWithTimeout}
*/
public VerificationMode never() {
return new Timeout(impl.getTreshhold(), impl.getTimeout(), VerificationModeFactory.times(0));
}
/**
* See the javadoc for {@link VerificationWithTimeout}
*/
public VerificationMode only() {
return new Timeout(impl.getTreshhold(), impl.getTimeout(), VerificationModeFactory.only());
}
/**
* See the javadoc for {@link VerificationWithTimeout}
*/
public VerificationMode times(int wantedNumberOfInvocations) {
return new Timeout(impl.getTreshhold(), impl.getTimeout(), VerificationModeFactory.times(wantedNumberOfInvocations));
}
}