| /* |
| * 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;
|
| }
|
| } |