Example #1
0
        public void TestObjectNurse_Children()
        {
            //init test objects
            UIATestObject childTestObject2 = new UIATestObject();
            UIATestObject childTestObject3 = new UIATestObject();


            _childTestObject.AddChild(_grandChildTestObject);
            _parentTestObject.AddChild(_childTestObject);
            _parentTestObject.AddChild(childTestObject2);
            _parentTestObject.AddChild(childTestObject3);

            //initialize nurse objects
            TestObjectNurse parentNurse = new TestObjectNurse(_parentTestObject);

            TestObjectNurse childNurse  = parentNurse.AddChild(_childTestObject) as TestObjectNurse;
            TestObjectNurse childNurse2 = parentNurse.AddChild(childTestObject2) as TestObjectNurse;
            TestObjectNurse childNurse3 = parentNurse.AddChild(childTestObject3) as TestObjectNurse;

            Assert.AreEqual(3, parentNurse.Children.Count);

            Assert.AreEqual(_childTestObject, parentNurse[0].TestObject);
            Assert.AreEqual(childTestObject2, parentNurse[1].TestObject);
            Assert.AreEqual(childTestObject3, parentNurse[2].TestObject);
        }
        private static TestObjectNurse BuildTestObjectsHierarchy(List <AutomationElement> ancestorElements,
                                                                 BreadcrumbControl breadcrumbControl,
                                                                 LAPListViewControl listView,
                                                                 Bitmap bmpDeskTop
                                                                 )
        {
            int ancestorCount            = ancestorElements.Count;
            int breadcrumbCount          = breadcrumbControl.Count;
            int indexOfAutomationElement = 0;

            UIATestObject   topTestObject      = UIAUtility.CreateTestObject(ancestorElements[0]);
            TestObjectNurse topNurseObject     = new TestObjectNurse(topTestObject);
            TestObjectNurse currentNurseObject = topNurseObject;

            if (ancestorCount > breadcrumbCount)
            {
                for (indexOfAutomationElement = 1; indexOfAutomationElement < ancestorCount && breadcrumbCount < ancestorCount - indexOfAutomationElement; ++indexOfAutomationElement)
                {
                    AutomationElement element = ancestorElements[indexOfAutomationElement];
                    if (!string.IsNullOrEmpty(element.Current.Name))
                    {
                        UIATestObject childTestObject = UIAUtility.CreateTestObject(element);
                        currentNurseObject = (TestObjectNurse)currentNurseObject.AddChild(childTestObject);
                    }
                }
            }

            Breadcrumb[] breadcrumbs = breadcrumbControl.GetItems();
            foreach (Breadcrumb breadcrumb in breadcrumbs)
            {
                if (breadcrumb.Checked)
                {
                    UIATestObject childTestObject = UIAUtility.CreateTestObject((breadcrumb.Tag as ElementProperties).AutomationElement);
                    currentNurseObject = (TestObjectNurse)currentNurseObject.AddChild(childTestObject);
                }
            }

            ListView.CheckedListViewItemCollection selectedItems = listView.CheckedItems;

            foreach (ListViewItem item in selectedItems)
            {
                if (null == item.Tag)
                {
                    continue;
                }
                ElementProperties ep       = item.Tag as ElementProperties;
                TestObjectNurse   subNurse = ep.ToNurseObject();

                subNurse.ImageFile = SnapshotHelper.SnapshotFileFromBitmap(subNurse.TestObject, bmpDeskTop);
                currentNurseObject.AddChild(subNurse);
            }
            return(topNurseObject);
        }
        public void AppEnvironment_DumpRecyclingBin()
        {
            string modelFilePath = "TempModelFile.json";

            try
            {
                AppEnvironment.CurrentModelFile = AppModelFile.Create(modelFilePath);

                //init test objects
                UIATestObject     _parentTestObject     = new UIATestObject();
                UIATestObject     _childTestObject      = new UIATestObject();
                UIATestObject     childTestObject2      = new UIATestObject();
                VirtualTestObject _grandChildTestObject = new VirtualTestObject();

                CreatePicture(AppEnvironment.CurrentModelFile);


                //initialize nurse objects
                TestObjectNurse parentNurse = new TestObjectNurse(_parentTestObject);

                TestObjectNurse childNurse      = parentNurse.AddChild(_childTestObject) as TestObjectNurse;
                TestObjectNurse childNurse2     = parentNurse.AddChild(childTestObject2) as TestObjectNurse;
                TestObjectNurse grandChildNurse = childNurse.AddChild(_grandChildTestObject) as TestObjectNurse;

                string imagePath1 = AppEnvironment.GetModelResourceFilePath("TestObjectNurseTest.png");
                string imagePath2 = AppEnvironment.GetModelResourceFilePath("TestObjectNurseTest1.png");

                Assert.IsTrue(File.Exists(imagePath1));
                Assert.IsTrue(File.Exists(imagePath2));

                childNurse2.ImageFile     = "TestObjectNurseTest.png";
                grandChildNurse.ImageFile = "TestObjectNurseTest1.png";

                parentNurse.RemoveChild(childNurse);
                Assert.IsTrue(File.Exists(imagePath1));
                parentNurse.RemoveChild(childNurse2);
                Assert.IsTrue(File.Exists(imagePath2));

                AppEnvironment.DumpRecyclingBin(parentNurse);

                Assert.IsFalse(File.Exists(imagePath1));
                Assert.IsFalse(File.Exists(imagePath2));
            }
            finally
            {
                File.Delete("TestObjectNurseTest.png");
                File.Delete("TestObjectNurseTest1.png");
            }
        }
Example #4
0
        public void TestObjectNurse_AddChild_NurseObject()
        {
            UIATestObject   grandParentTestObject = new UIATestObject();
            TestObjectNurse grandParentNurse      = new TestObjectNurse(grandParentTestObject);

            TestObjectNurse parentNurse = new TestObjectNurse(_parentTestObject);

            grandParentNurse.AddChild(parentNurse);

            //Add the child test object to the tree,
            TestObjectNurse childNurse = new TestObjectNurse(_childTestObject);

            parentNurse.AddChild(childNurse);

            Assert.AreEqual(_childTestObject, childNurse.TestObject);

            //Assert hierarchy
            Assert.AreEqual(childNurse, parentNurse.Children[0]);
            Assert.AreEqual(parentNurse, childNurse.Parent);

            Assert.AreEqual(_parentTestObject, _childTestObject.Parent);
            Assert.AreEqual(_childTestObject, _parentTestObject.Children[0]);

            Assert.AreEqual(grandParentNurse.TreeNode, parentNurse.TreeNode.Parent);

            Assert.AreEqual(parentNurse.TreeNode, childNurse.TreeNode.Parent);
            Assert.AreEqual(childNurse.TreeNode, parentNurse.TreeNode.Nodes[0]);
        }
Example #5
0
        /// <summary>
        /// return value: indicate whether the tree node is changed
        /// </summary>
        /// <param name="fromNode"></param>
        /// <param name="condition"></param>
        /// <returns></returns>
        private bool NeighbourChecker(TestObjectNurse fromNode, TestObjectNurse condition)
        {
            if (SelfCondition != condition)
            {
                return(false);
            }

            bool changed = false;

            TestObjectNurse parentNurse = fromNode.ParentNurse;

            if (LeftCondition != null)
            {
                TestObjectNurse repoNode = FindMatchingNode(parentNurse, LeftCondition);
                if (repoNode == null)
                {
                    if (parentNurse != null)
                    {
                        parentNurse.AddChild(LeftCondition);
                    }
                    TreeNode tempNode = parentNurse.Nodes.Insert(parentNurse.Children.Count - 1, "left", LeftCondition.NodeName);
                    tempNode.Tag = LeftCondition;
                    changed      = true;
                }
            }

            if (RightCondition != null)
            {
                TestObjectNurse repoNode = FindMatchingNode(parentNurse, RightCondition);
                if (repoNode == null)
                {
                    if (parentNurse != null)
                    {
                        parentNurse.AddChild(RightCondition);
                    }
                    TreeNode tempNode = parentNurse.Nodes.Add("right", RightCondition.ControlTypeString + ": " + RightCondition.ControlName);
                    tempNode.Tag = RightCondition;
                    changed      = true;
                }
            }
            return(changed);
        }
        public void TreeNodeHelper_MergeVirtualControlsToTree_TheSame()
        {
            TreeView treeView = new TreeView();

            UIATestObject   parentTestObject = new UIATestObject();
            TestObjectNurse parentNurse      = new TestObjectNurse(parentTestObject);

            parentNurse.AddChild(new VirtualTestObject("all", new Rectangle(11, 16, 200, 84)));
            parentNurse.AddChild(new VirtualTestObject("salary", new Rectangle(11, 102, 199, 74)));

            Assert.AreEqual(2, parentNurse.Children.Count);

            VirtualTestObject[] controls = new VirtualTestObject[]
            {
                new VirtualTestObject("all", new Rectangle(11, 16, 200, 84)),
                new VirtualTestObject("salary", new Rectangle(11, 102, 199, 74))
            };     // in total 6 controls.
            bool ret = TreeNodeHelper.MergeVirtualControlsToTree(controls, parentNurse.TreeNode);

            Assert.IsFalse(ret);
        }
Example #7
0
        public void SnapshotPictureBox_TestObject_Virtual()
        {
            UIATestObject testObject = new UIATestObject();

            TestObjectNurse nurseObject = new TestObjectNurse(testObject);

            nurseObject.ImageFile = "..\\SnapshotPictureBoxTest.png";

            VirtualTestObject virtualTestObject  = new VirtualTestObject("virtual1", new Rectangle(10, 20, 30, 40));
            TestObjectNurse   virtualNurseObject = nurseObject.AddChild(virtualTestObject) as TestObjectNurse;

            SnapshotPictureBox pictureBox = new SnapshotPictureBox();

            pictureBox.TestObject = virtualNurseObject;

            Rectangle[] virtualRects = pictureBox.VirtualRectangles;

            Assert.AreEqual(1, virtualRects.Length);
            Assert.AreEqual(new Rectangle(10, 20, 30, 40), virtualRects[0]);


            VirtualTestObject virtualTestObject2  = new VirtualTestObject("virtual2", new Rectangle(100, 200, 300, 400));
            TestObjectNurse   virtualNurseObject2 = nurseObject.AddChild(virtualTestObject2) as TestObjectNurse;

            pictureBox.TestObject = virtualNurseObject2;

            virtualRects = pictureBox.VirtualRectangles;

            Assert.AreEqual(1, virtualRects.Length);
            Assert.AreEqual(new Rectangle(100, 200, 300, 400), virtualRects[0]);


            pictureBox.TestObject = nurseObject;

            virtualRects = pictureBox.VirtualRectangles;

            Assert.AreEqual(0, virtualRects.Length);
            Assert.AreEqual(new Rectangle(0 + margin, 0 + margin, 100 - 2 * margin, 200 - 2 * margin)
                            , pictureBox.BorderRect);
        }
        public static void InitTest(TestContext context)
        {
            _treeView = new TreeView();

            TestObjectNurse treeNurse = TestObjectNurse.FromTree(_treeView);

            UIATestObject     rootObject   = new UIATestObject("root node", ControlType.Pane, null);
            UIATestObject     parentObject = new UIATestObject("parent node", ControlType.Pane, null);
            UIATestObject     childObject  = new UIATestObject("child1 node", ControlType.Button, null);
            VirtualTestObject childObject1 = new VirtualTestObject("child2 node", new Rectangle(10, 20, 30, 40));

            TestObjectNurse tempNurse = treeNurse.AddChild(rootObject) as TestObjectNurse;

            tempNurse = tempNurse.AddChild(parentObject) as TestObjectNurse;
            tempNurse.AddChild(childObject);
            tempNurse.AddChild(childObject1);

            UIATestObject rootObject1   = new UIATestObject("root1 node", ControlType.Pane, null);
            UIATestObject parentObject2 = new UIATestObject("parent2 node", ControlType.Pane, null);

            tempNurse = treeNurse.AddChild(rootObject1) as TestObjectNurse;
            treeNurse.AddChild(parentObject2);
        }
Example #9
0
        public void TestObjectNurse_AddChild_TestObject()
        {
            TestObjectNurse parentNurse = new TestObjectNurse(_parentTestObject);


            //Add the child test object to the tree,
            TestObjectNurse childNurse = parentNurse.AddChild(_childTestObject) as TestObjectNurse;

            Assert.AreEqual(_childTestObject, childNurse.TestObject);

            //Assert hierarchy
            Assert.AreEqual(childNurse, parentNurse.Children[0]);
            Assert.AreEqual(parentNurse, childNurse.Parent);

            Assert.AreEqual(_parentTestObject, _childTestObject.Parent);
            Assert.AreEqual(_childTestObject, _parentTestObject.Children[0]);
        }
        /// <summary>
        /// generate tree nodes hierarchy from the TestObjects hierarchy
        /// </summary>
        /// <param name="testObjects"></param>
        /// <param name="parentNurse"></param>
        private static void TestObjectToTreeNode(IEnumerable <ITestObject> testObjects, TestObjectNurse parentNurse)
        {
            if (testObjects == null)
            {
                return;
            }

            foreach (ITestObject to in testObjects)
            {
                TestObjectNurse nurse    = (TestObjectNurse)parentNurse.AddChild(to);
                TreeNode        treeNode = nurse.TreeNode;
                treeNode.Expand();

                TreeNodeHelper.FixTreeNodeImage(treeNode, nurse.ControlTypeString);

                TestObjectToTreeNode(to.Children, nurse);
            }
        }
        /// <summary>
        /// return the selfCondition
        /// </summary>
        /// <param name="treeView"></param>
        /// <returns></returns>
        private TestObjectNurse GetNurseObjectsLine(TreeView treeView)
        {
            TreeNode fromNode = treeView.Nodes[0];

            IElementProperties properties = (IElementProperties)fromNode.Tag;

            TestObjectNurse topNurseNode     = properties.ToNurseObject();
            TestObjectNurse currentNurseNode = topNurseNode;

            PreGetNurseObjectsLine(properties);

            while (fromNode != null)
            {
                switch (fromNode.Nodes.Count)
                {
                case 0:
                    fromNode = null;
                    break;

                case 1:
                    fromNode = fromNode.Nodes[0];
                    break;

                default:
                    fromNode = fromNode.Nodes["self"];
                    break;
                }

                //need refactoring
                if (fromNode != null && (fromNode.Checked))
                {
                    properties = (IElementProperties)fromNode.Tag;
                    TestObjectNurse childNurseNode = properties.ToNurseObject();
                    bool            need2Add       = PreGetNurseObjectsLine((IElementProperties)fromNode.Tag);
                    if (need2Add || fromNode.IsSelected)
                    {
                        currentNurseNode.AddChild(childNurseNode);
                        currentNurseNode = childNurseNode;
                    }
                }
            }

            return(currentNurseNode);
        }
Example #12
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="newControls"></param>
        /// <param name="parentNode"></param>
        /// <returns>return whether virtual controls are changed</returns>
        public static bool MergeVirtualControlsToTree(VirtualTestObject[] newControls, TreeNode parentNode)
        {
            TestObjectNurse parentNurse = TestObjectNurse.FromTreeNode(parentNode);

            //remove the previously attached nodes.
            List <ITestObject> oldControls = new List <ITestObject>(parentNurse.Children).FindAll(to => ((TestObjectNurse)to).TestObject is VirtualTestObject);

            if (oldControls.Count() == newControls.Count())
            {
                int i = 0;
                foreach (TestObjectNurse oldControl in oldControls)
                {
                    VirtualTestObject oldObject = (VirtualTestObject)oldControl.TestObject;
                    VirtualTestObject newObject = newControls[i];
                    if (oldObject != newObject)
                    {
                        break;
                    }
                    ++i;
                }
                if (i == newControls.Count())
                {
                    return(false);                          //exactly the same, not update.
                }
            }
            foreach (ITestObject testObject in oldControls)
            {
                parentNurse.RemoveChild(testObject);
            }

            //Add new virtual nodes
            foreach (VirtualTestObject testObject in newControls)
            {
                parentNurse.AddChild(testObject);
            }
            return(true);
        }
Example #13
0
        //[TestMethod]

        /*
         * public void LPSpy_MenuEditWindowClick()
         * {
         *  object sender = null;
         *  EventArgs args = new EventArgs();
         *
         *  TreeView treeView = window.TreeObjects;
         *
         *  TreeNode virtualNode = populateTree(treeView, "VirtualNode1").TreeNode;
         *
         *  window.TreeObjects.SelectedNode = virtualNode;
         *
         *  window.mnuEditVirtualControls_Click(sender, args);
         *
         * }*/

        public TestObjectNurse populateTree(TreeView treeView, string nodeToSelect)
        {
            TestObjectNurse rootNurse   = TestObjectNurse.FromTree(treeView);
            TestObjectNurse parentNurse = new TestObjectNurse(new UIATestObject()
            {
                NodeName = "RootNode1"
            })
            {
                ImageFile = "test_snapshot.png"
            };
            TestObjectNurse virtualNurse1 = new TestObjectNurse(new VirtualTestObject()
            {
                NodeName = "VirtualNode1"
            });
            TestObjectNurse virtualNurse2 = new TestObjectNurse(new VirtualTestObject()
            {
                NodeName = "VirtualNode2"
            });

            rootNurse.AddChild(parentNurse);
            parentNurse.AddChildren(virtualNurse1, virtualNurse2);

            switch (nodeToSelect)
            {
            case "RootNode1":
                return(parentNurse);

            case "VirtualNode1":
                return(virtualNurse1);

            case "VirtualNode2":
                return(virtualNurse2);
            }

            return(null);
        }
Example #14
0
        private bool MergeObjectsToMainTree(TestObjectNurse repoNurseNode, IEnumerable <ITestObject> testObjectNodes) //addCollection
        {
            bool found;
            bool changed = false;
            bool web     = false;

            foreach (TestObjectNurse testObjectNurse in testObjectNodes)
            {
                found = false;
                ITestObject testobject = testObjectNurse.TestObject;
                web = testobject.ControlTypeString.StartsWith("Web");

                //if ( null == (repoNurseNode.TestObject as UIATestObject ))
                //{

                //    TestObjectNurse newTestNurse = new TestObjectNurse(testObjectNurse.TestObject);

                //    newTestNurse.NodeName = testObjectNurse.TestObject.NodeName;

                //    repoNurseNode.AddChild(newTestNurse);

                //    TreeNode node = newTestNurse.TreeNode;

                //    changed = true;

                //    TreeNodeHelper.FixTreeNodeImage(node, "Button");

                //    MergeObjectsToMainTree(newTestNurse, testObjectNurse.Children);
                //   // NeighbourChecker(newTestNurse, testObjectNurse);

                //    RaiseMergeCompleteEvent(true);
                //    continue;
                //}
                ////UIACondition fromNodeCondition = (UIACondition)fromNode.Tag;
                TestObjectNurse repoNode = FindMatchingNode(repoNurseNode, testObjectNurse);

                if (repoNode != null)
                {
                    changed |= MergeObjectsToMainTree(repoNode, testObjectNurse.Children);
                    changed |= NeighbourChecker(repoNode, testObjectNurse);
                    repoNode.TreeNode.Expand();
                    found = true;
                }



                if (!found)
                {
                    TestObjectNurse newTestNurse = new TestObjectNurse(testObjectNurse.TestObject);
                    TreeNode        node         = newTestNurse.TreeNode;
                    if (web)
                    {
                        newTestNurse.NodeName = testObjectNurse.TestObject.NodeName;

                        repoNurseNode.AddChild(newTestNurse);

                        changed = true;

                        TreeNodeHelper.FixTreeNodeImage(node, testObjectNurse.TestObject.ControlTypeString);

                        MergeObjectsToMainTree(newTestNurse, testObjectNurse.Children);
                        // NeighbourChecker(newTestNurse, testObjectNurse);

                        RaiseMergeCompleteEvent(true);
                        continue;
                    }
                    UIATestObject     uiaTestObject = (UIATestObject)testObjectNurse.TestObject;
                    AutomationElement addedElement  = uiaTestObject.AutomationElement;

                    string nodeName;

                    // if Element not exist, use the default condition, if exist, create new condition, because this can create index for object.
                    bool elementExist = (!addedElement.Current.BoundingRectangle.IsEmpty);
                    if (!elementExist)
                    {
                        string tempNewName;

                        if (!string.IsNullOrEmpty(uiaTestObject.ControlName))
                        {
                            tempNewName = uiaTestObject.ControlName;
                        }
                        else
                        {
                            tempNewName = uiaTestObject.ControlTypeString;
                        }

                        nodeName = SpyWindowHelper.DeriveControlName(repoNurseNode, tempNewName);
                    }
                    else
                    {
                        nodeName = SpyWindowHelper.DeriveControlName(repoNurseNode, addedElement);
                        //TODO should use the following logic
                        //newCondition = new UIACondition(fromNode, nodeName);
                    }

                    string nodeText = testObjectNurse.NodeName = nodeName;

                    //TestObjectNurse newTestNurse = new TestObjectNurse(uiaTestObject);

                    newTestNurse.NodeName = nodeText;

                    repoNurseNode.AddChild(newTestNurse);

                    // TreeNode node = newTestNurse.TreeNode;

                    changed = true;

                    TreeNodeHelper.FixTreeNodeImage(node, uiaTestObject.ControlTypeString);

                    MergeObjectsToMainTree(newTestNurse, testObjectNurse.Children);
                    NeighbourChecker(newTestNurse, testObjectNurse);

                    node.Expand();
                    RaiseMergeCompleteEvent(true);
                }
            }

            return(changed);
        }