public void TestGetParent() { var obj = new Class { StructMember = { StringMember = "aa" }, ClassMember = new Class(), ListMember = { new Class(), new Class(), new Class() } }; var nodeContainer = new NodeContainer(); var rootNode = nodeContainer.GetOrCreateNode(obj); var path = new GraphNodePath(rootNode).PushMember(nameof(Class.IntMember)); var parentPath = new GraphNodePath(rootNode); AssertAreEqual(parentPath, path.GetParent()); path = new GraphNodePath(rootNode).PushMember(nameof(Class.StructMember)).PushMember(nameof(Struct.StringMember)); parentPath = new GraphNodePath(rootNode).PushMember(nameof(Class.StructMember)); AssertAreEqual(parentPath, path.GetParent()); path = new GraphNodePath(rootNode).PushMember(nameof(Class.ClassMember)).PushTarget(); parentPath = new GraphNodePath(rootNode).PushMember(nameof(Class.ClassMember)); AssertAreEqual(parentPath, path.GetParent()); path = new GraphNodePath(rootNode).PushMember(nameof(Class.ClassMember)).PushTarget().PushMember(nameof(Class.IntMember)); parentPath = new GraphNodePath(rootNode).PushMember(nameof(Class.ClassMember)).PushTarget(); AssertAreEqual(parentPath, path.GetParent()); path = new GraphNodePath(rootNode).PushMember(nameof(Class.ListMember)).PushIndex(new Index(1)); parentPath = new GraphNodePath(rootNode).PushMember(nameof(Class.ListMember)); AssertAreEqual(parentPath, path.GetParent()); path = new GraphNodePath(rootNode).PushMember(nameof(Class.ListMember)).PushIndex(new Index(1)).PushMember(nameof(Class.IntMember)); parentPath = new GraphNodePath(rootNode).PushMember(nameof(Class.ListMember)).PushIndex(new Index(1)); AssertAreEqual(parentPath, path.GetParent()); }