示例#1
0
文件: TestJson.cs 项目: klenin/Yuzu
        public void TestCollection()
        {
            var js = new JsonSerializer();
            js.JsonOptions.Indent = "";
            var jd = new JsonDeserializer();

            var v0 = new SampleWithCollection();
            v0.A.Add(new SampleInterfaced { X = 9 });
            v0.B.Add(7);
            v0.B.Add(6);
            var result0 = js.ToString(v0);
            Assert.AreEqual(
                "{\n" +
                    "\"A\":[\n{\n\"class\":\"YuzuTest.SampleInterfaced, YuzuTest\",\n\"X\":9\n}\n],\n" +
                    "\"B\":[\n7,\n6\n]\n" +
                "}",
                result0);

            var w0 = new SampleWithCollection();
            jd.FromString(w0, result0);
            Assert.AreEqual(1, w0.A.Count);
            Assert.IsInstanceOfType(w0.A.First(), typeof(SampleInterfaced));
            Assert.AreEqual(9, w0.A.First().X);
            CollectionAssert.AreEqual(new int[] { 7, 6 }, w0.B.ToList());

            var w1 = (SampleWithCollection)SampleWithCollection_JsonDeserializer.Instance.FromString(result0);
            Assert.AreEqual(1, w1.A.Count);
            Assert.IsInstanceOfType(w1.A.First(), typeof(SampleInterfaced));
            Assert.AreEqual(9, w1.A.First().X);
            CollectionAssert.AreEqual(new int[] { 7, 6 }, w1.B.ToList());

            var v2 = new SampleCollection<int> { 2, 5, 4 };
            var result1 = js.ToString(v2);
            Assert.AreEqual("[\n2,\n5,\n4\n]", result1);
            var w2 = (SampleCollection<int>)SampleCollection_Int32_JsonDeserializer.Instance.FromString(result1);
            CollectionAssert.AreEqual(v2.ToList(), w2.ToList());
            var w2g = (SampleExplicitCollection<int>)
                SampleExplicitCollection_Int32_JsonDeserializer.Instance.FromString(result1);
            CollectionAssert.AreEqual(v2.ToList(), w2g.ToList());

            var v3 = new SampleConcreteCollection { 8, 3, 1 };
            var result3 = js.ToString(v3);
            Assert.AreEqual("[\n8,\n3,\n1\n]", result3);
            var w3 = new SampleConcreteCollection();
            jd.FromString(w3, result3);
            CollectionAssert.AreEqual(v3.ToList(), w3.ToList());
            var w3g = (SampleConcreteCollection)
                SampleConcreteCollection_JsonDeserializer.Instance.FromString(result3);
            CollectionAssert.AreEqual(v3.ToList(), w3g.ToList());
        }
示例#2
0
文件: TestBinary.cs 项目: klenin/Yuzu
        public void TestCollection()
        {
            var bs = new BinarySerializer();
            var bd = new BinaryDeserializer();

            var v0 = new SampleWithCollection();
            v0.A.Add(new SampleInterfaced { X = 9 });
            v0.B.Add(7);
            v0.B.Add(6);
            var result0 = bs.ToBytes(v0);
            Assert.AreEqual(
                "20 01 00 " + XS(typeof(SampleWithCollection)) + " 02 00 " +
                XS("A", RoughType.Sequence) + " " + XS(RoughType.Record) + " " +
                XS("B", RoughType.Sequence) + " " + XS(RoughType.Int) +
                " 01 00 01 00 00 00 02 00 " + XS(typeof(SampleInterfaced)) +
                " 01 00 " + XS("X", RoughType.Int) +
                " 01 00 09 00 00 00 00 00" +
                " 02 00 02 00 00 00 07 00 00 00 06 00 00 00 00 00",
                XS(result0));

            var w0 = new SampleWithCollection();
            bd.FromBytes(w0, result0);
            Assert.AreEqual(1, w0.A.Count);
            Assert.IsInstanceOfType(w0.A.First(), typeof(SampleInterfaced));
            Assert.AreEqual(9, w0.A.First().X);
            CollectionAssert.AreEqual(new int[] { 7, 6 }, w0.B.ToList());

            var w1 = (SampleWithCollection)((new BinaryDeserializerGen()).FromBytes(result0));
            Assert.AreEqual(1, w1.A.Count);
            Assert.IsInstanceOfType(w1.A.First(), typeof(SampleInterfaced));
            Assert.AreEqual(9, w1.A.First().X);
            CollectionAssert.AreEqual(new int[] { 7, 6 }, w1.B.ToList());

            var v2 = new SampleConcreteCollection { 2, 5, 4 };
            var result1 = bs.ToBytes(v2);
            Assert.AreEqual("21 05 03 00 00 00 02 00 00 00 05 00 00 00 04 00 00 00", XS(result1));
            SampleConcreteCollection w2 = new SampleConcreteCollection();
            bd.FromBytes(w2, result1);
            CollectionAssert.AreEqual(v2.ToList(), w2.ToList());
        }