public void A_bunch_of_mixed_subscriber_types_should_work() { IndiscriminantConsumer<PingMessage> consumer = new IndiscriminantConsumer<PingMessage>(); ParticularConsumer consumerYes = new ParticularConsumer(true); ParticularConsumer consumerNo = new ParticularConsumer(false); Stopwatch firstTime = Stopwatch.StartNew(); var unsubscribeToken = _pipeline.Subscribe(consumer); firstTime.Stop(); Stopwatch secondTime = Stopwatch.StartNew(); unsubscribeToken += _pipeline.Subscribe(consumerYes); secondTime.Stop(); unsubscribeToken += _pipeline.Subscribe(consumerNo); Trace.WriteLine(string.Format("First time: {0}, Second Time: {1}", firstTime.Elapsed, secondTime.Elapsed)); PipelineViewer.Trace(_pipeline); PingMessage message = new PingMessage(); _pipeline.Dispatch(message); Assert.AreEqual(message, consumer.Consumed); Assert.AreEqual(message, consumerYes.Consumed); Assert.AreEqual(null, consumerNo.Consumed); unsubscribeToken(); PingMessage nextMessage = new PingMessage(); _pipeline.Dispatch(nextMessage); Assert.AreEqual(message, consumer.Consumed); Assert.AreEqual(message, consumerYes.Consumed); }
public void The_subscription_should_be_added_for_selective_consumers_that_are_interested() { ParticularConsumer consumer = new ParticularConsumer(true); _pipeline.Subscribe(consumer); PingMessage message = new PingMessage(); _pipeline.Dispatch(message); Assert.AreEqual(message, consumer.Consumed); }
public void The_subscription_should_be_added_for_selective_consumers() { ParticularConsumer consumer = new ParticularConsumer(false); _pipeline.Subscribe(consumer); PingMessage message = new PingMessage(); _pipeline.Dispatch(message); Assert.AreEqual(null, consumer.Consumed); }