Пример #1
0
        public void one_and_incomplete_nolengthframe()
        {
            string AText = "AAAAAA";
            var    bytes = new byte[13] {
                06, 00, 00, 00, 65, 65, 65, 65, 65, 65, 06, 00, 00
            };
            var incomplete = new byte[3] {
                06, 00, 00
            };
            var buf = AbstructByteBuf.Small();

            buf.Write(bytes);

            var output = new List <object>();

            decoder.Decoder(ctx, buf, output);

            Assert.IsTrue(output != null && output.Count == 1);
            Assert.IsTrue(ctx.IncompleteMessage == null);
            Assert.IsTrue(ctx.IncompleteLength == 3);

            var result     = output[0] as IByteBuf;
            var resultText = System.Text.Encoding.UTF8.GetString(result.GetBytes(), result.ReadIndex, result.Readables());

            Assert.AreEqual(AText, resultText);
        }
Пример #2
0
        public void bytebuf_base_setoffset_test()
        {
            IByteBuf buf = new AbstructByteBuf(256);

            buf.SetOffset(1);
            Assert.AreEqual(buf.Offset, 1);
            Assert.AreEqual(buf.Capacity, 255);

            try
            {
                buf.SetOffset(-1);
                Assert.Fail();
            }
            catch (ArgumentException)
            {
                Assert.IsTrue(true);
            }

            try
            {
                buf.SetOffset(256);
                Assert.Fail();
            }
            catch (ArgumentException)
            {
                Assert.IsTrue(true);
            }
        }
Пример #3
0
        public void one_and_incomplete()
        {
            string AText = "AAAAAA";
            var    bytes = new byte[15] {
                06, 00, 00, 00, 65, 65, 65, 65, 65, 65, 06, 00, 00, 00, 66
            };
            var incomplete = new byte[1] {
                66
            };
            var buf = AbstructByteBuf.Small();

            buf.Write(bytes);

            var output = new List <object>();

            decoder.Decoder(ctx, buf, output);

            Assert.IsTrue(output != null && output.Count == 1);
            Assert.IsTrue(ctx.IncompleteMessage != null);
            Assert.AreEqual(ctx.IncompleteHeader, 6);

            for (int i = 0; i < ctx.IncompleteMessage.Readables(); i++)
            {
                int readindex = ctx.IncompleteMessage.ReadIndex;
                Assert.AreEqual(ctx.IncompleteMessage.GetBytes()[readindex + i], incomplete[i]);
            }

            var result     = output[0] as IByteBuf;
            var resultText = System.Text.Encoding.UTF8.GetString(result.GetBytes(), result.ReadIndex, result.Readables());

            Assert.AreEqual(AText, resultText);
        }
Пример #4
0
        public void bytebuf_base_init_test()
        {
            IByteBuf buf = new AbstructByteBuf(256);

            Assert.AreEqual(buf.Capacity, 256);
            Assert.AreEqual(buf.ReadIndex, 0);
            Assert.AreEqual(buf.WriteIndex, 0);
            Assert.AreEqual(buf.Readables(), 0);
            Assert.AreEqual(buf.Writeables(), 256);
        }
Пример #5
0
        public void bytebuf_base_init_setbytes_offset_test()
        {
            IByteBuf buf = new AbstructByteBuf();

            byte[] arr = new byte[256];
            buf.SetBytes(arr, 10, 64);

            Assert.AreEqual(buf.Offset, 10);
            Assert.AreEqual(buf.ReadIndex, 10);
            Assert.AreEqual(buf.WriteIndex, 10);
            Assert.AreEqual(buf.Readables(), 0);
            Assert.AreEqual(buf.Writeables(), 64);
        }
Пример #6
0
        public void bytebuf_write_array_test()
        {
            IByteBuf buf = new AbstructByteBuf(256);

            byte[] arr = { 0, 1, 2, 3, 4 };

            buf.SetOffset(1);
            buf.Write(arr);

            Assert.AreEqual(buf.Offset, 1);
            Assert.AreEqual(buf.ReadIndex, 1);
            Assert.AreEqual(buf.WriteIndex, 6);
            Assert.AreEqual(buf.Readables(), 5);
            Assert.AreEqual(buf.Writeables(), 250);
        }
Пример #7
0
        public void bytebuf_write_bytebuf_offset_test()
        {
            var buf1 = new AbstructByteBuf(256);
            var buf2 = new AbstructByteBuf(9);

            for (byte i = 0; i < 9; i++)
            {
                buf2.WriteByte(i);
            }

            buf1.SetOffset(1);
            buf1.Write(buf2, 7);

            Assert.AreEqual(buf1.Offset, 1);
            Assert.AreEqual(buf1.ReadIndex, 1);
            Assert.AreEqual(buf1.WriteIndex, 8);
            Assert.AreEqual(buf1.Readables(), 7);
            Assert.AreEqual(buf1.Writeables(), 248);
        }
Пример #8
0
        public void incomplete()
        {
            string AText = "BBBBBB";

            /*
             *
             * 原始数据第一个包 { 06, 00, 00, 00, 66 }
             * 第二个包 {66, 66, 66, 66, 66 }
             * 半包数据 { 66 }
             * 包长 6
             * 包长已读:4
             *
             */

            var bytes1 = new byte[5] {
                06, 00, 00, 00, 66
            };
            var bytes2 = new byte[5] {
                66, 66, 66, 66, 66
            };

            var output = new List <object>();

            //数据包
            var buf = AbstructByteBuf.Small().Write(bytes2);

            //虚构一个半包
            ctx.IncompleteMessage = AbstructByteBuf.Small().WriteByte(66);
            ctx.IncompleteHeader  = 06;
            ctx.IncompleteLength  = 4;

            decoder.Decoder(ctx, buf, output);

            Assert.AreEqual(output.Count, 1);
            var outbuf    = (IByteBuf)output[0];
            var outstring = System.Text.Encoding.UTF8.GetString(outbuf.GetBytes(), outbuf.ReadIndex, outbuf.Readables());

            Assert.AreEqual(outstring, AText);
        }
Пример #9
0
        public void bytebuf_base_return_test()
        {
            IByteBuf buf = new AbstructByteBuf(4);

            buf.SetOffset(1).WriteByte(1).ReadByte();

            Assert.AreEqual(buf.Offset, 1);
            Assert.AreEqual(buf.ReadIndex, 2);
            Assert.AreEqual(buf.WriteIndex, 2);
            Assert.AreEqual(buf.Readables(), 0);
            Assert.AreEqual(buf.Writeables(), 2);
            Assert.AreEqual(buf.Capacity, 3);

            buf.Return();

            Assert.AreEqual(buf.Offset, 0);
            Assert.AreEqual(buf.ReadIndex, 0);
            Assert.AreEqual(buf.WriteIndex, 0);
            Assert.AreEqual(buf.Readables(), 0);
            Assert.AreEqual(buf.Writeables(), 0);
            Assert.AreEqual(buf.Capacity, 0);
            Assert.AreEqual(buf.GetBytes(), AbstructByteBuf.Emtpy);
        }
Пример #10
0
        public void bytebuf_writeread_int_test()
        {
            IByteBuf buf = new AbstructByteBuf(256);

            buf.SetOffset(1);
            buf.Write(1);

            Assert.AreEqual(buf.Offset, 1);
            Assert.AreEqual(buf.ReadIndex, 1);
            Assert.AreEqual(buf.WriteIndex, 5);
            Assert.AreEqual(buf.Readables(), 4);
            Assert.AreEqual(buf.Writeables(), 251);

            int b = buf.ReadInt32();

            Assert.AreEqual(b, 1);

            Assert.AreEqual(buf.Offset, 1);
            Assert.AreEqual(buf.ReadIndex, 5);
            Assert.AreEqual(buf.WriteIndex, 5);
            Assert.AreEqual(buf.Readables(), 0);
            Assert.AreEqual(buf.Writeables(), 251);
        }
Пример #11
0
        public void bytebuf_writeread_byte_test()
        {
            IByteBuf buf = new AbstructByteBuf(256);

            buf.SetOffset(1);
            buf.WriteByte((byte)1);

            Assert.AreEqual(buf.Offset, 1);
            Assert.AreEqual(buf.ReadIndex, 1);
            Assert.AreEqual(buf.WriteIndex, 2);
            Assert.AreEqual(buf.Readables(), 1);
            Assert.AreEqual(buf.Writeables(), 254);

            byte b1 = buf.ReadByte();

            Assert.AreEqual(b1, 1);

            Assert.AreEqual(buf.Offset, 1);
            Assert.AreEqual(buf.ReadIndex, 2);
            Assert.AreEqual(buf.WriteIndex, 2);
            Assert.AreEqual(buf.Readables(), 0);
            Assert.AreEqual(buf.Writeables(), 254);
        }