2 * Copyright 2005-2011 the original author or authors.
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
8 * http://www.apache.org/licenses/LICENSE-2.0
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
16 package org.wamblee.xmlrouter.listener;
18 import static junit.framework.Assert.*;
19 import static org.mockito.Matchers.*;
20 import static org.mockito.Mockito.*;
22 import java.util.ArrayList;
24 import org.junit.Before;
25 import org.junit.Test;
26 import org.wamblee.xmlrouter.config.Transformation;
28 public class CompositeEventListenerTest {
30 private static final String DESTINATION_NAME = "dest";
31 private static final long DESTINATION_ID = 12L;
32 private CompositeEventListener composite;
34 private EventInfo source;
38 composite = new CompositeEventListener();
39 source = mock(EventInfo.class);
43 public void testNoListeners() {
44 // verify no exceptions occur.
45 composite.delivered(mock(EventInfo.class), getTransformations(),
46 DESTINATION_ID, DESTINATION_NAME, true);
47 composite.notDelivered(mock(EventInfo.class));
51 public void testOneListener() {
52 EventListener listener = mock(EventListener.class);
53 composite.addListener(listener);
55 invokeAndVerifyListenerInvoked(listener);
58 private void invokeAndVerifyListenerInvoked(EventListener... listeners) {
61 for (EventListener listener : listeners) {
62 checkInvokeDelivered(listener);
63 verifyNoMoreInteractions(listener);
68 for (EventListener listener : listeners) {
69 verify(listener).notDelivered(same(source));
70 verifyNoMoreInteractions(listener);
75 private void invokeDelivered() {
76 composite.delivered(source, getTransformations(), DESTINATION_ID,
77 DESTINATION_NAME, true);
80 private void invokeNotDelivered() {
81 composite.notDelivered(source);
84 private void checkInvokeDelivered(EventListener listener) {
85 verify(listener).delivered(same(source), eq(getTransformations()),
86 eq(DESTINATION_ID), eq(DESTINATION_NAME), eq(true));
90 public void testRemoveListener() {
91 EventListener listener1 = mock(EventListener.class);
92 composite.addListener(listener1);
94 EventListener listener2 = mock(EventListener.class);
95 assertFalse(composite.removeListener(listener2));
97 invokeAndVerifyListenerInvoked(listener1);
99 assertTrue(composite.removeListener(listener1));
101 verifyNoMoreInteractions(listener1);
102 invokeNotDelivered();
103 verifyNoMoreInteractions(listener1);
106 private ArrayList<Transformation> getTransformations() {
107 return new ArrayList<Transformation>();
111 public void testMultipleListeners() {
112 EventListener listener1 = mock(EventListener.class);
113 EventListener listener2 = mock(EventListener.class);
114 composite.addListener(listener1);
115 composite.addListener(listener2);
117 invokeAndVerifyListenerInvoked(listener1, listener2);