bool AssertNode(TestHierarchy.TestNode expectedNode) { if (!m_HierarchyState.Exists(expectedNode.NodeId)) { return(false); } var isExpectedToHaveChildren = expectedNode.Children.Count > 0; if (m_HierarchyState.HasChildren(expectedNode.NodeId) != isExpectedToHaveChildren) { return(false); } if (!isExpectedToHaveChildren) { return(true); } using (var children = m_HierarchyState.GetChildren(expectedNode.NodeId, Allocator.Temp)) { if (children.Length != expectedNode.Children.Count) { return(false); } var orderedStrategyChildren = children.ToArray().OrderBy(x => x).ToArray(); var orderedExpectedChildren = expectedNode.Children.OrderBy(x => x.NodeId).ToArray(); for (var i = 0; i < orderedStrategyChildren.Length; i++) { if (!orderedStrategyChildren[i].Equals(orderedExpectedChildren[i].NodeId)) { return(false); } } } foreach (var expectedNodeChild in expectedNode.Children) { if (!AssertNode(expectedNodeChild)) { return(false); } } return(true); }
void BuildState(TestHierarchy.TestNode testNode) { if (!m_Children.TryGetValue(testNode.NodeId, out var children)) { children = new List <EntityHierarchyNodeId>(); m_Children.Add(testNode.NodeId, children); } foreach (var child in testNode.Children) { children.Add(child.NodeId); m_Parents[child.NodeId] = testNode.NodeId; } foreach (var child in testNode.Children) { BuildState(child); } }