package org.limewire.listener; import junit.framework.TestCase; public class CachingEventMulticasterTest extends TestCase { public CachingEventMulticasterTest(String name) { super(name); } public void testAddListener() { EventMulticaster<Integer> multicaster = new CachingEventMulticasterImpl<Integer>(); IntListener intListener = new IntListener(); multicaster.addListener(intListener); assertEquals(0, intListener.value); assertEquals(0, intListener.notifications); multicaster = new CachingEventMulticasterImpl<Integer>(); intListener = new IntListener(); multicaster.broadcast(5); multicaster.addListener(intListener); assertEquals(5, intListener.value); assertEquals(1, intListener.notifications); } public void testBroadcastBroadcastPolicyDefault() { EventMulticaster<Integer> multicaster = new CachingEventMulticasterImpl<Integer>(); IntListener intListener = new IntListener(); multicaster.addListener(intListener); multicaster.broadcast(10); assertEquals(10, intListener.value); assertEquals(1, intListener.notifications); multicaster.broadcast(10); assertEquals(10, intListener.value); assertEquals(2, intListener.notifications); multicaster.broadcast(15); assertEquals(15, intListener.value); assertEquals(3, intListener.notifications); } public void testBroadcastBroadcastPolicyAlways() { EventMulticaster<Integer> multicaster = new CachingEventMulticasterImpl<Integer>(BroadcastPolicy.ALWAYS); IntListener intListener = new IntListener(); multicaster.addListener(intListener); multicaster.broadcast(10); assertEquals(10, intListener.value); assertEquals(1, intListener.notifications); multicaster.broadcast(10); assertEquals(10, intListener.value); assertEquals(2, intListener.notifications); multicaster.broadcast(15); assertEquals(15, intListener.value); assertEquals(3, intListener.notifications); } public void testBroadcastBroadcastPolicyIfNotEqual() { EventMulticaster<Integer> multicaster = new CachingEventMulticasterImpl<Integer>(BroadcastPolicy.IF_NOT_EQUALS); IntListener intListener = new IntListener(); multicaster.addListener(intListener); multicaster.broadcast(10); assertEquals(10, intListener.value); assertEquals(1, intListener.notifications); multicaster.broadcast(10); assertEquals(10, intListener.value); assertEquals(1, intListener.notifications); multicaster.broadcast(15); assertEquals(15, intListener.value); assertEquals(2, intListener.notifications); } public void testRemoveListener() { EventMulticaster<Integer> multicaster = new CachingEventMulticasterImpl<Integer>(); IntListener intListener = new IntListener(); multicaster.addListener(intListener); assertEquals(0, intListener.value); assertEquals(0, intListener.notifications); multicaster = new CachingEventMulticasterImpl<Integer>(); intListener = new IntListener(); multicaster.broadcast(5); multicaster.addListener(intListener); assertEquals(5, intListener.value); assertEquals(1, intListener.notifications); multicaster.removeListener(intListener); multicaster.broadcast(10); assertEquals(5, intListener.value); assertEquals(1, intListener.notifications); } class IntListener implements EventListener<Integer> { private int value; private int notifications; @Override public void handleEvent(Integer event) { value = event; notifications++; } } }