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