• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright (c) 2007 Mockito contributors
3  * This program is made available under the terms of the MIT License.
4  */
5 package org.mockito.internal.verification;
6 
7 import java.util.Set;
8 import org.mockito.internal.verification.api.VerificationData;
9 import org.mockito.listeners.VerificationListener;
10 import org.mockito.verification.VerificationEvent;
11 import org.mockito.verification.VerificationMode;
12 
13 public class MockAwareVerificationMode implements VerificationMode {
14 
15     private final Object mock;
16     private final VerificationMode mode;
17     private final Set<VerificationListener> listeners;
18 
MockAwareVerificationMode(Object mock, VerificationMode mode, Set<VerificationListener> listeners)19     public MockAwareVerificationMode(Object mock, VerificationMode mode, Set<VerificationListener> listeners) {
20         this.mock = mock;
21         this.mode = mode;
22         this.listeners = listeners;
23     }
24 
verify(VerificationData data)25     public void verify(VerificationData data) {
26         try {
27             mode.verify(data);
28             notifyListeners(new VerificationEventImpl(mock, mode, data, null));
29         } catch (RuntimeException e) {
30             notifyListeners(new VerificationEventImpl(mock, mode, data, e));
31             throw e;
32         } catch (Error e) {
33             notifyListeners(new VerificationEventImpl(mock, mode, data, e));
34             throw e;
35         }
36     }
37 
38 
notifyListeners(VerificationEvent event)39     private void notifyListeners(VerificationEvent event) {
40         for (VerificationListener listener : listeners) {
41             listener.onVerification(event);
42         }
43     }
44 
getMock()45     public Object getMock() {
46         return mock;
47     }
48 
description(String description)49     public VerificationMode description(String description) {
50         return VerificationModeFactory.description(this, description);
51     }
52 }
53