You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@flex.apache.org by jm...@apache.org on 2015/11/18 05:21:50 UTC

[35/47] git commit: [flex-sdk] [refs/heads/develop] - FLEX-34778 moved the test to where it can be executed via 'ant test'

FLEX-34778 moved the test to where it can be executed via 'ant test'


Project: http://git-wip-us.apache.org/repos/asf/flex-sdk/repo
Commit: http://git-wip-us.apache.org/repos/asf/flex-sdk/commit/eded6401
Tree: http://git-wip-us.apache.org/repos/asf/flex-sdk/tree/eded6401
Diff: http://git-wip-us.apache.org/repos/asf/flex-sdk/diff/eded6401

Branch: refs/heads/develop
Commit: eded64017964d048bc482daf404c5885b15b676f
Parents: dabf7cc
Author: Mihai Chira <mi...@apache.org>
Authored: Tue Mar 10 15:56:27 2015 +0100
Committer: Erik de Bruin <er...@ixsoftware.nl>
Committed: Fri Mar 20 09:51:24 2015 +0100

----------------------------------------------------------------------
 .../HierarchicalCollectionView_REPLACE_Tests.as | 325 +++++++++++++++++++
 .../HierarchicalCollectionView_REPLACE_Tests.as | 325 -------------------
 2 files changed, 325 insertions(+), 325 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/flex-sdk/blob/eded6401/frameworks/projects/advancedgrids/tests/mx/collections/HierarchicalCollectionView_REPLACE_Tests.as
----------------------------------------------------------------------
diff --git a/frameworks/projects/advancedgrids/tests/mx/collections/HierarchicalCollectionView_REPLACE_Tests.as b/frameworks/projects/advancedgrids/tests/mx/collections/HierarchicalCollectionView_REPLACE_Tests.as
new file mode 100644
index 0000000..c4d49a6
--- /dev/null
+++ b/frameworks/projects/advancedgrids/tests/mx/collections/HierarchicalCollectionView_REPLACE_Tests.as
@@ -0,0 +1,325 @@
+////////////////////////////////////////////////////////////////////////////////
+//
+//  Licensed to the Apache Software Foundation (ASF) under one or more
+//  contributor license agreements.  See the NOTICE file distributed with
+//  this work for additional information regarding copyright ownership.
+//  The ASF licenses this file to You under the Apache License, Version 2.0
+//  (the "License"); you may not use this file except in compliance with
+//  the License.  You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+//  Unless required by applicable law or agreed to in writing, software
+//  distributed under the License is distributed on an "AS IS" BASIS,
+//  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//  See the License for the specific language governing permissions and
+//  limitations under the License.
+//
+////////////////////////////////////////////////////////////////////////////////
+
+package mx.collections {
+    import mx.collections.HierarchicalCollectionView;
+    import mx.collections.IList;
+    import mx.events.CollectionEvent;
+    import mx.events.CollectionEventKind;
+    import mx.utils.StringUtil;
+
+    import org.flexunit.asserts.assertEquals;
+    import org.flexunit.asserts.assertFalse;
+    import org.flexunit.asserts.assertNotNull;
+    import org.flexunit.asserts.assertNull;
+    import org.flexunit.asserts.assertTrue;
+
+    public class HierarchicalCollectionView_REPLACE_Tests {
+
+        private static var _sut:HierarchicalCollectionView;
+        private static var _utils:HierarchicalCollectionViewTestUtils = new HierarchicalCollectionViewTestUtils();
+        private var _root:IList;
+        private static var noItemsInHierarchy:int = NaN;
+
+        [BeforeClass]
+        public static function setUpBeforeClass():void
+        {
+            const hierarchyLines:Array = HIERARCHY_STRING.split("\n");
+            for(var i:int = 0; i < hierarchyLines.length; i++)
+            {
+                if(StringUtil.trim(hierarchyLines[i]))
+                    noItemsInHierarchy++;
+            }
+        }
+
+        [Before]
+        public function setUp():void
+        {
+            _sut = _utils.generateOpenHierarchyFromRootListWithAllNodesMethod(_utils.generateHierarchySourceFromString(HIERARCHY_STRING));
+            _root = _utils.getRoot(_sut) as IList;
+        }
+
+        [After]
+        public function tearDown():void
+        {
+            _sut = null;
+            _root = null;
+        }
+
+        [Test]
+        public function test_make_sure_we_count_nodes_correctly():void
+        {
+            //when
+            var noChildren:int = 0;
+            for(var i:int = 0; i < _root.length; i++)
+            {
+                noChildren += countAllChildrenOf(_root.getItemAt(i) as DataNode);
+            }
+
+            //then
+            assertEquals(noItemsInHierarchy, noChildren);
+        }
+
+        [Test]
+        public function test_make_sure_isDescendantOf_works_correctly():void
+        {
+            //when
+            var region1:DataNode = _root.getItemAt(0) as DataNode;
+            var region2:DataNode = _root.getItemAt(1) as DataNode;
+            var city2:DataNode = region2.children.getItemAt(1) as DataNode;
+            var company2:DataNode = city2.children.getItemAt(1) as DataNode;
+            var department2:DataNode = company2.children.getItemAt(1) as DataNode;
+
+            //then
+            assertTrue(isDescendantOf(department2, company2));
+            assertTrue(isDescendantOf(department2, city2));
+            assertTrue(isDescendantOf(department2, region2));
+            assertFalse(isDescendantOf(department2, region1));
+        }
+
+        [Test]
+        public function test_replacing_a_childless_node_does_not_dispatch_REMOVED_collection_event_but_changes_parent_references():void
+        {
+            function onCollectionChanged(event:CollectionEvent):void
+            {
+                if(event.kind == CollectionEventKind.REMOVE)
+                    removeEvent = event;
+                else if(event.kind == CollectionEventKind.REPLACE)
+                    replaceEvent = event;
+            }
+
+            var removeEvent:CollectionEvent = null;
+            var replaceEvent:CollectionEvent = null;
+
+            //GIVEN
+            _sut.addEventListener(CollectionEvent.COLLECTION_CHANGE, onCollectionChanged);
+            var company2:DataNode = getDirectChildrenOf(1, 1).getItemAt(1) as DataNode;
+            var departmentsOfCompany2:IList = company2.children;
+            var firstDepartment:DataNode = departmentsOfCompany2.getItemAt(0) as DataNode;
+
+            //WHEN
+            const newDepartment:DataNode = new DataNode("Region(2)->City(1)->Company(2)->DepartmentX");
+            departmentsOfCompany2.setItemAt(newDepartment, 0);
+
+            //THEN
+            assertNotNull(replaceEvent);
+            assertNull(removeEvent); //because the replaced node had no children
+            assertNull(_sut.getParentItem(firstDepartment));
+            assertEquals(company2, _sut.getParentItem(newDepartment));
+            assertEquals(noItemsInHierarchy, _sut.length);
+        }
+
+        [Test]
+        public function test_replacing_a_node_with_children_dispatches_REMOVED_collection_event_and_changes_parent_references():void
+        {
+            function onCollectionChanged(event:CollectionEvent):void
+            {
+                if(event.kind == CollectionEventKind.REMOVE)
+                {
+                    removeEvent = event;
+
+                    if(event.items && event.items.length == noChildrenOfSecondDepartment)
+                    {
+                        for(var i:int = 0; i < noChildrenOfSecondDepartment; i++)
+                        {
+                            if(event.items.indexOf(secondDepartment.children.getItemAt(i)) == -1)
+                                REMOVEDEventHasChildrenOfSecondDepartment = false;
+                        }
+                    }
+                }
+                else if(event.kind == CollectionEventKind.REPLACE)
+                    replaceEvent = event;
+            }
+
+            var removeEvent:CollectionEvent = null;
+            var replaceEvent:CollectionEvent = null;
+            var REMOVEDEventHasChildrenOfSecondDepartment:Boolean = true;
+
+            //GIVEN
+            _sut.addEventListener(CollectionEvent.COLLECTION_CHANGE, onCollectionChanged);
+            var company2:DataNode = getDirectChildrenOf(1, 1).getItemAt(1) as DataNode;
+            var departmentsOfCompany2:IList = company2.children;
+            var secondDepartment:DataNode = departmentsOfCompany2.getItemAt(1) as DataNode;
+            const noChildrenOfSecondDepartment:int = secondDepartment.children.length;
+
+            //WHEN
+            const newDepartment:DataNode = new DataNode("Region(2)->City(1)->Company(2)->DepartmentX");
+            departmentsOfCompany2.setItemAt(newDepartment, 1);
+
+            //THEN
+            assertNotNull(replaceEvent);
+            assertNotNull(removeEvent); //because the replaced node had children
+            assertTrue(REMOVEDEventHasChildrenOfSecondDepartment);
+            assertEquals(-1, removeEvent.items.indexOf(secondDepartment));
+            assertNull(_sut.getParentItem(secondDepartment));
+            assertEquals(company2, _sut.getParentItem(newDepartment));
+            assertEquals(noItemsInHierarchy - noChildrenOfSecondDepartment, _sut.length);
+        }
+
+        [Test]
+        public function test_replacing_a_root_node_with_children_dispatches_REMOVED_collection_event_and_changes_parent_references():void
+        {
+            function onCollectionChanged(event:CollectionEvent):void
+            {
+                if(event.kind == CollectionEventKind.REMOVE)
+                {
+                    removeEvent = event;
+                    if(event.items && event.items.length == noChildrenOfSecondRegion)
+                    {
+                        for(var i:int = 0; i < noChildrenOfSecondRegion; i++)
+                        {
+                            if(!isDescendantOf(event.items[1] as DataNode, region2))
+                                REMOVEDEventHasAllChildrenOfSecondRegion = false;
+                        }
+                    }
+                }
+                else if(event.kind == CollectionEventKind.REPLACE)
+                    replaceEvent = event;
+            }
+
+            var removeEvent:CollectionEvent = null;
+            var replaceEvent:CollectionEvent = null;
+            var REMOVEDEventHasAllChildrenOfSecondRegion:Boolean = true;
+
+            //GIVEN
+            _sut.addEventListener(CollectionEvent.COLLECTION_CHANGE, onCollectionChanged);
+            var region2:DataNode = _root.getItemAt(1) as DataNode;
+            var noChildrenOfSecondRegion:int = countAllChildrenOf(region2);
+
+            //WHEN
+            const newRegion:DataNode = new DataNode("Region(X)");
+            _root.setItemAt(newRegion, 1);
+
+            //THEN
+            assertNotNull(replaceEvent);
+            assertNotNull(removeEvent); //because the replaced node had children
+            assertTrue(REMOVEDEventHasAllChildrenOfSecondRegion);
+            assertEquals(-1, removeEvent.items.indexOf(region2));
+            assertNull(_sut.getParentItem(region2));
+            assertEquals(null, _sut.getParentItem(newRegion));
+            assertEquals(noItemsInHierarchy - noChildrenOfSecondRegion + 1, _sut.length);
+        }
+
+        [Test]
+        public function test_replacing_inaccessible_node_does_not_dispatch_REMOVED_collection_event_nor_changes_parent_references():void
+        {
+            function onCollectionChanged(event:CollectionEvent):void
+            {
+                if(event.kind == CollectionEventKind.REMOVE)
+                    removeEvent = event;
+                else if(event.kind == CollectionEventKind.REPLACE)
+                    replaceEvent = event;
+            }
+
+            var removeEvent:CollectionEvent = null;
+            var replaceEvent:CollectionEvent = null;
+
+            //GIVEN
+            _sut.addEventListener(CollectionEvent.COLLECTION_CHANGE, onCollectionChanged);
+            var company2:DataNode = getDirectChildrenOf(1, 1).getItemAt(1) as DataNode;
+            var departmentsOfCompany2:IList = company2.children;
+            var firstDepartment:DataNode = departmentsOfCompany2.getItemAt(0) as DataNode;
+
+            //WHEN
+            _sut.closeNode(_root.getItemAt(1)); //close second region
+            const newDepartment:DataNode = new DataNode("Region(2)->City(1)->Company(2)->DepartmentX");
+            departmentsOfCompany2.setItemAt(newDepartment, 0);
+
+            //THEN
+            assertNotNull(replaceEvent);
+            assertNull(removeEvent); //because the replaced node had no children
+            assertNull(_sut.getParentItem(firstDepartment));
+            assertEquals(company2, _sut.getParentItem(newDepartment));
+
+            var secondRegion:DataNode = DataNode(_root.getItemAt(1));
+            assertEquals(noItemsInHierarchy - countAllChildrenOf(secondRegion) + 1, _sut.length);
+        }
+
+
+        private function getDirectChildrenOf(...indexesOfSubsequentParents):IList
+        {
+            var currentLevel:IList = _root;
+            var i:int = -1;
+            while(currentLevel && ++i < indexesOfSubsequentParents.length)
+            {
+                var currentParent:DataNode = currentLevel.getItemAt(indexesOfSubsequentParents[i]) as DataNode;
+                currentLevel = currentParent ? currentParent.children : null;
+            }
+
+            return currentLevel;
+        }
+
+        private function isDescendantOf(node:DataNode, potentialAncestor:DataNode):Boolean
+        {
+            if(!potentialAncestor || !node)
+                return false;
+
+            var currentParent:DataNode = node.parent;
+            while(currentParent && currentParent != potentialAncestor)
+            {
+                currentParent = currentParent.parent;
+            }
+
+            return currentParent == potentialAncestor;
+        }
+
+        private function countAllChildrenOf(parent:DataNode):int
+        {
+            if(!parent.children || !parent.children.length)
+                return 1;
+            else
+            {
+                var noChildren:int = 0;
+                for(var i:int = 0; i < parent.children.length; i++)
+                {
+                    noChildren += countAllChildrenOf(parent.children.getItemAt(i) as DataNode);
+                }
+
+                return noChildren + 1;
+            }
+
+            return NaN;
+        }
+
+
+        private static const HIERARCHY_STRING:String = (<![CDATA[
+        Region(1)
+        Region(2)
+        Region(2)->City(0)
+        Region(2)->City(1)
+        Region(2)->City(1)->Company(1)
+        Region(2)->City(1)->Company(2)
+        Region(2)->City(1)->Company(2)->Department(1)
+        Region(2)->City(1)->Company(2)->Department(2)
+        Region(2)->City(1)->Company(2)->Department(2)->Employee(1)
+        Region(2)->City(1)->Company(2)->Department(2)->Employee(2)
+        Region(2)->City(1)->Company(2)->Department(2)->Employee(3)
+        Region(2)->City(1)->Company(2)->Department(3)
+        Region(2)->City(1)->Company(2)->Department(3)->Employee(1)
+        Region(2)->City(1)->Company(2)->Department(3)->Employee(2)
+        Region(2)->City(1)->Company(2)->Department(3)->Employee(3)
+        Region(2)->City(1)->Company(2)->Department(3)->Employee(4)
+        Region(2)->City(1)->Company(3)
+        Region(2)->City(1)->Company(3)->Department(1)
+        Region(2)->City(1)->Company(3)->Department(1)->Employee(1)
+        Region(2)->City(1)->Company(3)->Department(2)
+    ]]>).
+        toString();
+    }
+}

http://git-wip-us.apache.org/repos/asf/flex-sdk/blob/eded6401/frameworks/tests/unitTests/mx/collections/HierarchicalCollectionView_REPLACE_Tests.as
----------------------------------------------------------------------
diff --git a/frameworks/tests/unitTests/mx/collections/HierarchicalCollectionView_REPLACE_Tests.as b/frameworks/tests/unitTests/mx/collections/HierarchicalCollectionView_REPLACE_Tests.as
deleted file mode 100644
index c4d49a6..0000000
--- a/frameworks/tests/unitTests/mx/collections/HierarchicalCollectionView_REPLACE_Tests.as
+++ /dev/null
@@ -1,325 +0,0 @@
-////////////////////////////////////////////////////////////////////////////////
-//
-//  Licensed to the Apache Software Foundation (ASF) under one or more
-//  contributor license agreements.  See the NOTICE file distributed with
-//  this work for additional information regarding copyright ownership.
-//  The ASF licenses this file to You under the Apache License, Version 2.0
-//  (the "License"); you may not use this file except in compliance with
-//  the License.  You may obtain a copy of the License at
-//
-//      http://www.apache.org/licenses/LICENSE-2.0
-//
-//  Unless required by applicable law or agreed to in writing, software
-//  distributed under the License is distributed on an "AS IS" BASIS,
-//  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-//  See the License for the specific language governing permissions and
-//  limitations under the License.
-//
-////////////////////////////////////////////////////////////////////////////////
-
-package mx.collections {
-    import mx.collections.HierarchicalCollectionView;
-    import mx.collections.IList;
-    import mx.events.CollectionEvent;
-    import mx.events.CollectionEventKind;
-    import mx.utils.StringUtil;
-
-    import org.flexunit.asserts.assertEquals;
-    import org.flexunit.asserts.assertFalse;
-    import org.flexunit.asserts.assertNotNull;
-    import org.flexunit.asserts.assertNull;
-    import org.flexunit.asserts.assertTrue;
-
-    public class HierarchicalCollectionView_REPLACE_Tests {
-
-        private static var _sut:HierarchicalCollectionView;
-        private static var _utils:HierarchicalCollectionViewTestUtils = new HierarchicalCollectionViewTestUtils();
-        private var _root:IList;
-        private static var noItemsInHierarchy:int = NaN;
-
-        [BeforeClass]
-        public static function setUpBeforeClass():void
-        {
-            const hierarchyLines:Array = HIERARCHY_STRING.split("\n");
-            for(var i:int = 0; i < hierarchyLines.length; i++)
-            {
-                if(StringUtil.trim(hierarchyLines[i]))
-                    noItemsInHierarchy++;
-            }
-        }
-
-        [Before]
-        public function setUp():void
-        {
-            _sut = _utils.generateOpenHierarchyFromRootListWithAllNodesMethod(_utils.generateHierarchySourceFromString(HIERARCHY_STRING));
-            _root = _utils.getRoot(_sut) as IList;
-        }
-
-        [After]
-        public function tearDown():void
-        {
-            _sut = null;
-            _root = null;
-        }
-
-        [Test]
-        public function test_make_sure_we_count_nodes_correctly():void
-        {
-            //when
-            var noChildren:int = 0;
-            for(var i:int = 0; i < _root.length; i++)
-            {
-                noChildren += countAllChildrenOf(_root.getItemAt(i) as DataNode);
-            }
-
-            //then
-            assertEquals(noItemsInHierarchy, noChildren);
-        }
-
-        [Test]
-        public function test_make_sure_isDescendantOf_works_correctly():void
-        {
-            //when
-            var region1:DataNode = _root.getItemAt(0) as DataNode;
-            var region2:DataNode = _root.getItemAt(1) as DataNode;
-            var city2:DataNode = region2.children.getItemAt(1) as DataNode;
-            var company2:DataNode = city2.children.getItemAt(1) as DataNode;
-            var department2:DataNode = company2.children.getItemAt(1) as DataNode;
-
-            //then
-            assertTrue(isDescendantOf(department2, company2));
-            assertTrue(isDescendantOf(department2, city2));
-            assertTrue(isDescendantOf(department2, region2));
-            assertFalse(isDescendantOf(department2, region1));
-        }
-
-        [Test]
-        public function test_replacing_a_childless_node_does_not_dispatch_REMOVED_collection_event_but_changes_parent_references():void
-        {
-            function onCollectionChanged(event:CollectionEvent):void
-            {
-                if(event.kind == CollectionEventKind.REMOVE)
-                    removeEvent = event;
-                else if(event.kind == CollectionEventKind.REPLACE)
-                    replaceEvent = event;
-            }
-
-            var removeEvent:CollectionEvent = null;
-            var replaceEvent:CollectionEvent = null;
-
-            //GIVEN
-            _sut.addEventListener(CollectionEvent.COLLECTION_CHANGE, onCollectionChanged);
-            var company2:DataNode = getDirectChildrenOf(1, 1).getItemAt(1) as DataNode;
-            var departmentsOfCompany2:IList = company2.children;
-            var firstDepartment:DataNode = departmentsOfCompany2.getItemAt(0) as DataNode;
-
-            //WHEN
-            const newDepartment:DataNode = new DataNode("Region(2)->City(1)->Company(2)->DepartmentX");
-            departmentsOfCompany2.setItemAt(newDepartment, 0);
-
-            //THEN
-            assertNotNull(replaceEvent);
-            assertNull(removeEvent); //because the replaced node had no children
-            assertNull(_sut.getParentItem(firstDepartment));
-            assertEquals(company2, _sut.getParentItem(newDepartment));
-            assertEquals(noItemsInHierarchy, _sut.length);
-        }
-
-        [Test]
-        public function test_replacing_a_node_with_children_dispatches_REMOVED_collection_event_and_changes_parent_references():void
-        {
-            function onCollectionChanged(event:CollectionEvent):void
-            {
-                if(event.kind == CollectionEventKind.REMOVE)
-                {
-                    removeEvent = event;
-
-                    if(event.items && event.items.length == noChildrenOfSecondDepartment)
-                    {
-                        for(var i:int = 0; i < noChildrenOfSecondDepartment; i++)
-                        {
-                            if(event.items.indexOf(secondDepartment.children.getItemAt(i)) == -1)
-                                REMOVEDEventHasChildrenOfSecondDepartment = false;
-                        }
-                    }
-                }
-                else if(event.kind == CollectionEventKind.REPLACE)
-                    replaceEvent = event;
-            }
-
-            var removeEvent:CollectionEvent = null;
-            var replaceEvent:CollectionEvent = null;
-            var REMOVEDEventHasChildrenOfSecondDepartment:Boolean = true;
-
-            //GIVEN
-            _sut.addEventListener(CollectionEvent.COLLECTION_CHANGE, onCollectionChanged);
-            var company2:DataNode = getDirectChildrenOf(1, 1).getItemAt(1) as DataNode;
-            var departmentsOfCompany2:IList = company2.children;
-            var secondDepartment:DataNode = departmentsOfCompany2.getItemAt(1) as DataNode;
-            const noChildrenOfSecondDepartment:int = secondDepartment.children.length;
-
-            //WHEN
-            const newDepartment:DataNode = new DataNode("Region(2)->City(1)->Company(2)->DepartmentX");
-            departmentsOfCompany2.setItemAt(newDepartment, 1);
-
-            //THEN
-            assertNotNull(replaceEvent);
-            assertNotNull(removeEvent); //because the replaced node had children
-            assertTrue(REMOVEDEventHasChildrenOfSecondDepartment);
-            assertEquals(-1, removeEvent.items.indexOf(secondDepartment));
-            assertNull(_sut.getParentItem(secondDepartment));
-            assertEquals(company2, _sut.getParentItem(newDepartment));
-            assertEquals(noItemsInHierarchy - noChildrenOfSecondDepartment, _sut.length);
-        }
-
-        [Test]
-        public function test_replacing_a_root_node_with_children_dispatches_REMOVED_collection_event_and_changes_parent_references():void
-        {
-            function onCollectionChanged(event:CollectionEvent):void
-            {
-                if(event.kind == CollectionEventKind.REMOVE)
-                {
-                    removeEvent = event;
-                    if(event.items && event.items.length == noChildrenOfSecondRegion)
-                    {
-                        for(var i:int = 0; i < noChildrenOfSecondRegion; i++)
-                        {
-                            if(!isDescendantOf(event.items[1] as DataNode, region2))
-                                REMOVEDEventHasAllChildrenOfSecondRegion = false;
-                        }
-                    }
-                }
-                else if(event.kind == CollectionEventKind.REPLACE)
-                    replaceEvent = event;
-            }
-
-            var removeEvent:CollectionEvent = null;
-            var replaceEvent:CollectionEvent = null;
-            var REMOVEDEventHasAllChildrenOfSecondRegion:Boolean = true;
-
-            //GIVEN
-            _sut.addEventListener(CollectionEvent.COLLECTION_CHANGE, onCollectionChanged);
-            var region2:DataNode = _root.getItemAt(1) as DataNode;
-            var noChildrenOfSecondRegion:int = countAllChildrenOf(region2);
-
-            //WHEN
-            const newRegion:DataNode = new DataNode("Region(X)");
-            _root.setItemAt(newRegion, 1);
-
-            //THEN
-            assertNotNull(replaceEvent);
-            assertNotNull(removeEvent); //because the replaced node had children
-            assertTrue(REMOVEDEventHasAllChildrenOfSecondRegion);
-            assertEquals(-1, removeEvent.items.indexOf(region2));
-            assertNull(_sut.getParentItem(region2));
-            assertEquals(null, _sut.getParentItem(newRegion));
-            assertEquals(noItemsInHierarchy - noChildrenOfSecondRegion + 1, _sut.length);
-        }
-
-        [Test]
-        public function test_replacing_inaccessible_node_does_not_dispatch_REMOVED_collection_event_nor_changes_parent_references():void
-        {
-            function onCollectionChanged(event:CollectionEvent):void
-            {
-                if(event.kind == CollectionEventKind.REMOVE)
-                    removeEvent = event;
-                else if(event.kind == CollectionEventKind.REPLACE)
-                    replaceEvent = event;
-            }
-
-            var removeEvent:CollectionEvent = null;
-            var replaceEvent:CollectionEvent = null;
-
-            //GIVEN
-            _sut.addEventListener(CollectionEvent.COLLECTION_CHANGE, onCollectionChanged);
-            var company2:DataNode = getDirectChildrenOf(1, 1).getItemAt(1) as DataNode;
-            var departmentsOfCompany2:IList = company2.children;
-            var firstDepartment:DataNode = departmentsOfCompany2.getItemAt(0) as DataNode;
-
-            //WHEN
-            _sut.closeNode(_root.getItemAt(1)); //close second region
-            const newDepartment:DataNode = new DataNode("Region(2)->City(1)->Company(2)->DepartmentX");
-            departmentsOfCompany2.setItemAt(newDepartment, 0);
-
-            //THEN
-            assertNotNull(replaceEvent);
-            assertNull(removeEvent); //because the replaced node had no children
-            assertNull(_sut.getParentItem(firstDepartment));
-            assertEquals(company2, _sut.getParentItem(newDepartment));
-
-            var secondRegion:DataNode = DataNode(_root.getItemAt(1));
-            assertEquals(noItemsInHierarchy - countAllChildrenOf(secondRegion) + 1, _sut.length);
-        }
-
-
-        private function getDirectChildrenOf(...indexesOfSubsequentParents):IList
-        {
-            var currentLevel:IList = _root;
-            var i:int = -1;
-            while(currentLevel && ++i < indexesOfSubsequentParents.length)
-            {
-                var currentParent:DataNode = currentLevel.getItemAt(indexesOfSubsequentParents[i]) as DataNode;
-                currentLevel = currentParent ? currentParent.children : null;
-            }
-
-            return currentLevel;
-        }
-
-        private function isDescendantOf(node:DataNode, potentialAncestor:DataNode):Boolean
-        {
-            if(!potentialAncestor || !node)
-                return false;
-
-            var currentParent:DataNode = node.parent;
-            while(currentParent && currentParent != potentialAncestor)
-            {
-                currentParent = currentParent.parent;
-            }
-
-            return currentParent == potentialAncestor;
-        }
-
-        private function countAllChildrenOf(parent:DataNode):int
-        {
-            if(!parent.children || !parent.children.length)
-                return 1;
-            else
-            {
-                var noChildren:int = 0;
-                for(var i:int = 0; i < parent.children.length; i++)
-                {
-                    noChildren += countAllChildrenOf(parent.children.getItemAt(i) as DataNode);
-                }
-
-                return noChildren + 1;
-            }
-
-            return NaN;
-        }
-
-
-        private static const HIERARCHY_STRING:String = (<![CDATA[
-        Region(1)
-        Region(2)
-        Region(2)->City(0)
-        Region(2)->City(1)
-        Region(2)->City(1)->Company(1)
-        Region(2)->City(1)->Company(2)
-        Region(2)->City(1)->Company(2)->Department(1)
-        Region(2)->City(1)->Company(2)->Department(2)
-        Region(2)->City(1)->Company(2)->Department(2)->Employee(1)
-        Region(2)->City(1)->Company(2)->Department(2)->Employee(2)
-        Region(2)->City(1)->Company(2)->Department(2)->Employee(3)
-        Region(2)->City(1)->Company(2)->Department(3)
-        Region(2)->City(1)->Company(2)->Department(3)->Employee(1)
-        Region(2)->City(1)->Company(2)->Department(3)->Employee(2)
-        Region(2)->City(1)->Company(2)->Department(3)->Employee(3)
-        Region(2)->City(1)->Company(2)->Department(3)->Employee(4)
-        Region(2)->City(1)->Company(3)
-        Region(2)->City(1)->Company(3)->Department(1)
-        Region(2)->City(1)->Company(3)->Department(1)->Employee(1)
-        Region(2)->City(1)->Company(3)->Department(2)
-    ]]>).
-        toString();
-    }
-}