protected override IRawElementProviderSimple GetProvider() { SWF.HelpProvider swfHelpProvider = new SWF.HelpProvider(); SWF.Button swfButton = new SWF.Button(); swfButton.Location = new SD.Point(3, 3); swfButton.Size = new SD.Size(272, 72); swfButton.Text = "With help"; SWF.Button swfButtonNoHelp = new SWF.Button(); swfButtonNoHelp.Location = new SD.Point(3, 30); swfButtonNoHelp.Size = new SD.Size(272, 72); swfButtonNoHelp.Text = "No help"; //We have to use an event to fake the user click swfButton.Click += new System.EventHandler(OnControlClicked); swfHelpProvider.SetShowHelp(swfButton, true); swfHelpProvider.SetHelpString(swfButton, "I'm showing a button tooltip."); Form.Controls.Add(swfButton); Form.Controls.Add(swfButtonNoHelp); //Testing ToolTipOpenedEvent bridge.ResetEventLists(); swfButton.PerformClick(); //Clicking the button will fake the event! StructureChangedEventTuple eventTuple = bridge.GetStructureChangedEventAt(0, StructureChangeType.ChildAdded); return(eventTuple.provider as IRawElementProviderSimple); }
public void CollectionTest() { ComboBox combobox = GetComboBox(); IRawElementProviderFragmentRoot rootProvider = (IRawElementProviderFragmentRoot)GetProviderFromControl(combobox); IRawElementProviderFragment list = rootProvider.Navigate(NavigateDirection.FirstChild); while (list != null) { if ((int)list.GetPropertyValue(AutomationElementIdentifiers.ControlTypeProperty.Id) == ControlType.List.Id) { break; } list = list.Navigate(NavigateDirection.NextSibling); } Assert.IsNotNull(list, "We must have a List"); IRawElementProviderFragment item0 = list.Navigate(NavigateDirection.FirstChild); Assert.IsNull(item0, "We shouldn't have children in List"); //Add item 0. (Items.Add) bridge.ResetEventLists(); combobox.Items.Add("Item 0"); StructureChangedEventTuple tuple = bridge.GetStructureChangedEventFrom(StructureChangeType.ChildAdded); Assert.IsNotNull(tuple, "We should have tuple"); Assert.AreEqual(((IRawElementProviderFragment)tuple.provider).FragmentRoot, list, "Added item.FragmentRoot != list"); item0 = list.Navigate(NavigateDirection.FirstChild); Assert.IsNotNull(item0, "We should have children in List"); //Add item 1. (Items.Add) bridge.ResetEventLists(); combobox.Items.Add("Item 1"); tuple = bridge.GetStructureChangedEventFrom(StructureChangeType.ChildAdded); Assert.IsNotNull(tuple, "We should have tuple"); Assert.AreEqual(((IRawElementProviderFragment)tuple.provider).FragmentRoot, list, "Added item.FragmentRoot != list"); IRawElementProviderFragment item1 = item0.Navigate(NavigateDirection.NextSibling); Assert.IsNotNull(item1, "We should have children in List"); Assert.AreEqual(item1.Navigate(NavigateDirection.PreviousSibling), item0, "Navigation invalid: item1 -> item0"); Assert.AreEqual(item0.Navigate(NavigateDirection.NextSibling), item1, "Navigation invalid: item1 <- item0"); //Remove item 0 (Items.RemoveAt) bridge.ResetEventLists(); combobox.Items.RemoveAt(0); tuple = bridge.GetStructureChangedEventFrom(StructureChangeType.ChildRemoved); Assert.IsNotNull(tuple, "We should have tuple."); Assert.AreEqual(((IRawElementProviderFragment)tuple.provider).FragmentRoot, list, "Removed item.FragmentRoot != list"); Assert.IsNotNull(list.Navigate(NavigateDirection.FirstChild), "We should STILL have children in List"); Assert.AreEqual(list.Navigate(NavigateDirection.FirstChild), item1, "Navigation invalid: parent.FirstChild != item1"); //Add item 2 y 3 (Items.AddRange) bridge.ResetEventLists(); combobox.Items.AddRange(new object [] { "Item 2", "Item 3" }); Assert.AreEqual(2, bridge.GetStructureChangedEventCount(StructureChangeType.ChildAdded), "We should have two events"); StructureChangedEventTuple tuple0 = bridge.GetStructureChangedEventAt(0, StructureChangeType.ChildAdded); Assert.IsNotNull(tuple0, "We should have tuple0."); StructureChangedEventTuple tuple1 = bridge.GetStructureChangedEventAt(1, StructureChangeType.ChildAdded); Assert.IsNotNull(tuple1, "We should have tuple1."); Assert.AreEqual(((IRawElementProviderFragment)tuple0.provider).FragmentRoot, list, "Added item2.FragmentRoot != list"); Assert.AreEqual(((IRawElementProviderFragment)tuple1.provider).FragmentRoot, list, "Added item3.FragmentRoot != list"); IRawElementProviderFragment item2 = item1.Navigate(NavigateDirection.NextSibling); Assert.IsNotNull(item2, "We should have children in List"); IRawElementProviderFragment item3 = item2.Navigate(NavigateDirection.NextSibling); Assert.AreEqual(item3.Navigate(NavigateDirection.PreviousSibling), item2, "Navigation invalid: item2 -> item3"); Assert.AreEqual(item2.Navigate(NavigateDirection.NextSibling), item3, "Navigation invalid: item2 <- item3"); // We have: "Item1", "Item2" "Item3". Lets replace "Item2" with "Item4" bridge.ResetEventLists(); combobox.Items [1] = "Item4"; Assert.AreEqual(1, bridge.GetStructureChangedEventCount(StructureChangeType.ChildRemoved), "We should have 1 event"); Assert.AreEqual(1, bridge.GetStructureChangedEventCount(StructureChangeType.ChildAdded), "We should have 1 event"); StructureChangedEventTuple tupleReplacedRemoved = bridge.GetStructureChangedEventAt(0, StructureChangeType.ChildRemoved); Assert.IsNotNull(tupleReplacedRemoved, "Replaced: Removed tupple shouldn't be null"); Assert.AreEqual(tupleReplacedRemoved.provider, item2, "Removed item should be Item2"); StructureChangedEventTuple tupleReplacedAdded = bridge.GetStructureChangedEventAt(0, StructureChangeType.ChildAdded); Assert.IsNotNull(tupleReplacedAdded, "Replaced: Added tupple shouldn't be null"); Assert.AreEqual(tupleReplacedAdded.provider, //Notice that elements ARE NOT SORTED item3.Navigate(NavigateDirection.NextSibling), "Navigation failed: item3 -> item4"); Assert.AreEqual(((IRawElementProviderFragment)tupleReplacedAdded.provider).Navigate(NavigateDirection.PreviousSibling), item3, "Navigation failed: item3 <- item4"); TestChildPatterns(rootProvider); // Lets clear all! bridge.ResetEventLists(); combobox.Items.Clear(); Assert.AreEqual(1, bridge.GetStructureChangedEventCount(StructureChangeType.ChildrenBulkRemoved), "We should have 1 event"); Assert.IsNull(list.Navigate(NavigateDirection.FirstChild), "We shouldn't have children in List"); }
public void BasicPropertiesTest() { SWF.HelpProvider swfHelpProvider = new SWF.HelpProvider(); SWF.Button swfButton = new SWF.Button(); swfButton.Location = new SD.Point(3, 3); swfButton.Size = new SD.Size(272, 72); swfButton.Text = "With help"; SWF.Button swfButtonNoHelp = new SWF.Button(); swfButtonNoHelp.Location = new SD.Point(3, 30); swfButtonNoHelp.Size = new SD.Size(272, 72); swfButtonNoHelp.Text = "No help"; //We have to use an event to fake the user click swfButton.Click += new System.EventHandler(OnControlClicked); swfHelpProvider.SetShowHelp(swfButton, true); swfHelpProvider.SetHelpString(swfButton, "I'm showing a button tooltip."); Form.Controls.Add(swfButton); Form.Controls.Add(swfButtonNoHelp); //Testing ToolTipOpenedEvent bridge.ResetEventLists(); swfButton.PerformClick(); //Clicking the button will fake the event! StructureChangedEventTuple eventTuple = bridge.GetStructureChangedEventAt(0, StructureChangeType.ChildAdded); Assert.IsNotNull(eventTuple, "GetAutomationEventAt (0)"); //We have the HelpProvider! IRawElementProviderFragment helpProvider = eventTuple.provider as IRawElementProviderFragment; Assert.IsNotNull(helpProvider, "helpProvider is null"); TestProperty(helpProvider, AutomationElementIdentifiers.IsControlElementProperty, true); TestProperty(helpProvider, AutomationElementIdentifiers.IsContentElementProperty, false); TestProperty(helpProvider, AutomationElementIdentifiers.HelpTextProperty, null); TestProperty(helpProvider, AutomationElementIdentifiers.LocalizedControlTypeProperty, "tool tip"); TestProperty(helpProvider, AutomationElementIdentifiers.ControlTypeProperty, ControlType.ToolTip.Id); TestProperty(helpProvider, AutomationElementIdentifiers.LabeledByProperty, null); TestProperty(helpProvider, AutomationElementIdentifiers.NameProperty, swfHelpProvider.GetHelpString(swfButton)); TestProperty(helpProvider, AutomationElementIdentifiers.IsKeyboardFocusableProperty, false); TestProperty(helpProvider, AutomationElementIdentifiers.ClickablePointProperty, null); // TODO: How to allow it? // bridge.ResetEventLists (); // // swfButtonNoHelp.PerformClick (); //Clicking this button will close the tooltip // // Assert.AreEqual (1, // bridge.GetAutomationEventCount (InvokePatternIdentifiers.InvokedEvent), // "AutomationElementIdentifiers.InvokedEvent"); // // Assert.IsNotNull (bridge.GetStructureChangedEventAt (0, StructureChangeType.ChildRemoved), // "AutomationElementIdentifiers.ChildRemoved"); }