public void ChannelPipeline_should_invoke_HandlerAdded_to_recently_added_handler()
 {
     var pipeline = new DefaultChannelPipeline(TestChannel.Instance);
     var handler = new AllEventsChannelHandler("test", new[] {SupportedEvent.HandlerAdded});
     pipeline.AddFirst(handler.Name, handler);
     var head = ChannelPipelineModel.LastEventHistory(pipeline).Dequeue();
     Assert.Equal(handler.Name, head.Item1);
     Assert.Equal(SupportedEvent.HandlerAdded, head.Item2);
 }
        public void ChannelPipeline_should_invoke_HandlerRemoved_to_removed_handler()
        {
            var pipeline = new DefaultChannelPipeline(TestChannel.Instance);
            var handler = new AllEventsChannelHandler("test",
                new[] {SupportedEvent.HandlerAdded, SupportedEvent.HandlerRemoved});

            // add handler to pipeline first
            pipeline.AddFirst(handler.Name, handler);
            var head = ChannelPipelineModel.LastEventHistory(pipeline).Dequeue();

            // verify that handler added events fired correctly
            Assert.Equal(handler.Name, head.Item1);
            Assert.Equal(SupportedEvent.HandlerAdded, head.Item2);

            // remove handler from pipeline
            var removed = pipeline.RemoveFirst();
            Assert.Equal(handler, removed);

            // verify that handler removed event fired correctly
            var queue = new Queue<Tuple<string, SupportedEvent>>();
            ((NamedChannelHandler) removed).RecordLastFiredEvent(queue);
            Assert.Equal(SupportedEvent.HandlerRemoved, queue.Dequeue().Item2);
        }
 public Property AllEventsChannelHandler_should_correctly_report_all_supported_events(SupportedEvent[] events)
 {
     var handler = new AllEventsChannelHandler("foo", events);
     return events.All(x => handler.SupportsEvent(x)).ToProperty();
 }