Example #1
0
        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);
        }
Example #2
0
        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);
        }