From 1e445adb0450056511e1ee3cbd16fa9147d394be Mon Sep 17 00:00:00 2001 From: bennidi Date: Wed, 22 May 2013 00:06:44 +0200 Subject: [PATCH] test for handlers of interfaces --- .../listener/MessageListenerMetadata.java | 12 +++---- .../java/net/engio/mbassy/InterfaceTest.java | 36 ------------------- .../engio/mbassy/SubscriptionManagerTest.java | 29 ++++++++++++--- .../java/net/engio/mbassy/SyncBusTest.java | 29 ++++++++++++++- 4 files changed, 58 insertions(+), 48 deletions(-) delete mode 100644 src/test/java/net/engio/mbassy/InterfaceTest.java diff --git a/src/main/java/net/engio/mbassy/listener/MessageListenerMetadata.java b/src/main/java/net/engio/mbassy/listener/MessageListenerMetadata.java index 65c6f79..676cfdd 100644 --- a/src/main/java/net/engio/mbassy/listener/MessageListenerMetadata.java +++ b/src/main/java/net/engio/mbassy/listener/MessageListenerMetadata.java @@ -28,18 +28,18 @@ public class MessageListenerMetadata { private List handlers = new ArrayList(); - private Class listenerDefinition; + private Class listenerClass; private Listener listenerAnnotation; - public MessageListenerMetadata(Class listenerDefinition) { - this.listenerDefinition = listenerDefinition; - Listener listenerAnnotation = listenerDefinition.getAnnotation(Listener.class); + public MessageListenerMetadata(Class listenerClass) { + this.listenerClass = listenerClass; + this.listenerAnnotation = listenerClass.getAnnotation(Listener.class); } public boolean isFromListener(Object listener){ - return listenerDefinition.equals(listener.getClass()); + return listenerClass.equals(listener.getClass()); } public boolean useStrongReferences(){ @@ -74,6 +74,6 @@ public class MessageListenerMetadata { } public Class getListerDefinition() { - return listenerDefinition; + return listenerClass; } } diff --git a/src/test/java/net/engio/mbassy/InterfaceTest.java b/src/test/java/net/engio/mbassy/InterfaceTest.java deleted file mode 100644 index 2e691be..0000000 --- a/src/test/java/net/engio/mbassy/InterfaceTest.java +++ /dev/null @@ -1,36 +0,0 @@ -package net.engio.mbassy; - -import net.engio.mbassy.bus.BusConfiguration; -import net.engio.mbassy.bus.MBassador; -import net.engio.mbassy.common.DeadMessage; -import net.engio.mbassy.listener.Handler; -import net.engio.mbassy.messages.ITestMessage; -import net.engio.mbassy.messages.TestMessage3; - -import org.junit.Assert; -import org.junit.Test; - -/** - * A test to make sure that Interface subscriptions are working correctly - * - * @author durron597 - */ -public class InterfaceTest { - @Test - public void testMBassador() { - MBassador bus = new MBassador(BusConfiguration.Default()); - bus.subscribe(this); - TestMessage3 myFoo = new TestMessage3(); - bus.publish(myFoo); - } - - @Handler - public void handleFoo(ITestMessage f) { - Assert.assertTrue(f instanceof TestMessage3); - } - - @Handler - public void handleDead(DeadMessage d) { - Assert.fail("This class should handle this message appropriately!"); - } -} diff --git a/src/test/java/net/engio/mbassy/SubscriptionManagerTest.java b/src/test/java/net/engio/mbassy/SubscriptionManagerTest.java index 296cf84..2121af6 100644 --- a/src/test/java/net/engio/mbassy/SubscriptionManagerTest.java +++ b/src/test/java/net/engio/mbassy/SubscriptionManagerTest.java @@ -6,6 +6,7 @@ import net.engio.mbassy.listener.Handler; import net.engio.mbassy.listener.MetadataReader; import net.engio.mbassy.messages.ITestMessage; import net.engio.mbassy.messages.TestMessage; +import net.engio.mbassy.messages.TestMessage3; import net.engio.mbassy.subscription.Subscription; import net.engio.mbassy.subscription.SubscriptionFactory; import net.engio.mbassy.subscription.SubscriptionManager; @@ -15,7 +16,6 @@ import java.util.Collection; import java.util.Collections; import java.util.HashSet; import java.util.Set; -import java.util.concurrent.ConcurrentHashMap; /** * Todo: Add javadoc @@ -54,17 +54,25 @@ public class SubscriptionManagerTest extends UnitTest{ assertEquals(2, subscriptions.size()); for(Subscription sub : subscriptions){ - assertEquals(numberOfListeners, sub.size()); + assertEquals(numberOfListeners / 2, sub.size()); for(Object listener : listeners){ - if(sub.isFromListener(listener))assertTrue(sub.contains(listener)); } } subscriptions = subMan.getSubscriptionsByMessageType(ITestMessage.class); - assertEquals(2, subscriptions.size()); + assertEquals(2 , subscriptions.size()); for(Subscription sub : subscriptions){ - assertEquals(numberOfListeners, sub.size()); + assertEquals(numberOfListeners / 2, sub.size()); + for(Object listener : listeners){ + if(sub.isFromListener(listener))assertTrue(sub.contains(listener)); + } + } + + subscriptions = subMan.getSubscriptionsByMessageType(TestMessage3.class); + assertEquals(4 , subscriptions.size()); + for(Subscription sub : subscriptions){ + assertEquals(numberOfListeners / 2, sub.size()); for(Object listener : listeners){ if(sub.isFromListener(listener))assertTrue(sub.contains(listener)); } @@ -72,6 +80,9 @@ public class SubscriptionManagerTest extends UnitTest{ } + + + static class SimpleSynchronousMessageHandler{ @Handler @@ -81,6 +92,10 @@ public class SubscriptionManagerTest extends UnitTest{ @Handler public void handle(ITestMessage message) { } + + @Handler + public void handle(TestMessage3 message) { + } } @@ -93,5 +108,9 @@ public class SubscriptionManagerTest extends UnitTest{ @Handler public void handle(ITestMessage message) { } + + @Handler + public void handle(TestMessage3 message) { + } } } diff --git a/src/test/java/net/engio/mbassy/SyncBusTest.java b/src/test/java/net/engio/mbassy/SyncBusTest.java index f99056d..d0c0901 100644 --- a/src/test/java/net/engio/mbassy/SyncBusTest.java +++ b/src/test/java/net/engio/mbassy/SyncBusTest.java @@ -1,14 +1,18 @@ package net.engio.mbassy; import net.engio.mbassy.bus.*; +import net.engio.mbassy.common.DeadMessage; import net.engio.mbassy.common.MessageBusTest; import net.engio.mbassy.common.TestUtil; import net.engio.mbassy.dispatch.HandlerInvocation; +import net.engio.mbassy.messages.ITestMessage; import net.engio.mbassy.messages.SubTestMessage; import net.engio.mbassy.messages.TestMessage; import net.engio.mbassy.listener.*; import net.engio.mbassy.listeners.*; +import net.engio.mbassy.messages.TestMessage3; import net.engio.mbassy.subscription.SubscriptionContext; +import org.junit.Assert; import org.junit.Test; import java.util.List; @@ -61,7 +65,6 @@ public abstract class SyncBusTest extends MessageBusTest { ISyncMessageBus bus = getSyncMessageBus(); - for(int i = 0; i< 10000; i++){ bus.subscribe(new MessageListener2()); } @@ -84,6 +87,30 @@ public abstract class SyncBusTest extends MessageBusTest { protected abstract ISyncMessageBus getSyncMessageBus(); + + @Test + public void testHandlerUsingInterface() { + MBassador bus = new MBassador(BusConfiguration.Default()); + bus.subscribe(new InterfaceMessageListener()); + bus.publish(new TestMessage3()); + } + + @Listener(references = References.Strong) + static class InterfaceMessageListener{ + + @Handler + public void handleFoo(ITestMessage f) { + Assert.assertTrue(f instanceof TestMessage3); + } + + @Handler + public void handleDead(DeadMessage d) { + Assert.fail("This class should handle this message appropriately!"); + } + + } + + public static class MessageListener1 { // every event of type TestEvent or any subtype will be delivered