예제 #1
0
 public void dispose_of_subscription_removes_it_from_composite()
 {
     var subscription = new MockSubscription<MessageA>();
     var c = new CompositeSubscription { subscription };
     c.ShouldHaveCount(1);
     subscription.Dispose();
     c.ShouldHaveCount(0);
 }
예제 #2
0
        public void dispose_of_subscription_removes_it_from_composite()
        {
            var subscription = new MockSubscription <MessageA>();
            var c            = new CompositeSubscription {
                subscription
            };

            c.ShouldHaveCount(1);
            subscription.Dispose();
            c.ShouldHaveCount(0);
        }
예제 #3
0
        public void correct_behavior_subscribe_get_subscribe_new_then_get_old()
        {
            var sub1 = new MockSubscription <MessageA>();
            var sub2 = new MockSubscription <MessageB>();
            var r    = GetResolver();

            r.Add(sub1);
            r.GetSubscriptionsFor(new MessageA()).ShouldHaveCount(1);
            r.Add(sub2);
            r.GetSubscriptionsFor(new MessageA()).ShouldHaveCount(1);
        }
        public void NewSubscriptionCollectHasNoElements()
        {
            MockSubscriptionCollection subscriptions = new MockSubscriptionCollection();
            MockSubscription           subscription  = new MockSubscription("test", "testPub");

            Assert.AreEqual(0, subscriptions.Count);
            Assert.AreEqual(-1, subscriptions.Find("test"));
            Assert.AreEqual(-1, subscriptions.Find(subscription));
            Assert.IsFalse(subscriptions.ContainsKey("test"));
            Assert.IsFalse(subscriptions.Contains(subscription));
        }
예제 #5
0
        public void correct_behavior_subscribe_get_subscribe_new_then_get_old()
        {
            var sub1 = new MockSubscription<MessageA>();
            var sub2 = new MockSubscription<MessageB>();
            var r = GetResolver();

            r.Add(sub1);
            r.GetSubscriptionsFor(new MessageA()).ShouldHaveCount(1);
            r.Add(sub2);
            r.GetSubscriptionsFor(new MessageA()).ShouldHaveCount(1);
        }
        public void AddingSubscriptionsReturnsCorrectNumberOfElements()
        {
            MockSubscriptionCollection subscriptions = new MockSubscriptionCollection();
            MockSubscription           subscription  = new MockSubscription("test", "testPub");

            subscriptions.Add(subscription);

            subscription = new MockSubscription("another", "anotherPub");
            subscriptions.Add(subscription);

            Assert.AreEqual(2, subscriptions.Count);
        }
        public void IndexThrowsForPastEndOfList()
        {
            MockSubscriptionCollection subscriptions = new MockSubscriptionCollection();

            MockSubscription subscription = new MockSubscription("test", "testPub");

            subscriptions.Add(subscription);

            subscription = new MockSubscription("another", "anotherPub");
            subscriptions.Add(subscription);

            Subscription test = subscriptions[2];
        }
        public void IndexThrowsForNegativeIndex()
        {
            MockSubscriptionCollection subscriptions = new MockSubscriptionCollection();

            MockSubscription subscription = new MockSubscription("test", "testPub");

            subscriptions.Add(subscription);

            subscription = new MockSubscription("another", "anotherPub");
            subscriptions.Add(subscription);

            Subscription test = subscriptions[-1];
        }
        public void IndexerThrowsWhenNotMatch()
        {
            MockSubscriptionCollection subscriptions = new MockSubscriptionCollection();

            MockSubscription subscription = new MockSubscription("test", "testPub");

            subscriptions.Add(subscription);

            subscription = new MockSubscription("another", "anotherPub");
            subscriptions.Add(subscription);

            Subscription test = subscriptions["not"];
        }
예제 #10
0
        public void correct_behavior_of_resolver_with_regard_to_subscribe_dispose_subscribe_publish_twice()
        {
            var sub1 = new MockSubscription <MessageA>();
            var r    = GetResolver();

            r.Add(sub1);
            r.GetSubscriptionsFor(new MessageA()).ShouldHaveCount(1);
            sub1.Dispose();

            sub1 = new MockSubscription <MessageA>();
            r.Add(sub1);
            r.GetSubscriptionsFor(new MessageB()).ShouldHaveCount(0);
            r.GetSubscriptionsFor(new MessageA()).ShouldHaveCount(1);
        }
예제 #11
0
        public void correct_behavior_of_resolver_with_regard_to_subscribe_dispose_subscribe_publish_twice()
        {
            var sub1 = new MockSubscription<MessageA>();
            var r = GetResolver();

            r.Add(sub1);
            r.GetSubscriptionsFor(new MessageA()).ShouldHaveCount(1);
            sub1.Dispose();

            sub1 = new MockSubscription<MessageA>();
            r.Add(sub1);
            r.GetSubscriptionsFor(new MessageB()).ShouldHaveCount(0);
            r.GetSubscriptionsFor(new MessageA()).ShouldHaveCount(1);
        }
        public void FindViaSubscriberReturnsCorrectResults()
        {
            MockSubscriptionCollection subscriptions = new MockSubscriptionCollection();

            MockSubscription subscription = new MockSubscription("test", "testPub");

            subscriptions.Add(subscription);

            subscription = new MockSubscription("another", "anotherPub");
            subscriptions.Add(subscription);

            Assert.AreEqual(0, subscriptions.Find("test"));
            Assert.AreEqual(1, subscriptions.Find("another"));
            Assert.AreEqual(-1, subscriptions.Find("not"));
        }
        public void ContainsKeyPerformsCorrectly()
        {
            MockSubscriptionCollection subscriptions = new MockSubscriptionCollection();

            MockSubscription subscription = new MockSubscription("test", "testPub");

            subscriptions.Add(subscription);

            subscription = new MockSubscription("another", "anotherPub");
            subscriptions.Add(subscription);

            Assert.IsTrue(subscriptions.ContainsKey("test"));
            Assert.IsTrue(subscriptions.ContainsKey("another"));
            Assert.IsFalse(subscriptions.ContainsKey("not"));
        }
        public void IntegerIndexerGetsCorrectSubscription()
        {
            MockSubscriptionCollection subscriptions = new MockSubscriptionCollection();

            MockSubscription subscription = new MockSubscription("test", "testPub");

            subscriptions.Add(subscription);

            subscription = new MockSubscription("another", "anotherPub");
            subscriptions.Add(subscription);

            Subscription test = subscriptions[1];

            Assert.IsNotNull(test);
            Assert.AreEqual("anotherPub", test.Publication);
        }
        public void IndexFindsSubscriptionUsingSubscriber()
        {
            MockSubscriptionCollection subscriptions = new MockSubscriptionCollection();

            MockSubscription subscription = new MockSubscription("test", "testPub");

            subscriptions.Add(subscription);

            subscription = new MockSubscription("another", "anotherPub");
            subscriptions.Add(subscription);

            Subscription test = subscriptions["another"];

            Assert.IsNotNull(test);
            Assert.AreEqual("anotherPub", test.Publication);
        }
        public void ContainsReturnsTrueOnlyForExactSameInstance()
        {
            MockSubscriptionCollection subscriptions = new MockSubscriptionCollection();

            MockSubscription subscription1 = new MockSubscription("test", "testPub");

            subscriptions.Add(subscription1);

            MockSubscription subscription2 = new MockSubscription("another", "anotherPub");

            subscriptions.Add(subscription2);

            MockSubscription subscription3 = new MockSubscription("test", "testPub");

            Assert.IsTrue(subscriptions.Contains(subscription1));
            Assert.IsFalse(subscriptions.Contains(subscription3));
        }
예제 #17
0
        public void publishes_message_fire_and_forget()
        {
            var p = new ParallelNonBlockingPublisher();
            var evtBlock = new ManualResetEvent(false);
            var evtSignal = new ManualResetEvent(false);
            var evtSignal2 = new ManualResetEvent(false);
            var lockingSub = new MockSubscription<MessageA>(evtBlock, evtSignal);
            var runThroughSub = new MockSubscription<MessageA>(evtSignal:evtSignal2);

            var token = new PublishToken(new MessageA(), new[] { lockingSub, runThroughSub });
            p.LookAt(token);
            lockingSub.Received.ShouldBeEqualTo(0);
            evtSignal2.WaitOne();
            runThroughSub.Received.ShouldBeEqualTo(1);
            evtBlock.Set();
            evtSignal.WaitOne();
            lockingSub.Received.ShouldBeEqualTo(1);
        }
예제 #18
0
        public void Sequence_of_addition_and_disposal_works_as_shown()
        {
            var sub1 = new MockSubscription<MessageA>();
            var sub2 = new MockSubscription<MessageA>();
            var sub3 = new MockSubscription<MessageB>();

            var r = GetResolver();
            r.Add(sub1);
            r.GetSubscriptionsFor(new MessageA()).ShouldHaveCount(1);
            r.Add(sub2);
            r.GetSubscriptionsFor(new MessageA()).ShouldHaveCount(2);
            r.GetSubscriptionsFor(new MessageA()).ShouldHaveCount(2);
            r.Add(sub3);
            r.GetSubscriptionsFor(new MessageB()).ShouldHaveCount(1);
            sub1.Dispose();
            r.GetSubscriptionsFor(new MessageA()).ShouldHaveCount(1);
            sub3.Dispose();
            r.GetSubscriptionsFor(new MessageB()).ShouldHaveCount(0);
        }
예제 #19
0
        public void publishes_message_fire_and_forget()
        {
            var p             = new ParallelNonBlockingPublisher();
            var evtBlock      = new ManualResetEvent(false);
            var evtSignal     = new ManualResetEvent(false);
            var evtSignal2    = new ManualResetEvent(false);
            var lockingSub    = new MockSubscription <MessageA>(evtBlock, evtSignal);
            var runThroughSub = new MockSubscription <MessageA>(evtSignal: evtSignal2);

            var token = new PublishToken(new MessageA(), new[] { lockingSub, runThroughSub });

            p.LookAt(token);
            lockingSub.Received.ShouldBeEqualTo(0);
            evtSignal2.WaitOne();
            runThroughSub.Received.ShouldBeEqualTo(1);
            evtBlock.Set();
            evtSignal.WaitOne();
            lockingSub.Received.ShouldBeEqualTo(1);
        }
예제 #20
0
        public void Sequence_of_addition_and_disposal_works_as_shown()
        {
            var sub1 = new MockSubscription <MessageA>();
            var sub2 = new MockSubscription <MessageA>();
            var sub3 = new MockSubscription <MessageB>();

            var r = GetResolver();

            r.Add(sub1);
            r.GetSubscriptionsFor(new MessageA()).ShouldHaveCount(1);
            r.Add(sub2);
            r.GetSubscriptionsFor(new MessageA()).ShouldHaveCount(2);
            r.GetSubscriptionsFor(new MessageA()).ShouldHaveCount(2);
            r.Add(sub3);
            r.GetSubscriptionsFor(new MessageB()).ShouldHaveCount(1);
            sub1.Dispose();
            r.GetSubscriptionsFor(new MessageA()).ShouldHaveCount(1);
            sub3.Dispose();
            r.GetSubscriptionsFor(new MessageB()).ShouldHaveCount(0);
        }