public void TestObjectWithStructList() { var nodeContainer = new NodeContainer(); // We also test a null item in the list var instance = new StructListClass { Member1 = 3, Member2 = new List <Struct> { new Struct(), new Struct() } }; var rootNode = nodeContainer.GetOrCreateNode(instance); var visitor = new TestVisitor(); visitor.Visit(rootNode); Index index = new Index(0); IContentNode tempQualifier = rootNode[nameof(StructListClass.Member2)]; Index index1 = new Index(0); IContentNode tempQualifier1 = rootNode[nameof(StructListClass.Member2)]; Index index2 = new Index(0); IContentNode tempQualifier2 = rootNode[nameof(StructListClass.Member2)]; Index index3 = new Index(1); IContentNode tempQualifier3 = rootNode[nameof(StructListClass.Member2)]; Index index4 = new Index(1); IContentNode tempQualifier4 = rootNode[nameof(StructListClass.Member2)]; Index index5 = new Index(1); IContentNode tempQualifier5 = rootNode[nameof(StructListClass.Member2)]; var expectedNodes = new IContentNode[] { rootNode, rootNode[nameof(StructListClass.Member1)], rootNode[nameof(StructListClass.Member2)], tempQualifier.IndexedTarget(index), tempQualifier1.IndexedTarget(index1)[nameof(StructListClass.Member1)], tempQualifier2.IndexedTarget(index2)[nameof(StructListClass.Member2)], tempQualifier3.IndexedTarget(index3), tempQualifier4.IndexedTarget(index4)[nameof(StructListClass.Member1)], tempQualifier5.IndexedTarget(index5)[nameof(StructListClass.Member2)], }; var expectedPaths = new[] { new GraphNodePath(rootNode), new GraphNodePath(rootNode).PushMember(nameof(StructListClass.Member1)), new GraphNodePath(rootNode).PushMember(nameof(StructListClass.Member2)), new GraphNodePath(rootNode).PushMember(nameof(StructListClass.Member2)).PushIndex(new Index(0)), new GraphNodePath(rootNode).PushMember(nameof(StructListClass.Member2)).PushIndex(new Index(0)).PushMember(nameof(StructListClass.Member1)), new GraphNodePath(rootNode).PushMember(nameof(StructListClass.Member2)).PushIndex(new Index(0)).PushMember(nameof(StructListClass.Member2)), new GraphNodePath(rootNode).PushMember(nameof(StructListClass.Member2)).PushIndex(new Index(1)), new GraphNodePath(rootNode).PushMember(nameof(StructListClass.Member2)).PushIndex(new Index(1)).PushMember(nameof(StructListClass.Member1)), new GraphNodePath(rootNode).PushMember(nameof(StructListClass.Member2)).PushIndex(new Index(1)).PushMember(nameof(StructListClass.Member2)), }; VerifyNodesAndPath(expectedNodes, expectedPaths, visitor); }
public void TestObjectWithStructList() { var nodeContainer = new NodeContainer(); // We also test a null item in the list var instance = new StructListClass { Member1 = 3, Member2 = new List <Struct> { new Struct(), new Struct() } }; var rootNode = nodeContainer.GetOrCreateNode(instance); var visitor = new TestVisitor(); visitor.Visit(rootNode); var expectedNodes = new IGraphNode[] { rootNode, rootNode[nameof(StructListClass.Member1)], rootNode[nameof(StructListClass.Member2)], rootNode[nameof(StructListClass.Member2)].Target, rootNode[nameof(StructListClass.Member2)].Target.IndexedTarget(new NodeIndex(0)), rootNode[nameof(StructListClass.Member2)].Target.IndexedTarget(new NodeIndex(0))[nameof(StructListClass.Member1)], rootNode[nameof(StructListClass.Member2)].Target.IndexedTarget(new NodeIndex(0))[nameof(StructListClass.Member2)], rootNode[nameof(StructListClass.Member2)].Target.IndexedTarget(new NodeIndex(1)), rootNode[nameof(StructListClass.Member2)].Target.IndexedTarget(new NodeIndex(1))[nameof(StructListClass.Member1)], rootNode[nameof(StructListClass.Member2)].Target.IndexedTarget(new NodeIndex(1))[nameof(StructListClass.Member2)], }; var expectedPaths = new GraphNodePath[10]; expectedPaths[0] = new GraphNodePath(rootNode); expectedPaths[1] = expectedPaths[0].Clone(); expectedPaths[1].PushMember(nameof(StructListClass.Member1)); expectedPaths[2] = expectedPaths[0].Clone(); expectedPaths[2].PushMember(nameof(StructListClass.Member2)); expectedPaths[3] = expectedPaths[2].Clone(); expectedPaths[3].PushTarget(); expectedPaths[4] = expectedPaths[3].Clone(); expectedPaths[4].PushIndex(new NodeIndex(0)); expectedPaths[5] = expectedPaths[4].Clone(); expectedPaths[5].PushMember(nameof(StructListClass.Member1)); expectedPaths[6] = expectedPaths[4].Clone(); expectedPaths[6].PushMember(nameof(StructListClass.Member2)); expectedPaths[7] = expectedPaths[3].Clone(); expectedPaths[7].PushIndex(new NodeIndex(1)); expectedPaths[8] = expectedPaths[7].Clone(); expectedPaths[8].PushMember(nameof(StructListClass.Member1)); expectedPaths[9] = expectedPaths[7].Clone(); expectedPaths[9].PushMember(nameof(StructListClass.Member2)); VerifyNodesAndPath(expectedNodes, expectedPaths, visitor); }
public void TestObjectWithStructList() { var nodeContainer = new NodeContainer(); // We also test a null item in the list var instance = new StructListClass { Member1 = 3, Member2 = new List <Struct> { new Struct(), new Struct() } }; var rootNode = nodeContainer.GetOrCreateNode(instance); var visitor = new TestVisitor(); visitor.Visit(rootNode); var expectedNodes = new[] { rootNode, rootNode.GetChild(nameof(StructListClass.Member1)), rootNode.GetChild(nameof(StructListClass.Member2)), rootNode.GetChild(nameof(StructListClass.Member2)).GetTarget(new Index(0)), rootNode.GetChild(nameof(StructListClass.Member2)).GetTarget(new Index(0)).GetChild(nameof(StructListClass.Member1)), rootNode.GetChild(nameof(StructListClass.Member2)).GetTarget(new Index(0)).GetChild(nameof(StructListClass.Member2)), rootNode.GetChild(nameof(StructListClass.Member2)).GetTarget(new Index(1)), rootNode.GetChild(nameof(StructListClass.Member2)).GetTarget(new Index(1)).GetChild(nameof(StructListClass.Member1)), rootNode.GetChild(nameof(StructListClass.Member2)).GetTarget(new Index(1)).GetChild(nameof(StructListClass.Member2)), }; var expectedPaths = new[] { new GraphNodePath(rootNode), new GraphNodePath(rootNode).PushMember(nameof(StructListClass.Member1)), new GraphNodePath(rootNode).PushMember(nameof(StructListClass.Member2)), new GraphNodePath(rootNode).PushMember(nameof(StructListClass.Member2)).PushIndex(new Index(0)), new GraphNodePath(rootNode).PushMember(nameof(StructListClass.Member2)).PushIndex(new Index(0)).PushMember(nameof(StructListClass.Member1)), new GraphNodePath(rootNode).PushMember(nameof(StructListClass.Member2)).PushIndex(new Index(0)).PushMember(nameof(StructListClass.Member2)), new GraphNodePath(rootNode).PushMember(nameof(StructListClass.Member2)).PushIndex(new Index(1)), new GraphNodePath(rootNode).PushMember(nameof(StructListClass.Member2)).PushIndex(new Index(1)).PushMember(nameof(StructListClass.Member1)), new GraphNodePath(rootNode).PushMember(nameof(StructListClass.Member2)).PushIndex(new Index(1)).PushMember(nameof(StructListClass.Member2)), }; VerifyNodesAndPath(expectedNodes, expectedPaths, visitor); }
public void TestObjectWithStructList() { var nodeContainer = new NodeContainer(); // We also test a null item in the list var instance = new StructListClass { Member1 = 3, Member2 = new List<Struct> { new Struct(), new Struct() } }; var rootNode = nodeContainer.GetOrCreateNode(instance); var visitor = new TestVisitor(); visitor.Visit(rootNode); Index index = new Index(0); IGraphNode tempQualifier = rootNode.TryGetChild(nameof(StructListClass.Member2)); Index index1 = new Index(0); IGraphNode tempQualifier1 = rootNode.TryGetChild(nameof(StructListClass.Member2)); Index index2 = new Index(0); IGraphNode tempQualifier2 = rootNode.TryGetChild(nameof(StructListClass.Member2)); Index index3 = new Index(1); IGraphNode tempQualifier3 = rootNode.TryGetChild(nameof(StructListClass.Member2)); Index index4 = new Index(1); IGraphNode tempQualifier4 = rootNode.TryGetChild(nameof(StructListClass.Member2)); Index index5 = new Index(1); IGraphNode tempQualifier5 = rootNode.TryGetChild(nameof(StructListClass.Member2)); var expectedNodes = new[] { rootNode, rootNode.TryGetChild(nameof(StructListClass.Member1)), rootNode.TryGetChild(nameof(StructListClass.Member2)), tempQualifier.IndexedTarget(index), tempQualifier1.IndexedTarget(index1).TryGetChild(nameof(StructListClass.Member1)), tempQualifier2.IndexedTarget(index2).TryGetChild(nameof(StructListClass.Member2)), tempQualifier3.IndexedTarget(index3), tempQualifier4.IndexedTarget(index4).TryGetChild(nameof(StructListClass.Member1)), tempQualifier5.IndexedTarget(index5).TryGetChild(nameof(StructListClass.Member2)), }; var expectedPaths = new[] { new GraphNodePath(rootNode), new GraphNodePath(rootNode).PushMember(nameof(StructListClass.Member1)), new GraphNodePath(rootNode).PushMember(nameof(StructListClass.Member2)), new GraphNodePath(rootNode).PushMember(nameof(StructListClass.Member2)).PushIndex(new Index(0)), new GraphNodePath(rootNode).PushMember(nameof(StructListClass.Member2)).PushIndex(new Index(0)).PushMember(nameof(StructListClass.Member1)), new GraphNodePath(rootNode).PushMember(nameof(StructListClass.Member2)).PushIndex(new Index(0)).PushMember(nameof(StructListClass.Member2)), new GraphNodePath(rootNode).PushMember(nameof(StructListClass.Member2)).PushIndex(new Index(1)), new GraphNodePath(rootNode).PushMember(nameof(StructListClass.Member2)).PushIndex(new Index(1)).PushMember(nameof(StructListClass.Member1)), new GraphNodePath(rootNode).PushMember(nameof(StructListClass.Member2)).PushIndex(new Index(1)).PushMember(nameof(StructListClass.Member2)), }; VerifyNodesAndPath(expectedNodes, expectedPaths, visitor); }