blob: 564592633a8658ab3ba4654af93adc71d136b279 [file] [log] [blame]
Simon Huntff663742015-05-14 13:33:05 -07001/*
2 * Copyright 2014 Open Networking Laboratory
3 *
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
7 *
8 * http://www.apache.org/licenses/LICENSE-2.0
9 *
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.
15 */
16package org.onosproject.event;
17
18import org.junit.Before;
19import org.junit.Test;
20
21import static org.junit.Assert.assertFalse;
22import static org.junit.Assert.assertTrue;
23
24/**
25 * Unit tests for {@link ListenerRegistry}.
26 */
27public class ListenerRegistryTest {
28
29 private static class RelaxedRegistry extends TestListenerRegistry {
30 @Override
31 protected boolean checkForNonRegistrant() {
32 return false;
33 }
34 }
35
36 private static final TestEvent FOO_EVENT =
37 new TestEvent(TestEvent.Type.FOO, "foo");
38 private static final TestEvent BAR_EVENT =
39 new TestEvent(TestEvent.Type.BAR, "bar");
40
41 private TestListener listener;
42 private TestListener secondListener;
43 private TestListenerRegistry manager;
44
45 @Before
46 public void setUp() {
47 listener = new TestListener();
48 secondListener = new TestListener();
49 manager = new TestListenerRegistry();
50 }
51
52 @Test
53 public void basics() {
54 manager.addListener(listener);
55 manager.addListener(secondListener);
56
57 manager.process(BAR_EVENT);
58 assertTrue("BAR not processed", listener.events.contains(BAR_EVENT));
59 assertTrue("BAR not processed", secondListener.events.contains(BAR_EVENT));
60
61 manager.removeListener(listener);
62
63 manager.process(FOO_EVENT);
64 assertFalse("FOO processed", listener.events.contains(FOO_EVENT));
65 assertTrue("FOO not processed", secondListener.events.contains(FOO_EVENT));
66 }
67
68 @Test
69 public void badListener() {
70 listener = new BrokenListener();
71
72 manager.addListener(listener);
73 manager.addListener(secondListener);
74
75 manager.process(BAR_EVENT);
76 assertFalse("BAR processed", listener.events.contains(BAR_EVENT));
77 assertFalse("error not reported", manager.errors.isEmpty());
78 assertTrue("BAR not processed", secondListener.events.contains(BAR_EVENT));
79 }
80
81 @Test(expected = IllegalArgumentException.class)
82 public void removeNonListenerCausesException() {
83 manager.removeListener(listener);
84 }
85
86 @Test
87 public void removeNonListenerIgnored() {
88 manager = new RelaxedRegistry();
89 manager.removeListener(listener);
90 assertTrue("what?", manager.listeners.isEmpty());
91 }
92
93}