Ejemplo n.º 1
0
        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);
        }
Ejemplo n.º 2
0
        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 }));
        }
Ejemplo n.º 3
0
        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));
        }
Ejemplo n.º 4
0
        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);
        }
Ejemplo n.º 5
0
        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);
        }
Ejemplo n.º 6
0
        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 })));
        }