示例#1
0
文件: TestJson.cs 项目: klenin/Yuzu
        public void TestInterface()
        {
            var js = new JsonSerializer();
            js.JsonOptions.Indent = "";
            js.JsonOptions.FieldSeparator = "";
            var v1 = new SampleInterfaceField { I = new SampleInterfaced { X = 34 } };
            var result1 = js.ToString(v1);
            Assert.AreEqual("{\"I\":{\"class\":\"YuzuTest.SampleInterfaced, YuzuTest\",\"X\":34}}", result1);

            var w1 = new SampleInterfaceField();
            var jd = new JsonDeserializer();
            jd.FromString(w1, result1);
            Assert.IsInstanceOfType(w1.I, typeof(SampleInterfaced));
            Assert.AreEqual(34, w1.I.X);

            var w1g = (SampleInterfaceField)SampleInterfaceField_JsonDeserializer.Instance.FromString(result1);
            Assert.IsInstanceOfType(w1g.I, typeof(SampleInterfaced));
            Assert.AreEqual(34, w1g.I.X);

            var w1n = (SampleInterfaceField)SampleInterfaceField_JsonDeserializer.Instance.FromString("{\"I\":null}");
            Assert.AreEqual(null, w1n.I);

            var v2 = new List<ISample> { null, new SampleInterfaced { X = 37 } };
            var result2 = js.ToString(v2);
            Assert.AreEqual("[null,{\"class\":\"YuzuTest.SampleInterfaced, YuzuTest\",\"X\":37}]", result2);

            var w2 = new List<ISample>();
            jd.FromString(w2, result2);
            Assert.AreEqual(2, w2.Count);
            Assert.IsNull(w2[0]);
            Assert.AreEqual(37, w2[1].X);

            ISampleField v3 = new SampleInterfacedField { X = 41 };
            js.JsonOptions.SaveRootClass = true;
            var result3 = js.ToString(v3);
            Assert.AreEqual("{\"class\":\"YuzuTest.SampleInterfacedField, YuzuTest\",\"X\":41}", result3);
            var w3 = (ISampleField)jd.FromString(result3);
            Assert.AreEqual(41, w3.X);
        }
示例#2
0
文件: TestBinary.cs 项目: klenin/Yuzu
        public void TestInterface()
        {
            var bs = new BinarySerializer();
            var v1 = new SampleInterfaceField { I = new SampleInterfaced { X = 34 } };
            var result1 = bs.ToBytes(v1);
            Assert.AreEqual(
                "20 01 00 " + XS(typeof(SampleInterfaceField)) + " 01 00 " + XS("I", RoughType.Record) +
                " 01 00 02 00 " + XS(typeof(SampleInterfaced)) + " 01 00 " + XS("X", RoughType.Int) +
                " 01 00 22 00 00 00 00 00 00 00",
                XS(result1));

            var w1 = new SampleInterfaceField();
            var bd = new BinaryDeserializer();
            bd.FromBytes(w1, result1);
            Assert.IsInstanceOfType(w1.I, typeof(SampleInterfaced));
            Assert.AreEqual(34, w1.I.X);

            var w1g = new SampleInterfaceField();
            var bdg = new BinaryDeserializerGen();
            bdg.FromBytes(w1g, result1);
            Assert.IsInstanceOfType(w1g.I, typeof(SampleInterfaced));
            Assert.AreEqual(34, w1g.I.X);

            var w1n = (SampleInterfaceField)bd.FromBytes(new byte[] { 0x20, 01, 00, 01, 00, 00, 00, 00, 00 });
            Assert.AreEqual(null, w1n.I);
            var w1ng = (SampleInterfaceField)bdg.FromBytes(new byte[] { 0x20, 01, 00, 01, 00, 00, 00, 00, 00 });
            Assert.AreEqual(null, w1ng.I);

            var v2 = new List<ISample> { null, new SampleInterfaced { X = 37 } };
            var result2 = bs.ToBytes(v2);
            Assert.AreEqual("21 20 02 00 00 00 00 00 02 00 01 00 25 00 00 00 00 00", XS(result2));

            var w2 = new List<ISample>();
            bd.FromBytes(w2, result2);
            Assert.AreEqual(2, w2.Count);
            Assert.IsNull(w2[0]);
            Assert.AreEqual(37, w2[1].X);

            ISampleField v3 = new SampleInterfacedField { X = 41 };
            var result3 = bs.ToBytes(v3);
            Assert.AreEqual(
                "20 03 00 " + XS(typeof(SampleInterfacedField)) + " 01 00 " + XS("X", RoughType.Int) +
                " 01 00 29 00 00 00 00 00", XS(result3));
            var w3 = (ISampleField)bd.FromBytes(result3);
            Assert.AreEqual(41, w3.X);
        }
示例#3
0
文件: TestJson.cs 项目: klenin/Yuzu
 public void TestGeneric()
 {
     var js = new JsonSerializer();
     js.JsonOptions.Indent = "";
     js.JsonOptions.FieldSeparator = "";
     var v1 = new SampleInterfaceField { I = new SampleInterfacedGeneric<string> { X = 35, G = "qq" } };
     var n = "YuzuTest.SampleInterfacedGeneric`1[[System.String]], YuzuTest";
     var result1 = js.ToString(v1);
     Assert.AreEqual(
         String.Format("{{\"I\":{{\"class\":\"{0}\",\"G\":\"qq\",\"X\":35}}}}", n), result1);
     var w1 = (SampleInterfaceField)(new JsonDeserializer()).FromString(new SampleInterfaceField(), result1);
     Assert.AreEqual(w1.I.X, 35);
     Assert.AreEqual((w1.I as SampleInterfacedGeneric<string>).G, "qq");
     var w1g = (SampleInterfaceField)SampleInterfaceField_JsonDeserializer.Instance.FromString(result1);
     Assert.AreEqual(w1g.I.X, 35);
     Assert.AreEqual((w1g.I as SampleInterfacedGeneric<string>).G, "qq");
 }
示例#4
0
文件: TestBinary.cs 项目: klenin/Yuzu
 public void TestGeneric()
 {
     var bs = new BinarySerializer();
     var v1 = new SampleInterfaceField { I = new SampleInterfacedGeneric<string> { X = 35, G = "qq" } };
     var result1 = bs.ToBytes(v1);
     Assert.AreEqual(
         "20 01 00 " + XS(typeof(SampleInterfaceField)) + " 01 00 " + XS("I", RoughType.Record) +
         " 01 00 02 00 " + XS("YuzuTest.SampleInterfacedGeneric`1[[System.String]], YuzuTest") +
         " 02 00 " + XS("G", RoughType.String, "X", RoughType.Int) +
         " 01 00 " + XS("qq") + " 02 00 23 00 00 00 00 00 00 00",
         XS(result1));
     CheckDeserializers(bd => {
         var w1 = (SampleInterfaceField)bd.FromBytes(new SampleInterfaceField(), result1);
         Assert.AreEqual(w1.I.X, 35);
         Assert.AreEqual((w1.I as SampleInterfacedGeneric<string>).G, "qq");
     });
 }