public void TestAlias() { var js = new JsonSerializer(); js.JsonOptions.Indent = ""; js.JsonOptions.FieldSeparator = ""; js.Options.TagMode = TagMode.Aliases; var v = new SampleTree { Value = 9 }; var result = js.ToString(v); Assert.AreEqual("{\"a\":9,\"b\":null}", result); js.Options.TagMode = TagMode.Names; var result1 = js.ToString(v); Assert.AreEqual("{\"Value\":9,\"Children\":null}", result1); js.Options.TagMode = TagMode.Ids; var result2 = js.ToString(v); Assert.AreEqual("{\"AAAB\":9,\"AAAC\":null}", result2); var prev = IdGenerator.GetNextId(); for (int i = 0; i < 2 * 52 - 5; ++i) { var next = IdGenerator.GetNextId(); Assert.IsTrue(String.CompareOrdinal(prev, next) < 0); prev = next; } Assert.AreEqual("AABz", IdGenerator.GetNextId()); var jd = new JsonDeserializer(); jd.Options.TagMode = TagMode.Aliases; var w = new SampleTree(); jd.FromString(w, result); Assert.AreEqual(9, w.Value); Assert.AreEqual(null, w.Children); }
public void TestList() { var js = new JsonSerializer(); js.JsonOptions.Indent = ""; js.Options.TagMode = TagMode.Names; var jd = new JsonDeserializer(); jd.Options.TagMode = TagMode.Names; var v0 = new SampleList { E = new List<string> { "a", "b", "c" } }; var result0 = js.ToString(v0); Assert.AreEqual("{\n\"E\":[\n\"a\",\n\"b\",\n\"c\"\n]\n}", result0); var w0 = new SampleList(); jd.FromString(w0, result0); CollectionAssert.AreEqual(v0.E, w0.E); var v1 = new SampleTree { Value = 11, Children = new List<SampleTree>() }; Assert.AreEqual("{\n\"Value\":11,\n\"Children\":[]\n}", js.ToString(v1)); var w1 = new SampleTree(); jd.FromString(w1, js.ToString(v1)); Assert.AreEqual(0, w1.Children.Count); var v2 = new SampleTree { Value = 11, Children = new List<SampleTree> { new SampleTree { Value = 12, Children = new List<SampleTree>(), }, new SampleTree { Value = 13, } } }; var result2 = js.ToString(v2); Assert.AreEqual( "{\n\"Value\":11,\n\"Children\":[\n" + "{\n\"Value\":12,\n\"Children\":[]\n},\n" + "{\n\"Value\":13,\n\"Children\":null\n}\n" + "]\n}", result2); SampleTree w2 = new SampleTree(); jd.FromString(w2, result2); Assert.AreEqual(v2.Value, w2.Value); Assert.AreEqual(v2.Children.Count, w2.Children.Count); Assert.AreEqual(v2.Children[0].Value, w2.Children[0].Value); Assert.AreEqual(v2.Children[1].Children, w2.Children[1].Children); Assert.AreEqual("{\n}", js.ToString(new SampleEmptyList())); Assert.AreEqual("{\n\"E\":null\n}", js.ToString(new SampleEmptyList { E = null })); }
public void TestIndentation() { var js = new JsonSerializer(); js.JsonOptions.SaveRootClass = true; var v1 = new SampleTree { Value = 1, Children = new List<SampleTree> { new SampleTree { Value = 11, Children = null }, new SampleTree { Value = 12, Children = new List<SampleTree> { new SampleTree { Value = 121, Children = null }, }, }, } }; Assert.AreEqual( "{\n" + "\t\"class\":\"YuzuTest.SampleTree, YuzuTest\",\n" + "\t\"a\":1,\n" + "\t\"b\":[\n" + "\t\t{\n" + "\t\t\t\"a\":11,\n" + "\t\t\t\"b\":null\n" + "\t\t},\n" + "\t\t{\n" + "\t\t\t\"a\":12,\n" + "\t\t\t\"b\":[\n" + "\t\t\t\t{\n" + "\t\t\t\t\t\"a\":121,\n" + "\t\t\t\t\t\"b\":null\n" + "\t\t\t\t}\n" + "\t\t\t]\n" + "\t\t}\n" + "\t]\n" + "}", js.ToString(v1)); var v2 = new Dictionary<string, SamplePoint> { { "a", new SamplePoint { X = 4, Y = 3 } } }; Assert.AreEqual( "{\n" + "\t\"a\":[\n" + "\t\t4,\n" + "\t\t3\n" + "\t]\n" + "}", js.ToString(v2)); }
public void TestNewFields() { var jd = new JsonDeserializer(); jd.Options.AllowUnknownFields = true; var w = new SampleTree(); jd.FromString(w, "{\"a\":9,\"a1\":[],\"b\":null}"); Assert.AreEqual(9, w.Value); jd.FromString(w, "{\"a\":10, \"a1\":[], \"b\":null, \"x\":null}"); Assert.AreEqual(10, w.Value); jd.FromString(w, "{\"a\":11, \"a1\":[], \"x\":null}"); Assert.AreEqual(11, w.Value); jd.FromString(w, "{\"a\":11, \"a1\":[{}]}"); Assert.AreEqual(11, w.Value); jd.Options.TagMode = TagMode.Names; jd.FromString(w, "{\"A\":11, \"Value\":12, \"Z\": null}"); Assert.AreEqual(12, w.Value); }
public void TestNewFields() { var bd = new BinaryDeserializer(); bd.Options.TagMode = TagMode.Aliases; bd.Options.AllowUnknownFields = true; var w = new SampleTree(); bd.FromBytes(w, SX( "20 01 00 " + XS(typeof(SampleTree)) + " 03 00 " + XS("a", RoughType.Int, "a1", RoughType.Sequence) + " 10 " + XS("b", RoughType.Sequence) + " 20 01 00 09 00 00 00 02 00 00 00 00 00 03 00 FF FF FF FF 00 00")); Assert.AreEqual(9, w.Value); Assert.AreEqual(null, w.Children); bd.ClearClassIds(); bd.FromBytes(w, SX( "20 01 00 " + XS(typeof(SampleTree)) + " 04 00 " + XS("a", RoughType.Int, "a1", RoughType.Byte) + " " + XS("b", RoughType.Sequence) + " 20 " + XS("x", RoughType.Record) + " 01 00 0A 00 00 00 02 00 00 04 00 00 00 00 00")); Assert.AreEqual(10, w.Value); bd.FromBytes(w, SX( "20 01 00 01 00 0B 00 00 00 00 00")); Assert.AreEqual(11, w.Value); }
public void TestList() { var bs = new BinarySerializer(); bs.Options.TagMode = TagMode.Names; var bd = new BinaryDeserializer(); bd.Options.TagMode = TagMode.Names; var v0 = new SampleList { E = new List<string> { "a", "b", "c" } }; var result0 = bs.ToBytes(v0); Assert.AreEqual( "20 01 00 " + XS(typeof(SampleList)) + " 01 00 " + XS("E", RoughType.Sequence) + " " + XS(RoughType.String) + " 01 00 03 00 00 00 " + XS("a", "b", "c") + " 00 00", XS(result0)); var w0 = new SampleList(); bd.FromBytes(w0, result0); CollectionAssert.AreEqual(v0.E, w0.E); var v1 = new SampleTree { Value = 11, Children = new List<SampleTree>() }; var result1 = bs.ToBytes(v1); Assert.AreEqual( "20 02 00 " + XS(typeof(SampleTree)) + " 02 00 " + XS("Value", RoughType.Int, "Children", RoughType.Sequence) + " " + XS(RoughType.Record) + " 01 00 0B 00 00 00 02 00 00 00 00 00 00 00", XS(result1)); Assert.AreEqual("20 02 00 01 00 0B 00 00 00 02 00 00 00 00 00 00 00", XS(bs.ToBytes(v1))); var w1 = new SampleTree(); bd.FromBytes(w1, result1); Assert.AreEqual(0, w1.Children.Count); var v2 = new SampleTree { Value = 11, Children = new List<SampleTree> { new SampleTree { Value = 12, Children = new List<SampleTree>(), }, new SampleTree { Value = 13, } } }; var result2 = bs.ToBytes(v2); Assert.AreEqual( "20 02 00 01 00 0B 00 00 00 02 00 02 00 00 00 " + "02 00 01 00 0C 00 00 00 02 00 00 00 00 00 00 00 " + "02 00 01 00 0D 00 00 00 02 00 FF FF FF FF 00 00 00 00", XS(result2)); SampleTree w2 = new SampleTree(); bd.FromBytes(w2, result2); Assert.AreEqual(v2.Value, w2.Value); Assert.AreEqual(v2.Children.Count, w2.Children.Count); Assert.AreEqual(v2.Children[0].Value, w2.Children[0].Value); Assert.AreEqual(v2.Children[1].Children, w2.Children[1].Children); Assert.AreEqual( "20 03 00 " + XS(typeof(SampleEmptyList)) + " 01 00 " + XS("E", RoughType.Sequence) + " " + XS(RoughType.String) + " 00 00", XS(bs.ToBytes(new SampleEmptyList()))); Assert.AreEqual( "20 03 00 01 00 FF FF FF FF 00 00", XS(bs.ToBytes(new SampleEmptyList { E = null }))); }