@Test public void testNoListenersMeansNoEvents() throws ClassNotFoundException { registerDefaultEvents(); assertNoEventsEnabled(); }
@Test public void testAssociationOfInterfacesAndEvents() throws ClassNotFoundException { registerDefaultEvents(); registerDefaultListeners(); assertStandardEventsEnabled(); }
/** * When the manager is not dynamic (the default), decisions should not change */ @Test public void testNonDynamicManagerDecisions() throws ClassNotFoundException { registerDefaultEvents(); registerDefaultListeners(); OptimisedNotificationHandler decision = new OptimisedNotificationHandler(manager, Event2.class); assertTrue(decision.isNotificationEnabled(Event2.class)); manager.disableType(Event2.class); assertTrue(decision.isNotificationEnabled(Event2.class)); }
@Test public void testDynamicManagerDecisions() throws ClassNotFoundException { registerDefaultEvents(); registerDefaultListeners(); manager.setNotificationDynamic(true); OptimisedNotificationHandler decision = new OptimisedNotificationHandler(manager, Event2.class); assertTrue(decision.isNotificationEnabled(Event2.class)); manager.disableType(Event2.class); assertFalse(decision.isNotificationEnabled(Event2.class)); }
/** * A new policy should only be generated when the configuration changes */ @Test public void testPolicyCaching() throws ClassNotFoundException { registerDefaultEvents(); registerDefaultListeners(); Policy policy = manager.getPolicy(); assertStandardEventsEnabled(); assertSame(policy, manager.getPolicy()); manager.disableType(Event2.class); assertNotSame(policy, manager.getPolicy()); }
@Test public void testDynamicResponseToDisablingInterfaces() throws ClassNotFoundException { registerDefaultEvents(); registerDefaultListeners(); assertStandardEventsEnabled(); // now disable listener 1 manager.disableInterface(Listener1.class); assertFalse("via subclass, but no listener", manager.isNotificationEnabled(Event1.class)); assertFalse("disabled", manager.isNotificationEnabled(SubEvent1.class)); assertFalse("via superclass, but no listener", manager.isNotificationEnabled(SubSubEvent1.class)); assertTrue("direct", manager.isNotificationEnabled(Event2.class)); assertTrue("via superclass", manager.isNotificationEnabled(SubEvent2.class)); assertFalse("not specified at all", manager.isNotificationEnabled(Event3.class)); }
@Test public void testDynamicResponseToDisablingEvents() throws ClassNotFoundException { registerDefaultEvents(); registerDefaultListeners(); assertStandardEventsEnabled(); // now disable event 2 manager.disableType(Event2.class); assertTrue("via subclass", manager.isNotificationEnabled(Event1.class)); assertTrue("direct", manager.isNotificationEnabled(SubEvent1.class)); assertFalse("disabled", manager.isNotificationEnabled(Event2.class)); assertFalse("no listener", manager.isNotificationEnabled(SubEvent2.class)); assertFalse("not specified at all", manager.isNotificationEnabled(Event3.class)); // the subclass should be blocked too manager.addInterfaceToType(Listener2.class, SubEvent2.class); assertTrue("via subclass", manager.isNotificationEnabled(Event1.class)); assertTrue("direct", manager.isNotificationEnabled(SubEvent1.class)); assertFalse("disabled", manager.isNotificationEnabled(Event2.class)); assertFalse("disabled", manager.isNotificationEnabled(SubEvent2.class)); assertFalse("not specified at all", manager.isNotificationEnabled(Event3.class)); }
@Test public void testNoListenersMeansNoEvents() throws ClassNotFoundException { registerDefaultEvents(); assertNoEventsEnabled(); }
@Test public void testNotification() throws ClassNotFoundException { registerDefaultEvents(); registerDefaultListeners(); assertNoListenersNotified(); manager.notifyListeners(new Event1(), (listener, nfn) -> listener.onNotification(nfn)); assertNoListenersNotified(); manager.notifyListeners(new SubEvent1(), (listener, nfn) -> listener.onNotification(nfn)); assertNoListenersNotified(); manager.notifyListeners(new Event1("id1"), (listener, nfn) -> listener.onNotification(nfn)); assertNoListenersNotified(); manager.notifyListeners(new SubSubEvent1("id1"), (listener, nfn) -> listener.onNotification(nfn)); assertTrue(listener1.isNotified()); assertFalse(listener2.isNotified()); manager.notifyListeners(new Event2(), (listener, nfn) -> listener.onNotification(nfn)); assertTrue(listener1.isNotified()); assertTrue(listener2.isNotified()); }
@Test public void testAssociationOfInterfacesAndEvents() throws ClassNotFoundException { registerDefaultEvents(); registerDefaultListeners(); assertStandardEventsEnabled(); }
/** * When the manager is not dynamic (the default), decisions should not change */ @Test public void testNonDynamicManagerDecisions() throws ClassNotFoundException { registerDefaultEvents(); registerDefaultListeners(); OptimisedNotificationHandler decision = new OptimisedNotificationHandler(manager, Event2.class); assertTrue(decision.isNotificationEnabled(Event2.class)); manager.disableType(Event2.class); assertTrue(decision.isNotificationEnabled(Event2.class)); }
@Test public void testDynamicManagerDecisions() throws ClassNotFoundException { registerDefaultEvents(); registerDefaultListeners(); manager.setNotificationDynamic(true); OptimisedNotificationHandler decision = new OptimisedNotificationHandler(manager, Event2.class); assertTrue(decision.isNotificationEnabled(Event2.class)); manager.disableType(Event2.class); assertFalse(decision.isNotificationEnabled(Event2.class)); }
/** * A new policy should only be generated when the configuration changes */ @Test public void testPolicyCaching() throws ClassNotFoundException { registerDefaultEvents(); registerDefaultListeners(); Policy policy = manager.getPolicy(); assertStandardEventsEnabled(); assertSame(policy, manager.getPolicy()); manager.disableType(Event2.class); assertNotSame(policy, manager.getPolicy()); }
@Test public void testDynamicResponseToDisablingInterfaces() throws ClassNotFoundException { registerDefaultEvents(); registerDefaultListeners(); assertStandardEventsEnabled(); // now disable listener 1 manager.disableInterface(Listener1.class); assertFalse("via subclass, but no listener", manager.isNotificationEnabled(Event1.class)); assertFalse("disabled", manager.isNotificationEnabled(SubEvent1.class)); assertFalse("via superclass, but no listener", manager.isNotificationEnabled(SubSubEvent1.class)); assertTrue("direct", manager.isNotificationEnabled(Event2.class)); assertTrue("via superclass", manager.isNotificationEnabled(SubEvent2.class)); assertFalse("not specified at all", manager.isNotificationEnabled(Event3.class)); }
@Test public void testDynamicResponseToDisablingEvents() throws ClassNotFoundException { registerDefaultEvents(); registerDefaultListeners(); assertStandardEventsEnabled(); // now disable event 2 manager.disableType(Event2.class); assertTrue("via subclass", manager.isNotificationEnabled(Event1.class)); assertTrue("direct", manager.isNotificationEnabled(SubEvent1.class)); assertFalse("disabled", manager.isNotificationEnabled(Event2.class)); assertFalse("no listener", manager.isNotificationEnabled(SubEvent2.class)); assertFalse("not specified at all", manager.isNotificationEnabled(Event3.class)); // the subclass should be blocked too manager.addInterfaceToType(Listener2.class, SubEvent2.class); assertTrue("via subclass", manager.isNotificationEnabled(Event1.class)); assertTrue("direct", manager.isNotificationEnabled(SubEvent1.class)); assertFalse("disabled", manager.isNotificationEnabled(Event2.class)); assertFalse("disabled", manager.isNotificationEnabled(SubEvent2.class)); assertFalse("not specified at all", manager.isNotificationEnabled(Event3.class)); }
@Test public void testNotification() throws ClassNotFoundException { registerDefaultEvents(); registerDefaultListeners(); assertNoListenersNotified(); manager.notifyListeners(new Event1(), (listener, nfn) -> listener.onNotification(nfn)); assertNoListenersNotified(); manager.notifyListeners(new SubEvent1(), (listener, nfn) -> listener.onNotification(nfn)); assertNoListenersNotified(); manager.notifyListeners(new Event1("id1"), (listener, nfn) -> listener.onNotification(nfn)); assertNoListenersNotified(); manager.notifyListeners(new SubSubEvent1("id1"), (listener, nfn) -> listener.onNotification(nfn)); assertTrue(listener1.isNotified()); assertFalse(listener2.isNotified()); manager.notifyListeners(new Event2(), (listener, nfn) -> listener.onNotification(nfn)); assertTrue(listener1.isNotified()); assertTrue(listener2.isNotified()); }