Example #1
0
        public void WhenSendingMessage_AckCallbackCalled_ForMultipleMessages()
        {
            // Arrange
            AcknowledgementProcessor        target    = new AcknowledgementProcessor(new Connection(new AblyRealtime(ValidKey)));
            List <Tuple <bool, ErrorInfo> > callbacks = new List <Tuple <bool, ErrorInfo> >();

            // Act
            target.QueueIfNecessary(new ProtocolMessage(ProtocolMessage.MessageAction.Message, "Test"), (ack, err) => { if (callbacks.Count == 0)
                                                                                                                        {
                                                                                                                            callbacks.Add(Tuple.Create(ack, err));
                                                                                                                        }
                                    });
            target.QueueIfNecessary(new ProtocolMessage(ProtocolMessage.MessageAction.Message, "Test"), (ack, err) => { if (callbacks.Count == 1)
                                                                                                                        {
                                                                                                                            callbacks.Add(Tuple.Create(ack, err));
                                                                                                                        }
                                    });
            target.QueueIfNecessary(new ProtocolMessage(ProtocolMessage.MessageAction.Message, "Test"), (ack, err) => { if (callbacks.Count == 2)
                                                                                                                        {
                                                                                                                            callbacks.Add(Tuple.Create(ack, err));
                                                                                                                        }
                                    });
            target.OnMessageReceived(new ProtocolMessage(ProtocolMessage.MessageAction.Ack)
            {
                MsgSerial = 0, Count = 3
            });

            // Assert
            Assert.Equal(3, callbacks.Count);
            Assert.True(callbacks.TrueForAll(c => c.Item1));         // Ack
            Assert.True(callbacks.TrueForAll(c => c.Item2 == null)); // No error
        }
Example #2
0
        public void WhenSendingMessage_NackCallbackCalled_ForMultipleMessages_WithError()
        {
            // Arrange
            AcknowledgementProcessor        target    = new AcknowledgementProcessor();
            List <Tuple <bool, ErrorInfo> > callbacks = new List <Tuple <bool, ErrorInfo> >();
            ErrorInfo error = new ErrorInfo("reason", 123);

            // Act
            target.SendMessage(new ProtocolMessage(ProtocolMessage.MessageAction.Message, "Test"), (ack, err) => { if (callbacks.Count == 0)
                                                                                                                   {
                                                                                                                       callbacks.Add(Tuple.Create(ack, err));
                                                                                                                   }
                               });
            target.SendMessage(new ProtocolMessage(ProtocolMessage.MessageAction.Message, "Test"), (ack, err) => { if (callbacks.Count == 1)
                                                                                                                   {
                                                                                                                       callbacks.Add(Tuple.Create(ack, err));
                                                                                                                   }
                               });
            target.SendMessage(new ProtocolMessage(ProtocolMessage.MessageAction.Message, "Test"), (ack, err) => { if (callbacks.Count == 2)
                                                                                                                   {
                                                                                                                       callbacks.Add(Tuple.Create(ack, err));
                                                                                                                   }
                               });
            target.OnMessageReceived(new ProtocolMessage(ProtocolMessage.MessageAction.Nack)
            {
                MsgSerial = 0, Count = 3, Error = error
            });

            // Assert
            Assert.Equal(3, callbacks.Count);
            Assert.True(callbacks.TrueForAll(c => !c.Item1));                               // Nack
            Assert.True(callbacks.TrueForAll(c => object.ReferenceEquals(c.Item2, error))); // Error
        }
Example #3
0
        public void WhenReceivingAckOrNackMessage_ShouldHandleAction(ProtocolMessage.MessageAction action)
        {
            // Act
            bool result = _ackProcessor.OnMessageReceived(new ProtocolMessage(action));

            // Assert
            Assert.True(result);
        }
Example #4
0
        public void WhenSendingMessage_NackCallbackCalled()
        {
            // Arrange
            AcknowledgementProcessor        target    = new AcknowledgementProcessor();
            List <Tuple <bool, ErrorInfo> > callbacks = new List <Tuple <bool, ErrorInfo> >();
            long msgSerial = 0;

            // Act
            target.SendMessage(new ProtocolMessage(ProtocolMessage.MessageAction.Message, "Test"), (ack, err) => { if (callbacks.Count == 0)
                                                                                                                   {
                                                                                                                       callbacks.Add(Tuple.Create(ack, err));
                                                                                                                   }
                               });
            target.OnMessageReceived(new ProtocolMessage(ProtocolMessage.MessageAction.Nack)
            {
                MsgSerial = msgSerial++, Count = 1
            });

            target.SendMessage(new ProtocolMessage(ProtocolMessage.MessageAction.Message, "Test"), (ack, err) => { if (callbacks.Count == 1)
                                                                                                                   {
                                                                                                                       callbacks.Add(Tuple.Create(ack, err));
                                                                                                                   }
                               });
            target.OnMessageReceived(new ProtocolMessage(ProtocolMessage.MessageAction.Nack)
            {
                MsgSerial = msgSerial++, Count = 1
            });

            target.SendMessage(new ProtocolMessage(ProtocolMessage.MessageAction.Message, "Test"), (ack, err) => { if (callbacks.Count == 2)
                                                                                                                   {
                                                                                                                       callbacks.Add(Tuple.Create(ack, err));
                                                                                                                   }
                               });
            target.OnMessageReceived(new ProtocolMessage(ProtocolMessage.MessageAction.Nack)
            {
                MsgSerial = msgSerial++, Count = 1
            });

            // Assert
            Assert.Equal(3, callbacks.Count);
            Assert.True(callbacks.TrueForAll(c => !c.Item1));        // Nack
            Assert.True(callbacks.TrueForAll(c => c.Item2 != null)); // Error
        }
Example #5
0
        public void WhenReceiveMessage_HandleAction(ProtocolMessage.MessageAction action)
        {
            // Arrange
            AcknowledgementProcessor target = new AcknowledgementProcessor();

            // Act
            bool result = target.OnMessageReceived(new ProtocolMessage(action));

            // Assert
            Assert.True(result);
        }