예제 #1
0
		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);
		}
예제 #2
0
		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);
		}
예제 #3
0
		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);
		}