Exemple #1
0
        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);
        }
Exemple #2
0
        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);
        }
Exemple #3
0
        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);
        }
Exemple #4
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);
        }
        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);
        }
Exemple #6
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);
        }
Exemple #7
0
        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));
        }