blob: af4c0e8d6ce15518adedaa5dddaec69b5049d93f [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 java.util.Set;
import org.mockito.internal.verification.api.VerificationData;
import org.mockito.listeners.VerificationListener;
import org.mockito.verification.VerificationEvent;
import org.mockito.verification.VerificationMode;
public class MockAwareVerificationMode implements VerificationMode {
private final Object mock;
private final VerificationMode mode;
private final Set<VerificationListener> listeners;
public MockAwareVerificationMode(Object mock, VerificationMode mode, Set<VerificationListener> listeners) {
this.mock = mock;
this.mode = mode;
this.listeners = listeners;
}
public void verify(VerificationData data) {
try {
mode.verify(data);
notifyListeners(new VerificationEventImpl(mock, mode, data, null));
} catch (RuntimeException e) {
notifyListeners(new VerificationEventImpl(mock, mode, data, e));
throw e;
} catch (Error e) {
notifyListeners(new VerificationEventImpl(mock, mode, data, e));
throw e;
}
}
private void notifyListeners(VerificationEvent event) {
for (VerificationListener listener : listeners) {
listener.onVerification(event);
}
}
public Object getMock() {
return mock;
}
public VerificationMode description(String description) {
return VerificationModeFactory.description(this, description);
}
}