public void Can_publish_events_by_type() { var handled = 0; var hub = new MessageHub(); hub.Subscribe <InheritedMessage>(e => handled++); object @event = new InheritedMessage { Id = 123, Value = "ABC" }; var sent = hub.Publish(@event); Assert.True(sent, "did not send event to a known subscription"); Assert.Equal(1, handled); }
public void Can_handle_error_with_callback() { var errors = 0; var hub = new MessageHub(); var sent = false; // SubscribeWithDelegate: { hub.Subscribe <InheritedMessage>(e => throw new Exception(), (m, ex) => { errors++; }); object @event = new InheritedMessage { Id = 123, Value = "ABC" }; sent = hub.Publish(@event); Assert.False(sent, "publishing an exception should bubble as false to the publish result"); Assert.Equal(1, errors); } // Subscribe (manifold): { var handler = new ManifoldHierarchicalMessageHandler(); hub.Subscribe(handler, (m, ex) => { errors++; }); sent = hub.Publish(new ErrorMessage { Error = true }); Assert.False(sent); Assert.Equal(2, errors); } // SubscribeWithInterface: { hub.Subscribe(new ThrowingHandler()); sent = hub.Publish(new ErrorMessage { Error = true }); Assert.False(sent); Assert.Equal(3, errors); } }
public bool Handle(InheritedMessage message) { HandledInherited++; return(true); }