public IEnumerator DragRemoveSelectionFromStackNode()
        {
            // Creates a stack and add node1, node2, node3
            StackNode stack = CreateStackNode(k_DefaultX, k_DefaultY);

            stack.AddElement(m_Node1);
            stack.AddElement(m_Node2);
            stack.AddElement(m_Node3);

            // Allow two frames to compute the layout of the stack and nodes
            yield return(null);

            yield return(null);

            // Select node1 and node2
            m_Node1.Select(graphView, false);
            m_Node2.Select(graphView, true);

            Vector2 start            = m_Node1.worldBound.center;
            Vector2 outsideStackNode = stack.LocalToWorld(k_OutsidePosition);

            // Drag node1 and node2 away from the stack
            helpers.DragTo(start, outsideStackNode);

            Assert.AreEqual(1, stack.childCount);
            Assert.IsTrue(stack.Contains(m_Node3));
        }
        public void StackNodeDoesNoContainRemovedElements()
        {
            // Create a stack
            StackNode stack = CreateStackNode(k_DefaultX, k_DefaultY);

            stack.AddElement(m_Node1);
            stack.AddElement(m_Node2);

            // Verify that a node is properly removed from its containing stack
            stack.RemoveElement(m_Node1);

            Assert.AreEqual(1, stack.childCount);
            Assert.IsFalse(stack.Contains(m_Node1));
            Assert.IsNull(m_Node1.parent);

            stack.RemoveElement(m_Node2);

            Assert.AreEqual(0, stack.childCount);
            Assert.IsFalse(stack.Contains(m_Node2));
            Assert.IsNull(m_Node2.parent);
        }