public async Task callback_is_called_once_after_async_handler() { int callbackCount = 0; dispatcher.AddMessageHandler(message, CreateHandler.AsyncHandler()); dispatcher.DispatchMessage(message, delegate() { callbackCount++; }); await Delay(); Assert.That(callbackCount, Is.EqualTo(1)); }
public async Task terminated_async_message_should_not_reach_further_handlers_when_reversed() { List <object> results = new List <object> (); dispatcher.AddMessageHandler(message, CreateHandler.AsyncHandler((Action <object>)results.Add, new object[] { 'A' })); dispatcher.AddMessageHandler(message, CreateHandler.AsyncHandler((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.AsyncHandler((Action <object>)results.Add, new object[] { 'D' })); dispatcher.DispatchMessage(message, true); await Delay(200); Assert.That(results, Is.EqualTo(new object[] { 'D', "C (with error)" }).AsCollection); }
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 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); }