blob: 0e08005cb031b5e78c5db0c8bdfe9167816badd2 [file] [log] [blame]
/*
* Copyright (c) 2007 Mockito contributors
* This program is made available under the terms of the MIT License.
*/
package org.mockito.internal.verification;
import org.mockito.exceptions.base.MockitoAssertionError;
import org.mockito.internal.verification.api.VerificationData;
import org.mockito.verification.VerificationMode;
public class VerificationWithTimeoutImpl {
VerificationMode delegate;
int timeout;
int treshhold;
public VerificationWithTimeoutImpl(int treshhold, int millis, VerificationMode delegate) {
this.treshhold = treshhold;
this.timeout = millis;
this.delegate = delegate;
}
public void verify(VerificationData data) {
int soFar = 0;
MockitoAssertionError error = null;
while (soFar <= timeout) {
try {
delegate.verify(data);
return;
} catch (MockitoAssertionError e) {
error = e;
soFar += treshhold;
sleep(treshhold);
}
}
if (error != null) {
throw error;
}
}
void sleep(int sleep) {
try {
Thread.sleep(sleep);
} catch (InterruptedException ie) {
// oups. not much luck.
}
}
public VerificationMode getDelegate() {
return delegate;
}
public int getTimeout() {
return timeout;
}
public int getTreshhold() {
return treshhold;
}
}