public void terminated_message_should_not_reach_further_handlers_when_reversed() { List <object> results = new List <object> (); dispatcher.AddMessageHandler(message, CreateHandler.Handler((Action <object>)results.Add, new object[] { 'A' })); dispatcher.AddMessageHandler(message, CreateHandler.Handler((Action <object>)results.Add, new object[] { 'B' })); dispatcher.AddMessageHandler(message, CreateHandler.HandlerThatErrors((Action <object>)results.Add, new object[] { "C (with error)" })); dispatcher.AddMessageHandler(message, CreateHandler.Handler((Action <object>)results.Add, new object[] { 'D' })); dispatcher.DispatchMessage(message, true); Assert.That(results, Is.EqualTo(new object[] { 'D', "C (with error)" }).AsCollection); }
public void sync_handlers_should_run_in_reverse_order() { List <object> results = new List <object>(); foreach (char id in new object[] { 'A', 'B', 'C', 'D' }) { dispatcher.AddMessageHandler(message, CreateHandler.Handler((Action <object>)results.Add, new object[] { id })); } dispatcher.DispatchMessage(message, true); Assert.That(results, Is.EqualTo(new object[] { 'D', 'C', 'B', 'A' }).AsCollection); }
public async Task callback_is_called_once_after_sync_handler() { int callbackCount = 0; dispatcher.AddMessageHandler(message, CreateHandler.Handler()); dispatcher.DispatchMessage(message, delegate() { callbackCount++; }); await Delay(); Assert.AreEqual(callbackCount, 1); }
public async Task async_and_sync_handlers_should_run_in_order_when_reversed() { List <object> results = new List <object> (); dispatcher.AddMessageHandler(message, CreateHandler.AsyncHandler((Action <object>)results.Add, new object[] { 'A' })); dispatcher.AddMessageHandler(message, CreateHandler.Handler((Action <object>)results.Add, new object[] { 'B' })); dispatcher.AddMessageHandler(message, CreateHandler.AsyncHandler((Action <object>)results.Add, new object[] { 'C' })); dispatcher.AddMessageHandler(message, CreateHandler.Handler((Action <object>)results.Add, new object[] { 'D' })); dispatcher.DispatchMessage(message, true); await Delay(200); Assert.That(results, Is.EqualTo(new object[] { 'D', 'C', 'B', 'A' }).AsCollection); }
public void handlers_handle_object() { List <object> expected = new List <object> { "handler1", "handler2", "handler3" }; List <object> actual = new List <object> (); objectProcessor.AddObjectHandler(new InstanceOfMatcher(typeof(String)), CreateHandler.Handler <object>((Action <object>)actual.Add, new object[] { "handler1" })); objectProcessor.AddObjectHandler(new InstanceOfMatcher(typeof(String)), CreateHandler.Handler <object>((Action <object>)actual.Add, new object[] { "handler2" })); objectProcessor.AddObjectHandler(new InstanceOfMatcher(typeof(String)), CreateHandler.Handler <object>((Action <object>)actual.Add, new object[] { "handler3" })); objectProcessor.ProcessObject("string"); Assert.That(actual, Is.EqualTo(expected).AsCollection); }
public async Task async_and_sync_handlers_should_run_in_order() { //TODO: This fails but not everytime... sometimes it's empty List <object> results = new List <object> (); dispatcher.AddMessageHandler(message, CreateHandler.AsyncHandler((Action <object>)results.Add, new object[] { 'A' })); dispatcher.AddMessageHandler(message, CreateHandler.Handler((Action <object>)results.Add, new object[] { 'B' })); dispatcher.AddMessageHandler(message, CreateHandler.AsyncHandler((Action <object>)results.Add, new object[] { 'C' })); dispatcher.AddMessageHandler(message, CreateHandler.Handler((Action <object>)results.Add, new object[] { 'D' })); dispatcher.DispatchMessage(message); await Delay(200); Assert.That(results, Is.EqualTo(new object[] { 'A', 'B', 'C', 'D' }).AsCollection); }
public async Task callback_is_called_once_after_sync_and_async_handlers() { int callbackCount = 0; dispatcher.AddMessageHandler(message, CreateHandler.AsyncHandler()); dispatcher.AddMessageHandler(message, CreateHandler.Handler()); dispatcher.AddMessageHandler(message, CreateHandler.AsyncHandler()); dispatcher.AddMessageHandler(message, CreateHandler.Handler()); dispatcher.DispatchMessage(message, delegate() { callbackCount++; }); await Delay(100); Assert.That(callbackCount, Is.EqualTo(1)); }