public void TestDragDrop() { Trace.WriteLine("TestDragDrop=========================================================="); var w = this.LaunchNotepad(); Rectangle treeBounds = this.TreeView.Bounds; Trace.WriteLine("OpenFileDialog"); w.InvokeAsyncMenuItem("openToolStripMenuItem"); Window openDialog = w.WaitForPopup(); Trace.WriteLine("Opening '" + TestDir + "UnitTests'"); openDialog.SendKeystrokes(TestDir + "UnitTests{ENTER}"); Sleep(1000); // Drag/drop from open file dialog into xml notepad client area. OpenFileDialog dialogWrapper = new OpenFileDialog(openDialog); Point drop = GetDropSpot(openDialog, treeBounds); Trace.WriteLine("Drop spot = " + drop.ToString()); AutomationWrapper item = dialogWrapper.GetFileItem("test1.xml"); if (item == null) { // try finding the item using the keyboard. throw new Exception("File item not found"); } Rectangle ibounds = item.Bounds; Point iloc = new Point(ibounds.Left + 10, ibounds.Top + 10); Trace.WriteLine("Dragging from " + iloc.ToString()); Mouse.MouseDragDrop(iloc, drop, 5, MouseButtons.Left); Sleep(1000); dialogWrapper.DismissPopUp("{ESC}"); // need bigger window to test drag/drop w.SetWindowSize(800, 600); w.InvokeMenuItem("collapseAllToolStripMenuItem"); w.InvokeMenuItem("expandAllToolStripMenuItem"); // Test mouse wheel AutomationWrapper tree = this.TreeView; CheckProperties(tree); w.SendKeystrokes("{HOME}"); Cursor.Position = tree.Bounds.Center(); Sleep(500); // wait for focus to kick in before sending mouse events. Mouse.MouseWheel(-120 * 15); // first one doesn't get thru for some reason! Sleep(500); Mouse.MouseWheel(120 * 15); Sleep(500); // Test navigation keys w.SendKeystrokes("{HOME}"); CheckNodeValue("<?xml version=\"1.0\" encoding=\"utf-8\"?>"); w.SendKeystrokes("{END}"); CheckNodeValue("<!--last comment-->"); w.SendKeystrokes("{PGUP}{PGDN}{UP}{UP}"); CheckNodeValue("Name"); // Get AutomationWrapper to selected node in the tree. AutomationWrapper ntv = this.NodeTextView; CheckProperties(ntv); // mouse down in node text view AutomationWrapper node = ntv.GetSelectedChild(); node = node.Parent.NextSibling; // Office node. CheckNodeName(node, "Office"); Rectangle bounds = node.Bounds; Mouse.MouseClick(bounds.Center(), MouseButtons.Left); // test edit of node value using AccessibilityObject string office = "35/1682"; node.Value = office; // for some odd reason the paste expands the element. Sleep(300); CheckNodeValue(office); // confirm via copy operation node = tree.GetSelectedChild(); if (node == null) { throw new ApplicationException("Selected node not found"); } CheckProperties(node); CheckNodeName(node, "Office"); node.AddToSelection(); // test edit of node name using accessibility. this.SetNodeName(node, "MyOffice"); CheckNodeValue("MyOffice"); // confirm via copy operation // Test that "right arrow" moves over to the nodeTextView. w.SendKeystrokes("{RIGHT}{DOWN}{RIGHT}"); CheckNodeValue("35/1682"); // confirm via copy operation Undo(); // make sure we can undo node name change! Undo(); // make sure we can undo node value change (while #text is expanded)! this.TreeView.SetFocus(); CheckNodeValue("Office"); Trace.WriteLine("Select the 'Country' node."); bounds = node.Bounds; Trace.WriteLine(bounds.ToString()); int itemHeight = bounds.Height; Point pt = bounds.Center(); pt.Y -= (itemHeight * 2); // Test mouse down in tree view; Mouse.MouseClick(pt, MouseButtons.Left); Sleep(200); node = tree.GetSelectedChild(); CheckNodeName(node, "Country"); Trace.WriteLine("Drag/drop country up 3 items"); Sleep(1000); // avoid double click by delaying next click Point endPt = new Point(pt.X, pt.Y - (int)(3 * itemHeight) - (itemHeight/2)); // Drag the node up three slots. Mouse.MouseDragDrop(pt, endPt, 5, MouseButtons.Left); Sleep(200); node = tree.GetSelectedChild(); CheckNodeName(node, "Country"); // Drag/drop to auto scroll, then leave the window and drop it on desktop Rectangle formBounds = w.GetScreenBounds(); Mouse.MouseDown(endPt, MouseButtons.Left); // Autoscroll Point treeTop = TopCenter(tree.Bounds, 2); Trace.WriteLine("--- Drag to top of tree view ---"); Mouse.MouseDragTo(endPt, treeTop, 5, MouseButtons.Left); Sleep(1000); // autoscroll time. // Drag out of tree view. Point titleBar = TopCenter(formBounds, 20); Trace.WriteLine("--- Drag to titlebar ---"); Mouse.MouseDragTo(treeTop, titleBar, 10, MouseButtons.Left); Sleep(1000); // should now have 'no drop icon'. Mouse.MouseUp(titleBar, MouseButtons.Left); // code coverage on expand/collapse. w.SendKeystrokes("^IOffice"); node.Invoke(); Sleep(500); w.SendKeystrokes("{LEFT}"); Sleep(500); w.SendKeystrokes("{RIGHT}"); Sleep(1000); Trace.WriteLine("Test task list resizers"); AutomationWrapper resizer = w.FindDescendant("TaskResizer"); Trace.WriteLine(resizer.Parent.Name); bounds = resizer.Bounds; Point mid = bounds.Center(); // Drag the resizer up a few pixels. Mouse.MouseDragDrop(mid, new Point(mid.X, mid.Y - 15), 2, MouseButtons.Left); Trace.WriteLine("Test tree view resizer"); resizer = w.FindDescendant("XmlTreeResizer"); Trace.WriteLine(resizer.Parent.Name); bounds = resizer.Bounds; mid = bounds.Center(); // Drag the resizer up a few pixels. Mouse.MouseDragDrop(mid, new Point(mid.X + 15, mid.Y), 2, MouseButtons.Left); this.SaveAndCompare("out.xml", "test4.xml"); }
public void TestSchemaDialog() { Trace.WriteLine("TestSchemaDialog=========================================================="); var w = LaunchNotepad(); Sleep(1000); Trace.WriteLine("Open Schema Dialog"); Window schemaDialog = w.OpenDialog("schemasToolStripMenuItem", "FormSchemas"); schemaDialog.InvokeMenuItem("clearToolStripMenuItem"); Trace.WriteLine("Add schema via file dialog"); var button = schemaDialog.FindDescendant("Browse Row 0"); button.Invoke(); // bring up file open dialog Sleep(1000); Window fileDialog = schemaDialog.WaitForPopup(); OpenFileDialog fd = new OpenFileDialog(fileDialog); string schema = TestDir + "UnitTests\\emp.xsd"; fd.FileName = schema; fd.DismissPopUp("{ENTER}"); schemaDialog.SendKeystrokes("^{HOME}+ "); // select first row Sleep(300); // just so we can watch it happen schemaDialog.SendKeystrokes("^c"); // copy string text = Clipboard.GetText(); if (!text.ToLowerInvariant().Contains("emp.xsd")) { throw new ApplicationException("Did not find 'test2.xsd' on the clipboard!"); } Trace.WriteLine("Close schema dialog"); schemaDialog.DismissPopUp("%O"); // hot key for OK button. Trace.WriteLine("Close Microsoft XML Notepad and reload it to ensure schema cache was persisted"); CloseApp(); w = LaunchNotepad(); Sleep(1000); schemaDialog = w.OpenDialog("schemasToolStripMenuItem", "FormSchemas"); Sleep(500); w.SendKeystrokes("^{HOME}+ "); // select first row Trace.WriteLine("Cut"); schemaDialog.SendKeystrokes("^x"); // cut text = Clipboard.GetText(); if (!text.ToLowerInvariant().Contains("emp.xsd")) { throw new ApplicationException("Did not find 'test2.xsd' on the clipboard!"); } Sleep(300); Trace.WriteLine("Paste"); schemaDialog.SendKeystrokes("^v"); // paste Sleep(300); Trace.WriteLine("Edit of filename cell."); schemaDialog.SendKeystrokes("^{HOME}{RIGHT}{RIGHT}" + schema + "{ENTER}"); Trace.WriteLine("Undo"); schemaDialog.SendKeystrokes("^z"); // undo Sleep(300); Trace.WriteLine("Redo"); schemaDialog.SendKeystrokes("^y"); // redo Sleep(300); Trace.WriteLine("Delete"); schemaDialog.SendKeystrokes("^{HOME}+ {DELETE}"); // delete first row Sleep(300); Trace.WriteLine("Undo"); schemaDialog.SendKeystrokes("^z"); // undo Sleep(300); Trace.WriteLine("Redo"); schemaDialog.SendKeystrokes("^y"); // redo Sleep(300); Trace.WriteLine("Undo"); schemaDialog.SendKeystrokes("^z"); // undo Sleep(300); Trace.WriteLine("Make sure we commit with some rows to update schema cache!"); schemaDialog.DismissPopUp("%O"); // hot key for OK button. Trace.WriteLine("Now add a duplicate target namespcace."); schemaDialog = w.OpenDialog("schemasToolStripMenuItem", "FormSchemas"); Sleep(500); Trace.WriteLine("Add emp2.xsd via paste"); schema = TestDir + "UnitTests\\emp2.xsd"; schemaDialog.SendKeystrokes("{DOWN}{RIGHT}{RIGHT}^ "); // select first row Clipboard.SetText(schema); schemaDialog.SendKeystrokes("^v"); schemaDialog.SendKeystrokes("^c"); // copy text = Clipboard.GetText(); if (!text.ToLowerInvariant().Contains("emp2.xsd")) { throw new ApplicationException("Did not find 'test2.xsd' on the clipboard!"); } Trace.WriteLine("Add duplicate schema via file dialog "); Sleep(1000); schemaDialog.InvokeAsyncMenuItem("addSchemasToolStripMenuItem"); fileDialog = schemaDialog.WaitForPopup(); fd = new OpenFileDialog(fileDialog); schema = TestDir + "UnitTests\\emp.xsd"; fd.FileName = schema; fd.DismissPopUp("{ENTER}"); Sleep(300); // just so we can watch it happen schemaDialog.SendKeystrokes("^c"); // copy first row text = Clipboard.GetText(); if (!text.ToLowerInvariant().Contains("emp.xsd")) { throw new ApplicationException("Did not find 'emp.xsd' on the clipboard!"); } Trace.WriteLine("Make sure we commit with the duplicate tns."); schemaDialog.SendKeystrokes("%O"); // hot key for OK button. Trace.WriteLine("Clear the schemas."); schemaDialog = w.OpenDialog("schemasToolStripMenuItem", "FormSchemas"); schemaDialog.InvokeMenuItem("clearToolStripMenuItem"); // Make sure we commit with the duplicate tns. schemaDialog.SendKeystrokes("%O"); // hot key for OK button. }