Beispiel #1
0
        private void TestIssue10_Reader(Inner inner)
        {
            var serializer = CreateTarget <Outer>();
            var outer      = new Outer();

            outer.Inner = inner;
            var bytes = serializer.PackSingleObject(outer);

            using (var buffer = new MemoryStream(bytes))
                using (var unpacker = Unpacker.Create(buffer))
                {
                    Action <Unpacker, MessagePackObject> assertion =
                        (u, o) =>
                    {
                        Assert.That(u.Read(), Is.True);
                        Assert.That(u.LastReadData == o, "{0} == {1}", u.LastReadData, o);
                    };

                    assertion(unpacker, 3);
                    Assert.That(unpacker.IsArrayHeader);

                    assertion(unpacker, outer.A);
                    assertion(unpacker, 3);
                    Assert.That(unpacker.IsArrayHeader);

                    using (var subtreeUnpacker = unpacker.ReadSubtree())
                    {
                        assertion(subtreeUnpacker, outer.Inner.A);
                        assertion(subtreeUnpacker, outer.Inner.Bytes);
                        assertion(subtreeUnpacker, outer.Inner.C);
                    }

                    assertion(unpacker, outer.O);
                }
        }
Beispiel #2
0
        private void TestIssue10_ReadXxxCore(Inner inner)
        {
            var serializer = CreateTarget <Outer>();
            var outer      = new Outer();

            outer.Inner = inner;
            var bytes  = serializer.PackSingleObject(outer);
            var result = serializer.UnpackSingleObject(bytes);

            Assert.That(result.A, Is.EqualTo(outer.A));
            Assert.That(result.O, Is.EqualTo(outer.O));
            Assert.That(result.Inner, Is.Not.Null);
            Assert.That(result.Inner.A, Is.EqualTo(outer.Inner.A));
            Assert.That(result.Inner.Bytes, Is.EqualTo(outer.Inner.Bytes));
            Assert.That(result.Inner.C, Is.EqualTo(outer.Inner.C));
        }