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);
        }
Пример #2
0
            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);
                }
            }