diff --git a/src/main/java/net/engio/mbassy/subscription/Subscription.java b/src/main/java/net/engio/mbassy/subscription/Subscription.java index e3cfeec..f507f17 100644 --- a/src/main/java/net/engio/mbassy/subscription/Subscription.java +++ b/src/main/java/net/engio/mbassy/subscription/Subscription.java @@ -27,7 +27,7 @@ public class Subscription { this.listeners = listeners; } - public boolean isFromListener(Class listener){ + public boolean belongsTo(Class listener){ return context.getHandlerMetadata().isFromListener(listener); } diff --git a/src/test/java/net/engio/mbassy/SubscriptionManagerTest.java b/src/test/java/net/engio/mbassy/SubscriptionManagerTest.java index 43370c8..dbf964c 100644 --- a/src/test/java/net/engio/mbassy/SubscriptionManagerTest.java +++ b/src/test/java/net/engio/mbassy/SubscriptionManagerTest.java @@ -13,7 +13,6 @@ import net.engio.mbassy.subscription.SubscriptionManager; import org.junit.Test; import java.util.*; -import java.util.concurrent.ConcurrentHashMap; /** * Todo: Add javadoc @@ -30,7 +29,7 @@ public class SubscriptionManagerTest extends UnitTest{ final Set listeners = Collections.synchronizedSet(new HashSet()); final int concurrentUnits = 5; final int numberOfLoops = 100; - final int numberOfListeners = numberOfLoops * concurrentUnits * 2; + final int numberOfListeners = numberOfLoops * concurrentUnits; ConcurrentExecutor.runConcurrent(new Runnable() { @Override @@ -48,26 +47,14 @@ public class SubscriptionManagerTest extends UnitTest{ } }, concurrentUnits); + SubscriptionValidator validator = new SubscriptionValidator(); + validator.expect(numberOfListeners, SimpleSynchronousMessageHandler.class, ITestMessage.class); + validator.expect(numberOfListeners, SimpleSynchronousMessageHandler2.class, ITestMessage.class); + validator.expect(numberOfListeners, SimpleSynchronousMessageHandler.class, TestMessage.class); + validator.expect(numberOfListeners, SimpleSynchronousMessageHandler2.class, TestMessage.class); - Collection subscriptions = subMan.getSubscriptionsByMessageType(TestMessage.class); - assertEquals(2, subscriptions.size()); + validator.validate(subMan); - for(Subscription sub : subscriptions){ - assertEquals(numberOfListeners, sub.size()); - for(Object listener : listeners){ - - if(sub.isFromListener(listener))assertTrue(sub.contains(listener)); - } - } - - subscriptions = subMan.getSubscriptionsByMessageType(ITestMessage.class); - assertEquals(2, subscriptions.size()); - for(Subscription sub : subscriptions){ - assertEquals(numberOfListeners, sub.size()); - for(Object listener : listeners){ - if(sub.isFromListener(listener))assertTrue(sub.contains(listener)); - } - } } @@ -93,13 +80,17 @@ public class SubscriptionManagerTest extends UnitTest{ assertEquals(subscriptions.size(), validationEntries.size()); for(Entry validationEntry : validationEntries){ Subscription matchingSub = null; + // one of the subscriptions must belong to the subscriber type for(Subscription sub : subscriptions){ - if(sub.isFromListener(validationEntry.subscriber)); + if(sub.belongsTo(validationEntry.subscriber)){ + matchingSub = sub; + break; + } } + assertNotNull(matchingSub); + assertEquals(validationEntry.numberOfSubscribers, matchingSub.size()); } } - - }