Example #1
0
        public void StackProcessor_CallsSuccessiveProcessors()
        {
            var processor = new StackProcessor();

            var processorCallList = new List <string>();

            Action <T> AddToCallList <T>(object x) => new Action <T>(_ => processorCallList.Add(x.GetType().FullName));

            var processor1 = new PassthroughHandler <DummyMessage, DummyMessage2>();

            processor1.Callback = AddToCallList <DummyMessage>(processor1);

            var processor2 = new PassthroughHandler <DummyMessage2, DummyMessage3>();

            processor2.Callback = AddToCallList <DummyMessage2>(processor2);

            var processor3 = new NoopHandler <DummyMessage3>();

            processor3.Callback = AddToCallList <DummyMessage3>(processor3);

            processor.RegisterHandler(processor1);
            processor.RegisterHandler(processor2);
            processor.RegisterHandler(processor3);

            processor.AddMessage(new DummyMessage());
            processor.ProcessMessages();

            processorCallList.Should().ContainInOrder(
                processor1.GetType().FullName,
                processor2.GetType().FullName,
                processor3.GetType().FullName);
        }
Example #2
0
        public void StackProcessor_WhenProcessorThrows_ThrowsStackProcessorException()
        {
            var processor = new StackProcessor();
            var expectedInnerException = new Exception("Test Exception");

            processor.RegisterHandler(new NoopHandler <DummyMessage>(_ => throw expectedInnerException));

            processor.AddMessage(new DummyMessage());

            processor.Invoking(x => x.ProcessMessages())
            .Should().ThrowExactly <StackProcessorException>()
            .Where(ex => ex.InnerException == expectedInnerException);
        }
Example #3
0
        public void StackProcessor_CallsProcessorWithMessage()
        {
            var processor = new StackProcessor();

            var wasCalled = false;
            var handler   = new NoopHandler <DummyMessage>
            {
                Callback = _ => wasCalled = true
            };

            processor.RegisterHandler(handler);
            processor.AddMessage(new DummyMessage());

            processor.ProcessMessages();

            wasCalled.Should().BeTrue("the message processor should have been called");
        }