public async Task EncodeTest(bool encodeBatchFlag, MessageEncoding encoding)
        {
            var maxMessageSize = 256 * 1024;
            var messages       = NetworkMessageEncoderTests.GenerateSampleMessages(20, encoding);

            var networkMessages = await(encodeBatchFlag
                ? _encoder.EncodeBatchAsync(messages, maxMessageSize)
                : _encoder.EncodeAsync(messages, maxMessageSize)
                                        );

            if (encodeBatchFlag)
            {
                Assert.Equal(1, networkMessages.Count());
                Assert.Equal((uint)210, _encoder.NotificationsProcessedCount);
                Assert.Equal((uint)0, _encoder.NotificationsDroppedCount);
                Assert.Equal((uint)1, _encoder.MessagesProcessedCount);
                Assert.Equal(210, _encoder.AvgNotificationsPerMessage);
            }
            else
            {
                Assert.Equal(210, networkMessages.Count());
                Assert.Equal((uint)210, _encoder.NotificationsProcessedCount);
                Assert.Equal((uint)0, _encoder.NotificationsDroppedCount);
                Assert.Equal((uint)210, _encoder.MessagesProcessedCount);
                Assert.Equal(1, _encoder.AvgNotificationsPerMessage);
            }
        }
        public async Task EncodeTooBigMessageTest(bool encodeBatchFlag, MessageEncoding encoding)
        {
            var maxMessageSize = 100;
            var messages       = NetworkMessageEncoderTests.GenerateSampleMessages(3, encoding);

            var networkMessages = await(encodeBatchFlag
                ? _encoder.EncodeBatchAsync(messages, maxMessageSize)
                : _encoder.EncodeAsync(messages, maxMessageSize)
                                        );

            Assert.Empty(networkMessages);
            Assert.Equal((uint)0, _encoder.NotificationsProcessedCount);
            Assert.Equal((uint)6, _encoder.NotificationsDroppedCount);
            Assert.Equal((uint)0, _encoder.MessagesProcessedCount);
        }