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); }
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); }
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"); }
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"); }); }