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 WhenSendingPresenceOrDataMessage_IncrementsMsgSerial(ProtocolMessage.MessageAction messageAction)
        {
            // Arrange
            var targetMessage1 = new ProtocolMessage(messageAction, "Test");
            var targetMessage2 = new ProtocolMessage(messageAction, "Test");
            var targetMessage3 = new ProtocolMessage(messageAction, "Test");

            // Act
            _ackProcessor.QueueIfNecessary(targetMessage1, null);
            _ackProcessor.QueueIfNecessary(targetMessage2, null);
            _ackProcessor.QueueIfNecessary(targetMessage3, null);

            // Assert
            Assert.Equal(0, targetMessage1.MsgSerial);
            Assert.Equal(1, targetMessage2.MsgSerial);
            Assert.Equal(2, targetMessage3.MsgSerial);
        }