Пример #1
0
        public void TestSmallTypes()
        {
            var js = new JsonSerializer();
            var v1 = new SampleSmallTypes { Ch = 'A', Sh = -2000, USh = 2001, B = 198, Sb = -109 };

            js.JsonOptions.Indent = "";
            var result = js.ToString(v1);
            Assert.AreEqual("{\n\"B\":198,\n\"Ch\":\"A\",\n\"Sb\":-109,\n\"Sh\":-2000,\n\"USh\":2001\n}", result);

            var v2 = new SampleSmallTypes();
            var jd = new JsonDeserializer();
            jd.FromString(v2, result);
            Assert.AreEqual(v1.Ch, v2.Ch);
            Assert.AreEqual(v1.USh, v2.USh);
            Assert.AreEqual(v1.Sh, v2.Sh);
            Assert.AreEqual(v1.B, v2.B);
            Assert.AreEqual(v1.Sb, v2.Sb);

            v2 = (SampleSmallTypes)SampleSmallTypes_JsonDeserializer.Instance.FromString(result);
            Assert.AreEqual(v1.Ch, v2.Ch);
            Assert.AreEqual(v1.USh, v2.USh);
            Assert.AreEqual(v1.Sh, v2.Sh);
            Assert.AreEqual(v1.B, v2.B);
            Assert.AreEqual(v1.Sb, v2.Sb);

            XAssert.Throws<YuzuException>(() => jd.FromString(v2, result.Replace("A", "ABC")), "ABC");
            XAssert.Throws<OverflowException>(() => jd.FromString(v2, result.Replace("198", "298")));
            XAssert.Throws<OverflowException>(() => jd.FromString(v2, result.Replace("109", "209")));
            XAssert.Throws<OverflowException>(() => jd.FromString(v2, result.Replace("2000", "40000")));
            XAssert.Throws<OverflowException>(() => jd.FromString(v2, result.Replace("2001", "200000")));

            jd.FromString(v2, "{\n\"B\":255,\n\"Ch\":\"Z\",\n\"Sb\":-128,\n\"Sh\":-32768,\n\"USh\":32767\n}");
            Assert.AreEqual('Z', v2.Ch);
            Assert.AreEqual(32767, v2.USh);
            Assert.AreEqual(-32768, v2.Sh);
            Assert.AreEqual(255, v2.B);
            Assert.AreEqual(-128, v2.Sb);
        }
Пример #2
0
        public void TestSmallTypes()
        {
            var bs = new BinarySerializer();
            var v1 = new SampleSmallTypes { Ch = 'A', Sh = -2000, USh = 2001, B = 198, Sb = -109 };

            var result = bs.ToBytes(v1);
            Assert.AreEqual(
                XS(RoughType.Record) + " 01 00 " + XS(typeof(SampleSmallTypes)) +
                " 05 00 " + XS("B", RoughType.Byte, "Ch", RoughType.Char) + " " +
                XS("Sb", RoughType.SByte, "Sh", RoughType.Short, "USh", RoughType.UShort) +
                " 01 00 C6 02 00 41 03 00 93 04 00 30 F8 05 00 D1 07 00 00", XS(result));

            var v2 = new SampleSmallTypes();
            var bd = new BinaryDeserializer();
            bd.FromBytes(v2, result);
            Assert.AreEqual(v1.Ch, v2.Ch);
            Assert.AreEqual(v1.USh, v2.USh);
            Assert.AreEqual(v1.Sh, v2.Sh);
            Assert.AreEqual(v1.B, v2.B);
            Assert.AreEqual(v1.Sb, v2.Sb);

            v2 = (SampleSmallTypes)((new BinaryDeserializerGen()).FromBytes(result));
            Assert.AreEqual(v1.Ch, v2.Ch);
            Assert.AreEqual(v1.USh, v2.USh);
            Assert.AreEqual(v1.Sh, v2.Sh);
            Assert.AreEqual(v1.B, v2.B);
            Assert.AreEqual(v1.Sb, v2.Sb);

            bd.FromBytes(v2, new byte[] {
                0x20, 01, 00, 01, 00, 255, 02, 00, 65 + 25, 03, 00, 256 - 128,
                04, 00, 00, 128, 05, 00, 255, 127, 00, 00 });
            Assert.AreEqual('Z', v2.Ch);
            Assert.AreEqual(32767, v2.USh);
            Assert.AreEqual(-32768, v2.Sh);
            Assert.AreEqual(255, v2.B);
            Assert.AreEqual(-128, v2.Sb);
        }