public void MultipleHandlers_OneEvent()
        {
            var bus        = new DefaultEventBus();
            var logStream1 = new List <LogEvent>();
            var logStream2 = new List <LogEvent>();
            var handler1   = new LogEventHandler1(logStream1);
            var handler2   = new LogEventHandler2(logStream2);

            bus.Subscribe <LogEvent, LogEventHandler1>(handler1);
            bus.Subscribe <LogEvent, LogEventHandler2>(handler2);
            var ev  = new LogEvent("log");
            var res = bus.Publish(ev);

            Assert.IsTrue(logStream1.Count == 1,
                          "There must be one log item in stream1");

            Assert.IsTrue(logStream1[0].Text.Equals(ev.Text, StringComparison.Ordinal),
                          "Log item's text aren't equal in stream1");

            Assert.IsTrue(logStream2.Count == 1,
                          "There must be one log item in stream2");

            Assert.IsTrue(logStream2[0].Text.Equals(ev.Text, StringComparison.Ordinal),
                          "Log item's text aren't equal in stream2");

            Assert.IsNotNull(res,
                             "Event handler was not found");

            Assert.IsNotNull(res.CatchAllResults,
                             "Catch-all handlers must not be null");

            Assert.IsTrue(res.CatchAllResults.Length == 0,
                          "There must be no catch-all results");

            Assert.IsTrue(res.StartedAt <= res.FinishedAt,
                          "StartedAt > FinishedAt!");

            Assert.IsTrue(res.Duration.Ticks >= 0,
                          "Duration is negative");

            Assert.IsNotNull(res.HandlerResults,
                             "Handler result is null");

            Assert.IsTrue(res.HandlerResults.Length == 2,
                          "Handler result is not added");

            Assert.IsTrue(res.HandlerResults.Any(a => a.Handler.Equals(handler1)),
                          "handler1 does not exist in result");

            Assert.IsTrue(res.HandlerResults.Any(a => a.Handler.Equals(handler2)),
                          "handler2 does not exist in result");

            bus.Dispose();
        }
        public void OneHandler_OneEvent()
        {
            var bus       = new DefaultEventBus();
            var logStream = new List <LogEvent>();
            var handler   = new LogEventHandler1(logStream);

            bus.Subscribe <LogEvent, LogEventHandler1>(handler);
            var ev  = new LogEvent("log-1");
            var res = bus.Publish(ev);

            Assert.IsTrue(logStream.Count == 1,
                          "There must be one log item in stream");

            Assert.IsTrue(logStream[0].Text.Equals(ev.Text, StringComparison.Ordinal),
                          "Log item's text aren't equal");

            Assert.IsNotNull(res,
                             "Event handler was not found");

            Assert.IsNotNull(res.CatchAllResults,
                             "Catch-all handlers must not be null");

            Assert.IsTrue(res.CatchAllResults.Length == 0,
                          "There must be no catch-all results");

            Assert.IsTrue(res.StartedAt <= res.FinishedAt,
                          "StartedAt > FinishedAt!");

            Assert.IsTrue(res.Duration.Ticks >= 0,
                          "Duration is negative");

            Assert.IsNotNull(res.HandlerResults,
                             "Handler result is null");

            Assert.IsTrue(res.HandlerResults.Length == 1,
                          "Handler result is not added");

            Assert.IsTrue(res.HandlerResults[0].Handler.Equals(handler),
                          "Handler in result is not equal to the actual handler!");

            bus.Dispose();
        }