Esempio n. 1
0
        public void TestObjectNurse_FromTreeNode()
        {
            _childTestObject.AddChild(_grandChildTestObject);
            _parentTestObject.AddChild(_childTestObject);

            //Add it to tree
            TestObjectNurse rootNurse = new TestObjectNurse(_treeView);


            TestObjectNurse parentNurse = rootNurse.AddDecendants(_parentTestObject);

            TreeNode treeNode = parentNurse.TreeNode;

            TestObjectNurse nurseObject = TestObjectNurse.FromTreeNode(treeNode);

            Assert.AreEqual(parentNurse, nurseObject);

            TreeNode childNode = treeNode.Nodes[0];


            TestObjectNurse childNurseObject = TestObjectNurse.FromTreeNode(childNode);

            TestObjectNurse childNurse = parentNurse[0];

            Assert.AreEqual(childNurse, childNurseObject);
        }
Esempio n. 2
0
        public void StartToUpdate(ITestObject topNurse, ITestObject selfNurse,
                                  ITestObject leftNurse, ITestObject rightNurse)
        {
            LeftCondition  = (TestObjectNurse)leftNurse;
            RightCondition = (TestObjectNurse)rightNurse;
            SelfCondition  = (TestObjectNurse)selfNurse;

            TestObjectNurse rootNurse = TestObjectNurse.FromTree(_treeObjects);

            bool changed = MergeObjectsToMainTree(rootNurse, (new List <TestObjectNurse>()
            {
                (TestObjectNurse)topNurse
            }).AsReadOnly());

            if (changed)
            {
                RaiseMergeCompleteEvent(true);
            }


            /*
             * if (_selfCondition != null)
             * {
             *  if (_leftCondition != null)
             *  {
             *      _selfCondition.UpdateCondition(UIAPropertyKey.LeftCondition, _leftCondition);
             *      _selfCondition.UpdateCondition(UIAPropertyKey.Left, _leftCondition.NodeName);
             *  }
             *  if (_rightCondition != null)
             *  {
             *      _selfCondition.UpdateCondition(UIAPropertyKey.RightCondition, _rightCondition);
             *      _selfCondition.UpdateCondition(UIAPropertyKey.Right, _rightCondition.NodeName);
             *  }
             * }*/
        }
        public void ModelFileHandler_SaveToModelFile()
        {
            TreeView treeView = new TreeView();

            TestObjectNurse rootNurse = TestObjectNurse.FromTree(treeView);

            AppModel model = ModelFileHandler.LoadModelFile("UnitTestObjectModel1.json", rootNurse);


            TestObjectNurse nurseNode = (TestObjectNurse)rootNurse.FindRecursive(DescriptorKeys.NodeName, "Test Explorer");

            string imageFilePath = AppEnvironment.GetModelResourceFilePath("TestObjectNurseTest.png");

            CacheHandler.EnsureFileDirectoryExists(imageFilePath);

            Snapshot.CaptureImageToFile(new Rectangle(0, 0, 100, 200), imageFilePath);

            Assert.IsTrue(File.Exists(imageFilePath));

            nurseNode.ImageFile = "TestObjectNurseTest.png";

            //remove from root
            nurseNode.Remove();

            AppEnvironment.DumpRecyclingBin(rootNurse);
        }
        public int LoadProperties(DataGridView grid, TestObjectNurse nurseObject)
        {
            ITestObject testObject = nurseObject.TestObject;

            int count = 0;

            foreach (KeyValuePair<string, string> pair in nurseObject.CachedProperties)
            {
                if (!testObject.Properties.ContainsKey(pair.Key) && pair.Key != ControlKeys.ImagePath
                    && pair.Key != UIAControlKeys.BoundingRectangle
                    )
                {
                    string displayName = ControlKeysManager.GetDisplayString(pair.Key);
                    grid.Rows.Add(new object[] { displayName, pair.Value });
                    count++;
                }
            }

            if (!_condition.TestObject.Properties.ContainsKey(ControlKeys.Index))
            {
                grid.Rows.Add(new object[] { ControlKeysManager.GetDisplayString(ControlKeys.Index), 0 });
                count++;
            }
            return count;
        }
        public void ModelFileHandler_LoadJsonData()
        {
            TreeView treeView = new TreeView();

            TestObjectNurse rootNurse = TestObjectNurse.FromTree(treeView);

            ModelFileHandler.LoadModelFile("ObjectModel2.json", rootNurse);

            Assert.AreEqual(1, rootNurse.Children.Count, "only one root node");


            Assert.AreEqual(1, rootNurse.Children.Count);

            TestObjectNurse parentNurse = rootNurse[0];
            ITestObject     testObject  = parentNurse.TestObject;

            Assert.AreEqual(1, parentNurse.Children.Count);
            Assert.AreEqual("Window", testObject.ControlTypeString);

            TestObjectNurse childNurse = parentNurse[0];

            ITestObject testObject2 = childNurse.TestObject;

            Assert.AreEqual("Document", testObject2.ControlTypeString, "only one child node");
        }
Esempio n. 6
0
        private void LoadImage(TestObjectNurse testNurse)
        {
            if (testNurse == null /* || testNurse.ImageFile == null*/)
            {
                snapshotBox.Image       = null;
                snapshotBox2.TestObject = null;
                return;
            }

            snapshotBox.TestObject = snapshotBox2.TestObject = testNurse;

            string imageFile = testNurse.ImageFile;

            if (imageFile != null)
            {
                string path = AppEnvironment.GetModelResourceFilePath(imageFile);

                Image image = snapshotBox.Image;
                if (image != null)
                {
                    if (image.Height > snapshotBox.Height || image.Width > snapshotBox.Width)
                    {
                        snapshotBox.SizeMode = PictureBoxSizeMode.Zoom;
                    }
                    else
                    {
                        snapshotBox.SizeMode = PictureBoxSizeMode.Normal;
                    }
                }
            }
        }
        public static bool SaveToModelFile(TestObjectNurse rootNurse, string filePath)
        {
            AppModel model = new AppModel();

            foreach (TestObjectNurse nurseObject in rootNurse.Children)
            {
                ITestObject testObject = nurseObject.TestObject;

                model.Add(testObject);
            }

            try
            {
                WatcherEnable = false;
                AppModelManager.Save(model, filePath);

                EnsureWatcherCreated(filePath);
                AppEnvironment.CurrentModelPath = filePath;
            }
            finally
            {
                WatcherEnable = true;
            }

            return(true);
        }
        private void DeleteSelectedNode(TreeNode node = null)
        {
            TreeView tvObject     = treeObjects.Visible ? treeObjects : tvSearchResult;
            TreeNode nodeToDelete = node ?? tvObject.SelectedNode;

            if (nodeToDelete == null)
            {
                return;
            }

            TreeNode parentNode = nodeToDelete.Parent;

            TestObjectNurse nurseObject = TestObjectNurse.FromTreeNode(nodeToDelete);

            nurseObject.Remove();
            if (tvObject == tvSearchResult)
            {
                nodeToDelete.Remove();
            }
            if (parentNode == null)
            {
                if (tvObject.Nodes.Count > 0)
                {
                    tvObject.SelectedNode = tvObject.TopNode;
                }
            }
            else
            {
                tvObject.SelectedNode = parentNode;
            }
            SelectedNodesChanged(tvObject.SelectedNode);
            AppEnvironment.SetModelChanged(true);
        }
Esempio n. 9
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]);
        }
Esempio n. 10
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);
        }
Esempio n. 11
0
        public void CaptureSnapshot(TestObjectNurse nurseObject)
        {
            string token = null;

            UIATestObject testObject = nurseObject.TestObject as UIATestObject;

            if (testObject == null)
            {
                return;                     //not the UIA object
            }
            AutomationElement element = testObject.AutomationElement;

            if (SpySettings.CaptureSnapshots)
            {
                try
                {
                    //capture snapshot of clicked area
                    SnapshotHelper.CaptureTempSnapshot(element, out token);
                }
                catch (ElementNotAvailableException)
                {
                    MessageBox.Show(StringResources.LPSpy_SpyMainWindow_CannotFindObjectMsg);
                }
                catch (ApplicationException ex)
                {
                    MessageBox.Show(ex.Message);
                }
            }

            nurseObject.ImageFile = SnapshotHelper.GetCachedSnapshot(token, nurseObject.ImageFile);


            AppEnvironment.SetModelChanged(true);
        }
Esempio n. 12
0
        public static bool SaveToModelFile(TestObjectNurse rootNurse)
        {
            string filePath = AppEnvironment.CurrentModelPath;
            bool   ret      = SaveToModelFile(rootNurse, filePath);

            AppEnvironment.DumpRecyclingBin(rootNurse);
            return(ret);
        }
 private void toolStripRefresh_Click(object sender, EventArgs e)
 {
     if (this.Visible)
     {
         TestObjectNurse nurseObject = _condition = TestObjectNurse.FromTreeNode((TreeNode)this.Tag);
         ReloadElementData(this.propertyGrid, nurseObject);
     }
 }
Esempio n. 14
0
        /// <summary>
        /// Initializes a new instance of the PropertyTable class.
        /// </summary>
        public TestObjectPropertyBag(TestObjectNurse testNurse)
        {
            _testNurse = testNurse;

            PropertySpec[] specs = AddProperties();

            Properties.AddRange(specs);
        }
        private void mnuCaptureSnapshot_Click(object sender, EventArgs e)
        {
            TestObjectNurse nurseObject = TestObjectNurse.FromTreeNode(_selectedNode);

            SelectedNodesChanged(nurseObject.TreeNode);

            _presenterModel.CaptureSnapshot(nurseObject);
        }
Esempio n. 16
0
 public ToMethodsViewer(TestObjectNurse nurseObject, System.Windows.Point position)
 {
     _nurseObject    = nurseObject;
     _mouseposition  = position;
     FormBorderStyle = FormBorderStyle.FixedDialog;
     InitializeComponent();
     InitializelvControl();
     buildlvControl();
 }
Esempio n. 17
0
        private void ConditionSelectorWindow_Load(object sender, EventArgs e)
        {
            Debug.Assert(this.Tag != null);

            TestObjectNurse nurseObject = TestObjectNurse.FromTreeNode((TreeNode)this.Tag);
            UIATestObject   testObject  = new UIATestObject();

            FillListView(testObject);
        }
        private void treeObjects_OnDropItemIntoTree(object sender, DragEventArgs e)
        {
            TreeNode myNode = null;

            if (e.Data.GetDataPresent(typeof(TreeNode)))
            {
                myNode = (TreeNode)(e.Data.GetData(typeof(TreeNode)));
            }
            else
            {
                return;
            }

            Point position = new Point(e.X, e.Y);

            position = this.treeObjects.PointToClient(position);

            TreeNode dropNode = this.treeObjects.GetNodeAt(position);

            TreeNode dragNode = null;

            bool needUpdate = false;

            if ((dropNode != null && dropNode.Parent != myNode && dropNode != myNode) || (dropNode == null))
            {
                dragNode = myNode;
                myNode.Remove();
                needUpdate = true;
            }

            if (dragNode != null && needUpdate)
            {
                TestObjectNurse dragNurse = TestObjectNurse.FromTreeNode(dragNode);
                string          newName   = "";
                if (dropNode == null)
                {
                    newName = SpyWindowHelper.DeriveControlName(RootNurseObject, dragNurse.NodeName);
                    treeObjects.Nodes.Add(dragNode);
                }
                else
                {
                    newName = SpyWindowHelper.DeriveControlName(RootNurseObject, dragNurse.NodeName);
                    dropNode.Nodes.Add(dragNode);
                }

                if (newName != dragNurse.NodeName)
                {
                    dragNurse.NodeName = newName;

                    SelectedNodesChanged(dragNode);

                    MessageBox.Show(string.Format(StringResources.LPSpy_SpyMainWindow_ObjNameSameMsg, newName));
                }
                treeObjects.SelectedNode = dragNode;
                AppEnvironment.SetModelChanged(true);
            }
        }
        public void ModelFileHandler_SaveJson()
        {
            TreeView treeView = new TreeView();

            TestObjectNurse rootNurse = TestObjectNurse.FromTree(treeView);

            AppModel model = ModelFileHandler.LoadModelFile("UnitTestObjectModel1.json", rootNurse);

            ModelFileHandler.SaveToModelFile(rootNurse, "ObjectModel2.json");
        }
Esempio n. 20
0
        private void WebRefreshNodeTag(TreeNode node)
        {
            SETestObject seTestObject = TestObjectNurse.FromTreeNode(node).TestObject as SETestObject;

            seTestObject.WebDriver = _webDriverHost.WebDriver;
            foreach (TreeNode node0 in node.Nodes)
            {
                WebRefreshNodeTag(node0);
            }
        }
Esempio n. 21
0
        public void TestObjectNurse_NodeName()
        {
            UIATestObject testObject = new UIATestObject();

            testObject.ControlType = ControlType.ComboBox;

            TestObjectNurse nurse = new TestObjectNurse(testObject);

            nurse.NodeName = "HelloWorld";
            Assert.AreEqual("ComboBox: HelloWorld", nurse.TreeNode.Text);
        }
Esempio n. 22
0
        private void LoadFile()
        {
            string tempFilePath = AppEnvironment.CurrentModelPath;

            if (File.Exists(tempFilePath))
            {
                TestObjectNurse testObjectNurse = TestObjectNurse.FromTree(_presenterModel.GetTreeView());

                ModelFileHandler.LoadModelFile(tempFilePath, testObjectNurse);
            }
        }
Esempio n. 23
0
 public static void WantToSave(TestObjectNurse rootNurseObject)
 {
     if (AppEnvironment.ModelStatus)
     {
         if (MessageBox.Show(StringResources.LPSpy_SpyMainWindow_SaveWarningMsg, StringResources.WarningTitle,
                             MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes)
         {
             Save(rootNurseObject);
         }
     }
 }
Esempio n. 24
0
        public void mnuPropertyRemove_Click(object sender, EventArgs e)
        {
            string key = this.SelectedGridItem.PropertyDescriptor.Name;
            TestObjectNurse nurseObject = (TestObjectNurse)this.Tag;
            if (SpyWindowHelper.DeleteSelectedProperties(key, nurseObject.TestObject))
            {
                SetTestObject(nurseObject);

                AppEnvironment.SetModelChanged(true);
            }

        }
        private void mnuEditVirtualControls_Click(object sender, EventArgs e)
        {
            if (treeObjects.SelectedNode == null)
            {
                MessageBox.Show(StringResources.LPSpy_SpyMainWindow_SelNodeWarningMsg);
                return;
            }

            TreeNode node = treeObjects.SelectedNode;

            _presenterModel.EditVirtualControl(TestObjectNurse.FromTreeNode(node));
        }
Esempio n. 26
0
        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);
        }
Esempio n. 27
0
        public static bool Save(TestObjectNurse rootNurseObject)
        {
            bool succeed = ModelFileHandler.SaveToModelFile(rootNurseObject);

            if (succeed)
            {
                AppEnvironment.SetModelChanged(false);
            }

            SpySettings.Persist();
            return(succeed);
        }
Esempio n. 28
0
        public void TestObjectNurse_ContainsKeyword()
        {
            UIATestObject testObject = new UIATestObject("Hello World", ControlType.Button, null);

            TestObjectNurse nurse = new TestObjectNurse(testObject);

            Assert.IsTrue(nurse.ContainsKeyword("Hello"));
            Assert.IsTrue(nurse.ContainsKeyword("WORLD"));

            Assert.IsFalse(nurse.ContainsKeyword("HelloWorld"));

            Assert.IsTrue(nurse.ContainsKeyword("BUTTON"));
        }
Esempio n. 29
0
        public void TestObjectNurse_Clear()
        {
            _childTestObject.AddChild(_grandChildTestObject);
            _parentTestObject.AddChild(_childTestObject);

            //root Nurse doesn't contain valid testObject, valid test objects start from its children
            TestObjectNurse rootNurse = TestObjectNurse.AddTree(_treeView, _parentTestObject);

            rootNurse.Clear();

            Assert.AreEqual(0, rootNurse.Children.Count);
            Assert.AreEqual(0, rootNurse.Nodes.Count);
        }
        private void AddButton_Click(object sender, EventArgs e)
        {
            TestObjectNurse nurseObject = TestObjectNurse.FromTreeNode((TreeNode)this.Tag);

            SpyWindowHelper.AddSelectedProperty(propertyGrid, nurseObject);

            if (EndUpdating != null)
            {
                EndUpdating(nurseObject);
            }
            this.Dispose();

        }