public void MultiplePackets_1ByteLen_ProcessesMultipleInSingleInvocation()
        {
            var       decoder     = new GameMessageDecoder();
            var       channel     = new EmbeddedChannel(decoder);
            var       buffer      = Unpooled.Buffer();
            const int packetCount = 10;

            for (var i = 0; i < packetCount; i++)
            {
                buffer.WriteBytes(RequestSession);
            }

            channel.WriteInbound(buffer);

            for (var i = 0; i < packetCount; i++)
            {
                var packet = channel.ReadInbound <IByteBuffer>();

                Assert.NotNull(packet);
                Assert.Equal(1, packet.ReaderIndex);
                Assert.Equal(1, packet.ReadableBytes);
                Assert.Equal(1, packet.GetPayloadLength());
                Assert.Equal(32, packet.GetOpcode());
                Assert.Equal(55, packet.ReadByte());
                Assert.Equal(1, packet.ReferenceCount); // TODO: Switch this back to expected=packetCount
            }

            // Verify that there are no more results (there shouldn't be at this point).
            Assert.Null(channel.ReadInbound <IByteBuffer>());
        }
        public void GameMessageDecoderIsNotSharable()
        {
            var decoder = new GameMessageDecoder();

            // DotNetty does not allow sharing of these pipeline items.

            Assert.False(decoder.IsSharable);
        }
        public void DotNettyDoesNotDecreaseReferenceCount()
        {
            var decoder = new GameMessageDecoder();
            var channel = new EmbeddedChannel(decoder);
            var buffer  = Unpooled.Buffer();

            buffer.WriteBytes(RequestSession);
            var startingRefCount = buffer.ReferenceCount;

            channel.WriteInbound(buffer);
            var result = channel.ReadInbound <IByteBuffer>();

            Assert.NotNull(result);
            Assert.Equal(0, buffer.ReadableBytes);
            Assert.Equal(startingRefCount, result.ReferenceCount);
        }
        public void MultiplePackets_1ByteLen_ReadsAllBytesFromUnderlyingBuffer()
        {
            var       decoder     = new GameMessageDecoder();
            var       channel     = new EmbeddedChannel(decoder);
            var       buffer      = Unpooled.Buffer();
            const int packetCount = 10;

            for (var i = 0; i < packetCount; i++)
            {
                buffer.WriteBytes(RequestSession);
            }

            channel.WriteInbound(buffer);

            Assert.Equal(0, buffer.ReadableBytes);
        }