package org.distributeme.registry.metaregistry; import org.distributeme.core.ServiceDescriptor; import org.distributeme.core.ServiceDescriptor.Protocol; import org.junit.AfterClass; import org.junit.Before; import org.junit.Test; import java.util.ArrayList; import java.util.List; import static org.junit.Assert.assertEquals; public class ListenerTest { @Before public void reset(){ resetRegistry(); } @AfterClass public static void resetRegistry(){ ((MetaRegistryImpl)MetaRegistryImpl.getInstance()).reset(); } @Test public void testBind(){ ServiceDescriptor sd = new ServiceDescriptor(Protocol.RMI, "foo"); MetaRegistry registry = MetaRegistryImpl.getInstance(); TestListener listener = new TestListener(); for (int i=0; i<10; i++){ registry.bind(sd); } assertEquals(0, listener.binds.size()); assertEquals(0, listener.unbinds.size()); registry.addListener(listener); for (int i=0; i<10; i++){ registry.bind(sd); } assertEquals(10, listener.binds.size()); assertEquals(0, listener.unbinds.size()); } @Test public void testUnbind(){ ServiceDescriptor sd = new ServiceDescriptor(Protocol.RMI, "foo"); MetaRegistry registry = MetaRegistryImpl.getInstance(); TestListener listener = new TestListener(); for (int i=0; i<10; i++){ registry.unbind(sd); } assertEquals(0, listener.binds.size()); assertEquals(0, listener.unbinds.size()); registry.addListener(listener); for (int i=0; i<10; i++){ registry.unbind(sd); } assertEquals(0, listener.binds.size()); assertEquals(0, listener.unbinds.size()); //now give something to unbind for (int i=0; i<10; i++){ registry.bind(sd); registry.unbind(sd); } assertEquals(10, listener.binds.size()); assertEquals(10, listener.unbinds.size()); } public static class TestListener implements MetaRegistryListener{ List<ServiceDescriptor> binds = new ArrayList<ServiceDescriptor>(); List<ServiceDescriptor> unbinds = new ArrayList<ServiceDescriptor>(); @Override public void onBind(ServiceDescriptor service) { binds.add(service); } @Override public void onUnbind(ServiceDescriptor service) { unbinds.add(service); } } }