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 javax.print.attribute.standard.Destination;
25 import javax.xml.transform.dom.DOMSource;
27 import org.junit.Before;
28 import org.junit.Test;
29 import org.wamblee.xmlrouter.common.Id;
30 import org.wamblee.xmlrouter.config.Transformation;
32 public class CompositeEventListenerTest {
34 private static final String DESTINATION_NAME = "dest";
35 private static final Id<Destination> DESTINATION_ID = new Id<Destination>(
37 private static final Id<DOMSource> EVENT_ID = new Id<DOMSource>(1);
38 private static final String DOCTYPE = "doc";
39 private CompositeEventListener composite;
41 private DOMSource source;
45 composite = new CompositeEventListener();
46 source = mock(DOMSource.class);
50 public void testNoListeners() {
51 // verify no exceptions occur.
52 composite.delivered(DOCTYPE, EVENT_ID, mock(DOMSource.class),
53 getTransformations(), DESTINATION_ID, DESTINATION_NAME, true);
54 composite.notDelivered(DOCTYPE, EVENT_ID, mock(DOMSource.class));
58 public void testOneListener() {
59 EventListener listener = mock(EventListener.class);
60 composite.addListener(listener);
62 invokeAndVerifyListenerInvoked(listener);
65 private void invokeAndVerifyListenerInvoked(EventListener... listeners) {
68 for (EventListener listener : listeners) {
69 checkInvokeDelivered(listener);
70 verifyNoMoreInteractions(listener);
75 for (EventListener listener : listeners) {
76 verify(listener).notDelivered(eq(DOCTYPE), eq(EVENT_ID),
78 verifyNoMoreInteractions(listener);
83 private void invokeDelivered() {
84 composite.delivered(DOCTYPE, EVENT_ID, source, getTransformations(),
85 DESTINATION_ID, DESTINATION_NAME, true);
88 private void invokeNotDelivered() {
89 composite.notDelivered(DOCTYPE, EVENT_ID, source);
92 private void checkInvokeDelivered(EventListener listener) {
93 verify(listener).delivered(eq(DOCTYPE), eq(EVENT_ID), same(source),
94 eq(getTransformations()), eq(DESTINATION_ID), eq(DESTINATION_NAME),
99 public void testRemoveListener() {
100 EventListener listener1 = mock(EventListener.class);
101 composite.addListener(listener1);
103 EventListener listener2 = mock(EventListener.class);
104 assertFalse(composite.removeListener(listener2));
106 invokeAndVerifyListenerInvoked(listener1);
108 assertTrue(composite.removeListener(listener1));
110 verifyNoMoreInteractions(listener1);
111 invokeNotDelivered();
112 verifyNoMoreInteractions(listener1);
115 private ArrayList<Transformation> getTransformations() {
116 return new ArrayList<Transformation>();
120 public void testMultipleListeners() {
121 EventListener listener1 = mock(EventListener.class);
122 EventListener listener2 = mock(EventListener.class);
123 composite.addListener(listener1);
124 composite.addListener(listener2);
126 invokeAndVerifyListenerInvoked(listener1, listener2);