예제 #1
0
        public void TestObjectWithPrimitiveList()
        {
            var nodeContainer = new NodeContainer();
            var instance      = new PrimitiveListClass {
                Member1 = 3, Member2 = new List <string> {
                    "aaa", "bbb", "ccc"
                }
            };
            var rootNode = nodeContainer.GetOrCreateNode(instance);
            var visitor  = new TestVisitor();

            visitor.Visit(rootNode);
            var expectedNodes = new IGraphNode[]
            {
                rootNode,
                rootNode[nameof(PrimitiveListClass.Member1)],
                rootNode[nameof(PrimitiveListClass.Member2)],
                rootNode[nameof(PrimitiveListClass.Member2)].Target,
            };
            var expectedPaths = new GraphNodePath[4];

            expectedPaths[0] = new GraphNodePath(rootNode);
            expectedPaths[1] = expectedPaths[0].Clone();
            expectedPaths[1].PushMember(nameof(PrimitiveListClass.Member1));
            expectedPaths[2] = expectedPaths[0].Clone();
            expectedPaths[2].PushMember(nameof(PrimitiveListClass.Member2));
            expectedPaths[3] = expectedPaths[2].Clone();
            expectedPaths[3].PushTarget();
            VerifyNodesAndPath(expectedNodes, expectedPaths, visitor);
        }
예제 #2
0
        public void TestObjectWithPrimitiveList()
        {
            var nodeContainer = new NodeContainer();
            var instance      = new PrimitiveListClass {
                Member1 = 3, Member2 = new List <string> {
                    "aaa", "bbb", "ccc"
                }
            };
            var rootNode = nodeContainer.GetOrCreateNode(instance);
            var visitor  = new TestVisitor();

            visitor.Visit(rootNode);
            var expectedNodes = new IContentNode[]
            {
                rootNode,
                rootNode[nameof(PrimitiveListClass.Member1)],
                rootNode[nameof(PrimitiveListClass.Member2)],
            };
            var expectedPaths = new[]
            {
                new GraphNodePath(rootNode),
                new GraphNodePath(rootNode).PushMember(nameof(PrimitiveListClass.Member1)),
                new GraphNodePath(rootNode).PushMember(nameof(PrimitiveListClass.Member2)),
            };

            VerifyNodesAndPath(expectedNodes, expectedPaths, visitor);
        }
        public void PrimitiveList()
        {
            PrimitiveListClass a = new PrimitiveListClass();

            a.Ints.Add(1);
            a.Ints.Add(3);
            a.Ints.Add(4);
            a.Ints.Add(5);
            a.Ints.Add(6);

            XmlDocument target = new XmlDocument();

            Serializer.Serialize((SystemXmlAdapter)target, a);

            Assert.AreEqual(1, target.DocumentElement.ChildNodes.Count);
            Assert.AreEqual(1, GetElement(target, "Ints").ChildNodes.Count);

            PrimitiveListClass b = Deserializer.Deserialize <PrimitiveListClass>((SystemXmlAdapter)target);

            for (int i = 0; i < a.Ints.Count; i++)
            {
                Assert.AreEqual(a.Ints[i], b.Ints[i]);
            }

            PrimitiveListClass c = new PrimitiveListClass();

            new Deserializer().FillObject(c, (SystemXmlAdapter)target);

            for (int i = 0; i < a.Ints.Count; i++)
            {
                Assert.AreEqual(a.Ints[i], c.Ints[i]);
            }
        }
        public void PrimitiveLists()
        {
            Assert.True(PropertyBasedSerializationSurrogate.CanHandle(typeDataCache, FudgeFieldNameConvention.Identity, typeof(PrimitiveListClass)));

            var serializer = new FudgeSerializer(context);      // We're relying on it auto-discovering the type surrogate

            var obj1 = new PrimitiveListClass();

            obj1.Names.Add("Fred");
            obj1.Names.Add("Sheila");

            var msg = serializer.SerializeToMsg(obj1);

            // Check the serialized format
            Assert.Equal(FudgeMsgFieldType.Instance, msg.GetByName("Names").Type);
            var listMsg = msg.GetMessage("Names");

            Assert.Equal("FudgeMsg[ => Fred,  => Sheila]", listMsg.ToString());

            var obj2 = (PrimitiveListClass)serializer.Deserialize(msg);

            Assert.NotSame(obj1, obj2);
            Assert.Equal(obj1.Names, obj2.Names);
        }
예제 #5
0
 public void TestObjectWithPrimitiveList()
 {
     var nodeContainer = new NodeContainer();
     var instance = new PrimitiveListClass { Member1 = 3, Member2 = new List<string> { "aaa", "bbb", "ccc" } };
     var rootNode = nodeContainer.GetOrCreateNode(instance);
     var visitor = new TestVisitor();
     visitor.Visit(rootNode);
     var expectedNodes = new[]
     {
         rootNode,
         rootNode.TryGetChild(nameof(PrimitiveListClass.Member1)),
         rootNode.TryGetChild(nameof(PrimitiveListClass.Member2)),
     };
     var expectedPaths = new[]
     {
         new GraphNodePath(rootNode),
         new GraphNodePath(rootNode).PushMember(nameof(PrimitiveListClass.Member1)),
         new GraphNodePath(rootNode).PushMember(nameof(PrimitiveListClass.Member2)),
     };
     VerifyNodesAndPath(expectedNodes, expectedPaths, visitor);
 }
        public void PrimitiveLists()
        {
            Assert.True(PropertyBasedSerializationSurrogate.CanHandle(typeDataCache, FudgeFieldNameConvention.Identity, typeof(PrimitiveListClass)));

            var serializer = new FudgeSerializer(context);      // We're relying on it auto-discovering the type surrogate

            var obj1 = new PrimitiveListClass();
            obj1.Names.Add("Fred");
            obj1.Names.Add("Sheila");

            var msg = serializer.SerializeToMsg(obj1);

            // Check the serialized format
            Assert.Equal(FudgeMsgFieldType.Instance, msg.GetByName("Names").Type);
            var listMsg = msg.GetMessage("Names");
            Assert.Equal("FudgeMsg[ => Fred,  => Sheila]", listMsg.ToString());

            var obj2 = (PrimitiveListClass)serializer.Deserialize(msg);

            Assert.NotSame(obj1, obj2);
            Assert.Equal(obj1.Names, obj2.Names);
        }