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"); } }
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]); }
/// <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); }
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); }
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); }
/// <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); }
//[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); }
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); }