Ejemplo n.º 1
0
        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));
        }
Ejemplo n.º 2
0
        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);
        }
Ejemplo n.º 3
0
        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);
        }
Ejemplo n.º 4
0
        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);
        }