コード例 #1
0
        public void ShouldEqualExpect(byte obj, short version, Codec codec, int tag, int length)
        {
            var buffer  = Unpooled.Buffer(1);
            var options = new TarsConvertOptions()
            {
                Codec   = codec,
                Version = version,
                Tag     = tag
            };

            sut.Serialize(obj, buffer, options);
            Assert.Equal(length, buffer.ReadableBytes);
            var bytes = new byte[length];

            buffer.ReadBytes(bytes);
            Assert.Equal(obj, bytes.Last());
            options.Tag = 0;
            buffer      = buffer.ResetReaderIndex();
            headHandler.ReadHead(buffer, options);
            var result = sut.Deserialize <byte>(buffer, options);

            Assert.Equal(result, obj);
            Assert.Equal(tag, options.Tag);
            Assert.Equal(TarsStructType.Byte, options.TarsType);
        }
コード例 #2
0
        public void WhenZeroShouldBeZERO_TAG(short version, Codec codec, int tag, int length, byte value)
        {
            var buffer  = Unpooled.Buffer(1);
            var options = new TarsConvertOptions()
            {
                Codec   = codec,
                Version = version,
                Tag     = tag
            };

            sut.Serialize(byte.MinValue, buffer, options);
            Assert.Equal(length, buffer.ReadableBytes);
            var bytes = new byte[length];

            buffer.ReadBytes(bytes);
            Assert.Equal(value, bytes.Last());
            options.Tag = 0;
            buffer      = buffer.ResetReaderIndex();
            headHandler.ReadHead(buffer, options);
            var result = sut.Deserialize <byte>(buffer, options);

            Assert.Equal(result, byte.MinValue);
            Assert.Equal(tag, options.Tag);
            Assert.Equal(TarsStructType.Zero, options.TarsType);
        }
コード例 #3
0
        public void SameKeyShouldBeSingle(short version, Codec codec, int tag)
        {
            var buffer  = Unpooled.Buffer(1);
            var options = new TarsConvertOptions()
            {
                Codec   = codec,
                Version = version,
                Tag     = tag
            };

            headHandler.Reserve(buffer, 8);
            headHandler.WriteHead(buffer, TarsStructType.Map, options.Tag);
            buffer.WriteInt(2);
            for (int i = 0; i < 2; i++)
            {
                options.Tag = 0;
                sut.Serialize("str", buffer, options);
                options.Tag = 1;
                sut.Serialize("ok" + i.ToString(), buffer, options);
            }
            headHandler.ReadHead(buffer, options);
            var result = sut.Deserialize <IDictionary <string, string> >(buffer, options);

            Assert.Single(result);
            Assert.Equal("ok1", result["str"]);
            Assert.Equal(tag, options.Tag);
            Assert.Equal(TarsStructType.Map, options.TarsType);
        }
コード例 #4
0
        public void WhenByteEnumShouldEqualExpect(short version, Codec codec, int tag)
        {
            var enums = new ByteEnum[] { ByteEnum.A, ByteEnum.B, ByteEnum.C };
            var types = new byte[] { TarsStructType.Zero, TarsStructType.Byte, TarsStructType.Byte };

            for (int i = 0; i < enums.Length; i++)
            {
                var item    = enums[i];
                var buffer  = Unpooled.Buffer(1);
                var options = new TarsConvertOptions()
                {
                    Codec   = codec,
                    Version = version,
                    Tag     = tag,
                };
                sut.Serialize(item, buffer, options);
                Assert.True(options.HasValue);
                Assert.True(buffer.ReadableBytes > 0);
                options.Tag = 0;
                headHandler.ReadHead(buffer, options);
                Assert.Equal(types[i], options.TarsType);
                Assert.Equal(tag, options.Tag);
                Assert.Equal(item, sut.Deserialize <ByteEnum>(buffer, options));
            }
        }
コード例 #5
0
        public void ShouldEqualExpect(byte type, int tag)
        {
            var buffer = Unpooled.Buffer(2);

            sut.WriteHead(buffer, type, tag);
            var options = new TarsConvertOptions();

            sut.ReadHead(buffer, options);
            Assert.Equal(type, options.TarsType);
            Assert.Equal(tag, options.Tag);
        }
コード例 #6
0
        public void ShouldOnlyCanDeserializeByteArray(short version, Codec codec, byte tarsStructType, string error)
        {
            var buffer  = Unpooled.WrappedBuffer(new byte[] { 255 });
            var options = new TarsConvertOptions()
            {
                Codec    = codec,
                Version  = version,
                TarsType = tarsStructType
            };
            var ex = Assert.Throws <TarsDecodeException>(() => sut.Deserialize <IByteBuffer>(buffer, options));

            Assert.Equal(error, ex.Message);
        }
コード例 #7
0
        public void WhenNoValueShouldNoBytes(short version, Codec codec, int tag, byte value)
        {
            var buffer  = Unpooled.Buffer(1);
            var options = new TarsConvertOptions()
            {
                Codec    = codec,
                Version  = version,
                Tag      = tag,
                HasValue = false
            };

            sut.Serialize(value, buffer, options);
            Assert.Equal(0, buffer.ReadableBytes);
        }
コード例 #8
0
        public void WhenNullShouldBeNoBytes(short version, Codec codec, int tag)
        {
            var buffer  = Unpooled.Buffer(1);
            var options = new TarsConvertOptions()
            {
                Codec   = codec,
                Version = version,
                Tag     = tag,
            };

            sut.Serialize <IByteBuffer>(null, buffer, options);
            Assert.True(options.HasValue);
            Assert.Equal(0, buffer.ReadableBytes);
        }
コード例 #9
0
        public void WhenNoValueShouldNoBytes(short version, Codec codec, int tag)
        {
            var buffer  = Unpooled.Buffer(1);
            var options = new TarsConvertOptions()
            {
                Codec   = codec,
                Version = version,
                Tag     = tag
            };
            string str = null;

            sut.Serialize(str, buffer, options);
            Assert.Equal(0, buffer.ReadableBytes);
        }
コード例 #10
0
        public void WhenNullShouldBeEmpty(short version, Codec codec, int tag)
        {
            var buffer  = Unpooled.Buffer(1);
            var options = new TarsConvertOptions()
            {
                Codec   = codec,
                Version = version,
                Tag     = tag,
            };
            IDictionary <string, string> nullable = null;

            sut.Serialize(nullable, buffer, options);
            Assert.True(options.HasValue);
            Assert.Equal(0, buffer.ReadableBytes);
        }
コード例 #11
0
        public void UniAttributeArgumentExceptionTest(Codec codec, int tag)
        {
            var test = new TestTarsConvert();
            var sut  = new UniAttributeV2(test.ConvertRoot, test.HeadHandler)
            {
                Temp = new Dictionary <string, IDictionary <string, IByteBuffer> >(3)
            };
            var options = new TarsConvertOptions()
            {
                Codec   = codec,
                Version = TarsCodecsVersion.V2,
                Tag     = tag,
            };
            var ex = Assert.Throws <ArgumentException>(() => sut.Put(null, 1, typeof(int), options));

            Assert.Equal("put key can not be null", ex.Message);
        }
コード例 #12
0
        public void ShouldEqualExpect(long obj, short version, Codec codec, int tag, byte tarsStructType)
        {
            var buffer  = Unpooled.Buffer(1);
            var options = new TarsConvertOptions()
            {
                Codec   = codec,
                Version = version,
                Tag     = tag
            };

            sut.Serialize(Task.FromResult(obj), buffer, options);
            headHandler.ReadHead(buffer, options);
            var result = sut.Deserialize <Task <long> >(buffer, options);

            Assert.Equal(obj, result.Result);
            Assert.Equal(tag, options.Tag);
            Assert.Equal(tarsStructType, options.TarsType);
        }
コード例 #13
0
        public void WhenNullableShouldEqualExpect(long obj, short version, Codec codec, int tag, byte tarsStructType)
        {
            var buffer  = Unpooled.Buffer(1);
            var options = new TarsConvertOptions()
            {
                Codec   = codec,
                Version = version,
                Tag     = tag
            };
            long?nullable = obj;

            sut.Serialize(nullable, buffer, options);
            headHandler.ReadHead(buffer, options);
            var result = sut.Deserialize <long?>(buffer, options);

            Assert.Equal(obj, result);
            Assert.Equal(tag, options.Tag);
            Assert.Equal(tarsStructType, options.TarsType);
        }
コード例 #14
0
        public void WhenHasBytesShouldNotEmpty(short version, Codec codec, int tag, string str)
        {
            var buffer  = Unpooled.Buffer(1);
            var options = new TarsConvertOptions()
            {
                Codec   = codec,
                Version = version,
                Tag     = tag,
            };

            sut.Serialize(Unpooled.WrappedBuffer(Encoding.UTF8.GetBytes(str)), buffer, options);
            Assert.True(options.HasValue);
            Assert.True(buffer.ReadableBytes > 0);
            options.Tag = 0;
            headHandler.ReadHead(buffer, options);
            Assert.Equal(TarsStructType.ByteArray, options.TarsType);
            Assert.Equal(tag, options.Tag);
            Assert.Equal(str, Encoding.UTF8.GetString(sut.Deserialize <IByteBuffer>(buffer, options).Slice().Array));
        }
コード例 #15
0
        public void WhenEmptyShouldBeEmpty(short version, Codec codec, int tag)
        {
            var buffer  = Unpooled.Buffer(1);
            var options = new TarsConvertOptions()
            {
                Codec   = codec,
                Version = version,
                Tag     = tag,
            };

            sut.Serialize(Unpooled.Empty, buffer, options);
            Assert.True(options.HasValue);
            Assert.True(buffer.ReadableBytes > 0);
            options.Tag = 0;
            headHandler.ReadHead(buffer, options);
            Assert.Equal(TarsStructType.ByteArray, options.TarsType);
            Assert.Equal(tag, options.Tag);
            Assert.Equal(Unpooled.Empty, sut.Deserialize <IByteBuffer>(buffer, options));
        }
コード例 #16
0
        public void ShouldEqualExpect(bool obj, short version, Codec codec, int tag, byte byteValue, byte tarsStructType)
        {
            var buffer  = Unpooled.Buffer(1);
            var options = new TarsConvertOptions()
            {
                Codec   = codec,
                Version = version,
                Tag     = tag
            };

            sut.Serialize(obj, buffer, options);
            headHandler.ReadHead(buffer, options);
            var result = sut.Deserialize <byte>(buffer, options);

            Assert.Equal(byteValue, result);
            Assert.Equal(tag, options.Tag);
            Assert.Equal(tarsStructType, options.TarsType);
            buffer = buffer.ResetReaderIndex();
            headHandler.ReadHead(buffer, options);
            Assert.Equal(obj, sut.Deserialize <bool>(buffer, options));
        }
コード例 #17
0
        public void UniAttributeTest(Codec codec, int tag)
        {
            var test = new TestTarsConvert();
            var sut  = new UniAttributeV2(test.ConvertRoot, test.HeadHandler)
            {
                Temp = new Dictionary <string, IDictionary <string, IByteBuffer> >(3)
            };
            var options = new TarsConvertOptions()
            {
                Codec   = codec,
                Version = TarsCodecsVersion.V2,
                Tag     = tag,
            };

            sut.Put(string.Empty, 1, typeof(int), options);
            sut.Put("23", "66", typeof(string), options);
            sut.Put("23", "23", typeof(string), options);
            sut.Put("dd", 0d, typeof(double), options);
            sut.Put("ddd", 0d, typeof(double), options);
            sut.Put("ddd", null, typeof(double), options);
            var buf = Unpooled.Buffer(128);

            sut.Serialize(buf, options);
            sut.Temp = null;
            headHandler.ReadHead(buf, options);
            sut.Deserialize(buf, options);
            Assert.Equal(3, sut.Temp.Count);
            var buffer = sut.Temp[string.Empty][string.Empty];

            test.HeadHandler.ReadHead(buffer, options);
            Assert.Equal(1, test.ConvertRoot.Deserialize <int>(buffer, options));
            buffer = sut.Temp["23"][string.Empty];
            test.HeadHandler.ReadHead(buffer, options);
            Assert.Equal("23", test.ConvertRoot.Deserialize <string>(buffer, options));
            buffer = sut.Temp["dd"][string.Empty];
            test.HeadHandler.ReadHead(buffer, options);
            Assert.Equal(0d, test.ConvertRoot.Deserialize <double>(buffer, options));
        }
コード例 #18
0
        public void DictShouldEqualExpect(short version, Codec codec, int tag)
        {
            var buffer  = Unpooled.Buffer(1);
            var options = new TarsConvertOptions()
            {
                Codec   = codec,
                Version = version,
                Tag     = tag
            };
            var dict = new Dictionary <string, string>
            {
                { "str", "ok" }
            };

            sut.Serialize(dict, buffer, options);
            headHandler.ReadHead(buffer, options);
            var result = sut.Deserialize <Dictionary <string, string> >(buffer, options);

            Assert.Single(result);
            Assert.Equal("ok", result["str"]);
            Assert.Equal(tag, options.Tag);
            Assert.Equal(TarsStructType.Map, options.TarsType);
        }
コード例 #19
0
        public void ShouldEqualExpect(short version, Codec codec, int tag, int age, string name)
        {
            var buffer  = Unpooled.Buffer(1);
            var options = new TarsConvertOptions()
            {
                Codec   = codec,
                Version = version,
                Tag     = tag
            };
            TestData data = new TestData()
            {
                Age  = age,
                Name = name
            };

            sut.Serialize(data, buffer, options);
            headHandler.ReadHead(buffer, options);
            var result = sut.Deserialize <TestData>(buffer, options);

            Assert.Equal(tag, options.Tag);
            Assert.Equal(age, result.Age);
            Assert.Equal(name, result.Name);
        }
コード例 #20
0
        public void ListShouldEqualExpect(short version, Codec codec, int tag)
        {
            var buffer  = Unpooled.Buffer(1);
            var options = new TarsConvertOptions()
            {
                Codec   = codec,
                Version = version,
                Tag     = tag
            };
            var list = new List <string>()
            {
                "str", "ok"
            };

            sut.Serialize(list, buffer, options);
            headHandler.ReadHead(buffer, options);
            var result = sut.Deserialize <List <string> >(buffer, options);

            Assert.Equal(2, result.Count);
            Assert.Equal("str", result[0]);
            Assert.Equal("ok", result[1]);
            Assert.Equal(tag, options.Tag);
            Assert.Equal(TarsStructType.List, options.TarsType);
        }