예제 #1
0
        public void TestTrim()
        {
            var buf = new x2net.Buffer();

            buf.EnsureCapacity(buf.BlockSize);  // numBlocks + 1

            buf.Position = 24;

            // front <= pos
            buf.Trim();

            Assert.Equal(buf.BlockSize - 24, buf.Length);
            Assert.Equal(0, buf.Position);

            buf.Position = (int)buf.Length;

            // reset
            buf.Trim();

            Assert.Equal(0, buf.Length);
            Assert.Equal(0, buf.Position);

            buf.EnsureCapacity(buf.BlockSize);

            buf.MarkToRead(1024);
            buf.Position = 24;

            // front <= marker
            buf.Trim();

            Assert.Equal(buf.BlockSize - 1024, buf.Length);
            Assert.Equal(0, buf.Position);
        }
예제 #2
0
        public void TestVariableLengthInt32()
        {
            //using (var stream = new MemoryStream())
            {
                int          i, bytes;
                var          stream       = new x2net.Buffer();
                Serializer   serializer   = new Serializer(stream);
                Deserializer deserializer = new Deserializer(stream);

                // Boundary value tests

                serializer.Write(0);
                serializer.Write(-1);
                serializer.Write(Int32.MaxValue);
                serializer.Write(Int32.MinValue);

                stream.Rewind();
                //stream.Seek(0, SeekOrigin.Begin);

                bytes = deserializer.Read(out i);
                Assert.Equal(1, bytes);
                Assert.Equal(0, i);

                bytes = deserializer.Read(out i);
                Assert.Equal(1, bytes);
                Assert.Equal(-1, i);

                bytes = deserializer.Read(out i);
                Assert.Equal(5, bytes);
                Assert.Equal(Int32.MaxValue, i);

                bytes = deserializer.Read(out i);
                Assert.Equal(5, bytes);
                Assert.Equal(Int32.MinValue, i);

                stream.Trim();
                //stream.SetLength(0);

                // Intermediate value tests

                serializer.Write(0x00003f80 >> 1);  // 2
                serializer.Write(0x001fc000 >> 1);  // 3
                serializer.Write(0x0fe00000 >> 1);  // 4

                stream.Rewind();
                //stream.Seek(0, SeekOrigin.Begin);

                bytes = deserializer.Read(out i);
                Assert.Equal(2, bytes);
                Assert.Equal(0x00003f80 >> 1, i);

                bytes = deserializer.Read(out i);
                Assert.Equal(3, bytes);
                Assert.Equal(0x001fc000 >> 1, i);

                bytes = deserializer.Read(out i);
                Assert.Equal(4, bytes);
                Assert.Equal(0x0fe00000 >> 1, i);
            }
        }
예제 #3
0
        public void TestFloat64()
        {
            //using (var stream = new MemoryStream())
            {
                double       d;
                var          stream       = new x2net.Buffer();
                Serializer   serializer   = new Serializer(stream);
                Deserializer deserializer = new Deserializer(stream);

                // Boundary value tests

                serializer.Write(0.0);
                serializer.Write(Double.Epsilon);
                serializer.Write(Double.MinValue);
                serializer.Write(Double.MaxValue);
                serializer.Write(Double.NegativeInfinity);
                serializer.Write(Double.PositiveInfinity);
                serializer.Write(Double.NaN);

                stream.Rewind();
                //stream.Seek(0, SeekOrigin.Begin);

                deserializer.Read(out d);
                Assert.Equal(0.0, d);
                deserializer.Read(out d);
                Assert.Equal(Double.Epsilon, d);
                deserializer.Read(out d);
                Assert.Equal(Double.MinValue, d);
                deserializer.Read(out d);
                Assert.Equal(Double.MaxValue, d);
                deserializer.Read(out d);
                Assert.Equal(Double.NegativeInfinity, d);
                deserializer.Read(out d);
                Assert.Equal(Double.PositiveInfinity, d);
                deserializer.Read(out d);
                Assert.Equal(Double.NaN, d);

                stream.Trim();
                //stream.SetLength(0);

                // Intermediate value tests

                serializer.Write(0.001234);
                serializer.Write(8765.4321);

                stream.Rewind();
                //stream.Seek(0, SeekOrigin.Begin);

                deserializer.Read(out d);
                Assert.Equal(0.001234, d);
                deserializer.Read(out d);
                Assert.Equal(8765.4321, d);
            }
        }
예제 #4
0
        public void TestVariableLengthInt64()
        {
            //using (var stream = new MemoryStream())
            {
                var          stream       = new x2net.Buffer();
                Serializer   serializer   = new Serializer(stream);
                Deserializer deserializer = new Deserializer(stream);

                // Boundary value tests

                serializer.Write(0L);
                serializer.Write(-1L);
                serializer.Write(Int64.MaxValue);
                serializer.Write(Int64.MinValue);

                stream.Rewind();
                //stream.Seek(0, SeekOrigin.Begin);

                long l;
                long bytes = deserializer.Read(out l);
                Assert.Equal(1, bytes);
                Assert.Equal(0L, l);

                bytes = deserializer.Read(out l);
                Assert.Equal(1, bytes);
                Assert.Equal(-1L, l);

                bytes = deserializer.Read(out l);
                Assert.Equal(10, bytes);
                Assert.Equal(Int64.MaxValue, l);

                bytes = deserializer.Read(out l);
                Assert.Equal(10, bytes);
                Assert.Equal(Int64.MinValue, l);

                stream.Trim();
                //stream.SetLength(0);

                // Intermediate value tests

                serializer.Write(0x00003f80L >> 1);         // 2
                serializer.Write(0x001fc000L >> 1);         // 3
                serializer.Write(0x0fe00000L >> 1);         // 4
                serializer.Write(0x00000007f0000000L >> 1); // 5
                serializer.Write(0x000003f800000000L >> 1); // 6
                serializer.Write(0x0001fc0000000000L >> 1); // 7
                serializer.Write(0x00fe000000000000L >> 1); // 8
                serializer.Write(0x7f00000000000000L >> 1); // 9

                stream.Rewind();
                //stream.Seek(0, SeekOrigin.Begin);

                bytes = deserializer.Read(out l);
                Assert.Equal(2, bytes);
                Assert.Equal(0x00003f80L >> 1, l);

                bytes = deserializer.Read(out l);
                Assert.Equal(3, bytes);
                Assert.Equal(0x001fc000L >> 1, l);

                bytes = deserializer.Read(out l);
                Assert.Equal(4, bytes);
                Assert.Equal(0x0fe00000L >> 1, l);

                bytes = deserializer.Read(out l);
                Assert.Equal(5, bytes);
                Assert.Equal(0x00000007f0000000L >> 1, l);

                bytes = deserializer.Read(out l);
                Assert.Equal(6, bytes);
                Assert.Equal(0x000003f800000000L >> 1, l);

                bytes = deserializer.Read(out l);
                Assert.Equal(7, bytes);
                Assert.Equal(0x0001fc0000000000L >> 1, l);

                bytes = deserializer.Read(out l);
                Assert.Equal(8, bytes);
                Assert.Equal(0x00fe000000000000L >> 1, l);

                bytes = deserializer.Read(out l);
                Assert.Equal(9, bytes);
                Assert.Equal(0x7f00000000000000L >> 1, l);
            }
        }