public MenuItem (IRawElementProviderSimple provider) : base (provider) { if (provider == null) throw new ArgumentNullException ("provider"); if ((provider as IRawElementProviderFragment) == null) throw new ArgumentException ("Provider for ParentMenu should be IRawElementProviderFragment"); textExpert = TextImplementorFactory.GetImplementor (this, provider); Role = Atk.Role.MenuItem; string name = (string) provider.GetPropertyValue (AutomationElementIdentifiers.NameProperty.Id); if (!String.IsNullOrEmpty (name)) Name = name; invokeProvider = (IInvokeProvider) provider.GetPatternProvider (InvokePatternIdentifiers.Pattern.Id); toggleProvider = (IToggleProvider) provider.GetPatternProvider (TogglePatternIdentifiers.Pattern.Id); selectionItemProvider = (ISelectionItemProvider) provider.GetPatternProvider (SelectionItemPatternIdentifiers.Pattern.Id); expandCollapseProvider = (IExpandCollapseProvider) provider.GetPatternProvider (ExpandCollapsePatternIdentifiers.Pattern.Id); actionExpert.Add ("click", "click", null, DoClick); }
public TreeItem (IRawElementProviderSimple provider) : base (provider) { invokeProvider = (IInvokeProvider)provider.GetPatternProvider(InvokePatternIdentifiers.Pattern.Id); selectionItemProvider = (ISelectionItemProvider)provider.GetPatternProvider(SelectionItemPatternIdentifiers.Pattern.Id); expandCollapseProvider = provider.GetPatternProvider ( ExpandCollapsePatternIdentifiers.Pattern.Id) as IExpandCollapseProvider; textExpert = TextImplementorFactory.GetImplementor (this, provider); actionExpert = new ActionImplementorHelper (); // TODO: Localize the name?s actionExpert.Add ("click", "click", null, DoClick); if (ToggleProvider != null) actionExpert.Add ("toggle", "toggle", null, DoToggle); if (invokeProvider != null) actionExpert.Add ("invoke", "invoke", null, DoInvoke); IRawElementProviderFragment fragment = Provider as IRawElementProviderFragment; if (fragment != null && fragment.Navigate (NavigateDirection.FirstChild) != null) AddExpandContractAction (); Role = (ToggleProvider != null? Atk.Role.CheckBox: Atk.Role.TableCell); imageExpert = new ImageImplementorHelper (this); editableTextExpert = new EditableTextImplementorHelper (this, this, textExpert); }
public Spinner (IRawElementProviderSimple provider) : base (provider) { Role = Atk.Role.SpinButton; rangeValueProvider = (IRangeValueProvider)provider.GetPatternProvider (RangeValuePatternIdentifiers.Pattern.Id); editableRange = provider.GetPatternProvider (EditableRangePatternIdentifiers.Pattern.Id) as IEditableRangeProvider; valueProvider = (IValueProvider)provider.GetPatternProvider (ValuePatternIdentifiers.Pattern.Id); textExpert = TextImplementorFactory.GetImplementor (this, provider); oldText = textExpert.Text; }
public ExpandCollapseButton (IRawElementProviderSimple provider) : base (provider) { ec_prov = (IExpandCollapseProvider)provider.GetPatternProvider ( ExpandCollapsePatternIdentifiers.Pattern.Id); Role = Atk.Role.ToggleButton; }
public Slider (IRawElementProviderSimple provider) : base (provider) { Role = Atk.Role.Slider; rangeValueProvider = (IRangeValueProvider)provider.GetPatternProvider (RangeValuePatternIdentifiers.Pattern.Id); textExpert = TextImplementorFactory.GetImplementor (this, provider); oldText = textExpert.Text; }
public Window (IRawElementProviderSimple provider) : base (provider) { if (provider != null) Role = Atk.Role.Frame; balloonWindow = (bool)(provider.GetPropertyValue (AutomationElementIdentifiers.IsNotifyIconProperty.Id) != null); rootProvider = (IRawElementProviderFragmentRoot) provider; if (rootProvider != null && balloonWindow) { Role = Atk.Role.Alert; Name = (string) provider.GetPropertyValue (AutomationElementIdentifiers.HelpTextProperty.Id); } transformProvider = (ITransformProvider) provider.GetPatternProvider (TransformPatternIdentifiers.Pattern.Id); windowProvider = (IWindowProvider) provider.GetPatternProvider (WindowPatternIdentifiers.Pattern.Id); }
public TextBoxEntryView (IRawElementProviderSimple provider) : base (provider) { if (IsTableCell) Role = Atk.Role.TableCell; else Role = Atk.Role.Text; if (provider.GetPatternProvider (TextPatternIdentifiers.Pattern.Id) == null && provider.GetPatternProvider (ValuePatternIdentifiers.Pattern.Id) == null) throw new ArgumentException ("Provider for TextBox should either implement IValue or IText"); textExpert = TextImplementorFactory.GetImplementor (this, provider); if ((int) provider.GetPropertyValue (AutomationElementIdentifiers.ControlTypeProperty.Id) == ControlType.Document.Id) multiLine = true; editableTextExpert = new EditableTextImplementorHelper (this, this, textExpert); }
public Hyperlink (IRawElementProviderSimple provider) : base (provider) { invokeProvider = (IInvokeProvider)provider.GetPatternProvider (InvokePatternIdentifiers.Pattern.Id); hypertext = (IHypertext)invokeProvider; links = new List<HyperlinkObject> (); Role = Atk.Role.Label; textExpert = TextImplementorFactory.GetImplementor (this, provider); }
public CheckBoxButton (IRawElementProviderSimple provider) : base (provider) { toggleProvider = (IToggleProvider) provider.GetPatternProvider (TogglePatternIdentifiers.Pattern.Id); imageImplementor = new ImageImplementorHelper (this); if (toggleProvider == null) throw new ArgumentException ("The provider for CheckBox should implement the Toggle pattern"); Role = Atk.Role.CheckBox; }
public TabPage (IRawElementProviderSimple provider): base (provider) { Role = Atk.Role.PageTab; selectionItemProvider = (ISelectionItemProvider)provider.GetPatternProvider ( SelectionItemPatternIdentifiers.Pattern.Id); if (selectionItemProvider == null) throw new ArgumentException ( "Provider for TabPage should implement ISelectionItemProvider"); }
public SplitContainer (IRawElementProviderSimple provider) : base (provider) { Role = Atk.Role.SplitPane; rangeValueProvider = (IRangeValueProvider)provider.GetPatternProvider (RangeValuePatternIdentifiers.Pattern.Id); object o = provider.GetPropertyValue (AutomationElementIdentifiers.OrientationProperty.Id); if (o is OrientationType) orientation = (OrientationType)o; else { IDockProvider dockProvider = (IDockProvider)provider.GetPatternProvider (DockPatternIdentifiers.Pattern.Id); if (dockProvider != null) { orientation = (dockProvider.DockPosition == DockPosition.Top || dockProvider.DockPosition == DockPosition.Bottom)? OrientationType.Horizontal: OrientationType.Vertical; } else { Log.Warn ("SplitContainer: Couldn't get orientation for splitter. Does not support DockProvider."); orientation = OrientationType.Horizontal; } } }
public HeaderItem (IRawElementProviderSimple provider) : base (provider) { Role = Atk.Role.TableColumnHeader; invokeProvider = (IInvokeProvider) provider.GetPatternProvider (InvokePatternIdentifiers.Pattern.Id); imageExpert = new ImageImplementorHelper (this); actionExpert = new ActionImplementorHelper (); if (invokeProvider != null) actionExpert.Add ("click", "click", null, DoClick); }
public ListItem (IRawElementProviderSimple provider) : base (provider) { invokeProvider = (IInvokeProvider)provider.GetPatternProvider(InvokePatternIdentifiers.Pattern.Id); selectionItemProvider = (ISelectionItemProvider)provider.GetPatternProvider(SelectionItemPatternIdentifiers.Pattern.Id); if (selectionItemProvider == null) throw new ArgumentException ("ListItem should always implement ISelectionItemProvider"); toggleProvider = (IToggleProvider) provider.GetPatternProvider (TogglePatternIdentifiers.Pattern.Id); textExpert = TextImplementorFactory.GetImplementor (this, provider); imageExpert = new ImageImplementorHelper (this); actionExpert = new ActionImplementorHelper (); editableTextExpert = new EditableTextImplementorHelper (this, this, textExpert); // TODO: Localize the name?s actionExpert.Add ("click", "click", null, DoClick); if (toggleProvider != null) actionExpert.Add ("toggle", "toggle", null, DoToggle); if (invokeProvider != null) actionExpert.Add ("invoke", "invoke", null, DoInvoke); Role = (toggleProvider != null? Atk.Role.CheckBox: Atk.Role.ListItem); }
// UI Automation Properties supported // AutomationElementIdentifiers.AcceleratorKeyProperty.Id // AutomationIdProperty() ? // AutomationElementIdentifiers.BoundingRectangleProperty.Id // AutomationElementIdentifiers.ClickablePointProperty.Id // AutomationElementIdentifiers.ControlTypeProperty.Id // AutomationElementIdentifiers.HelpTextProperty.Id // AutomationElementIdentifiers.IsContentElementProperty.Id // AutomationElementIdentifiers.IsControlElementProperty.Id // AutomationElementIdentifiers.IsKeyboardFocusableProperty.Id // AutomationElementIdentifiers.LabeledByProperty.Id // AutomationElementIdentifiers.LocalizedControlTypeProperty.Id // AutomationElementIdentifiers.NameProperty.Id public Button (IRawElementProviderSimple provider) : base (provider) { invokeProvider = (IInvokeProvider)provider.GetPatternProvider(InvokePatternIdentifiers.Pattern.Id); imageImplementor = new ImageImplementorHelper (this); InitializeAdditionalProviders (); if (invokeProvider != null) { //it seems the default description should be null actionName = default_invoke_name; Role = Atk.Role.PushButton; } textExpert = TextImplementorFactory.GetImplementor (this, provider); }
public static ITextImplementor GetImplementor (Adapter adapter, IRawElementProviderSimple prov) { ITextProvider textProvider = prov.GetPatternProvider (TextPatternIdentifiers.Pattern.Id) as ITextProvider; if (textProvider != null) return new TextProviderTextImplementor (adapter, textProvider); IValueProvider valueProvider = prov.GetPatternProvider (ValuePatternIdentifiers.Pattern.Id) as IValueProvider; if (valueProvider != null) return new ValueProviderTextImplementor (adapter, valueProvider); IRangeValueProvider rangeValueProvider = prov.GetPatternProvider (RangeValuePatternIdentifiers.Pattern.Id) as IRangeValueProvider; if (rangeValueProvider != null) return new RangeValueProviderTextImplementor (adapter, rangeValueProvider); return new NamePropertyTextImplementor (adapter, prov); }
public ComboBoxOptions (IRawElementProviderSimple provider) : base (provider) { if (provider == null) throw new ArgumentNullException ("provider"); if ((provider as IRawElementProviderFragment) == null) throw new ArgumentException ("Provider for ParentMenu should be IRawElementProviderFragment"); selectionProvider = (ISelectionProvider)provider.GetPatternProvider(SelectionPatternIdentifiers.Pattern.Id); if (selectionProvider == null) throw new ArgumentException ("The List inside the ComboBox should always implement ISelectionProvider"); selectionHelper = new SelectionProviderUserHelper (provider as IRawElementProviderFragment, selectionProvider); Role = Atk.Role.Menu; }
public ComboBoxItem (IRawElementProviderSimple provider) : base (provider) { int controlType = (int) provider.GetPropertyValue (AutomationElementIdentifiers.ControlTypeProperty.Id); selectionItemProvider = (ISelectionItemProvider)provider.GetPatternProvider ( SelectionItemPatternIdentifiers.Pattern.Id); if (selectionItemProvider == null) throw new ArgumentException ( String.Format ("Provider for ComboBoxItem (control type {0}) should implement ISelectionItemProvider", controlType)); textExpert = TextImplementorFactory.GetImplementor (this, provider); //FIXME: take in account ComboBox style changes at runtime if (ParentIsSimple ()) Role = Atk.Role.TableCell; else Role = Atk.Role.MenuItem; }
public ComboBox (IRawElementProviderSimple provider) : base (provider) { if (!(provider is IRawElementProviderFragment)) throw new ArgumentException ("Provider should be IRawElementProviderFragment"); this.Role = Atk.Role.ComboBox; selProvider = (ISelectionProvider)provider.GetPatternProvider (SelectionPatternIdentifiers.Pattern.Id); if (selProvider == null) throw new ArgumentException ("ComboBoxProvider should always implement ISelectionProvider"); selectionHelper = new SelectionProviderUserHelper ((IRawElementProviderFragment)Provider, selProvider, true); var providersSelected = selProvider.GetSelection (); if (providersSelected != null && providersSelected.Length == 1) Name = (string)providersSelected [0].GetPropertyValue (AEIds.NameProperty.Id); }
protected virtual void TestTableItemPattern_GetRowHeaderItems (IRawElementProviderSimple provider) { ITableItemProvider tableItemProvider = provider.GetPatternProvider (TableItemPatternIdentifiers.Pattern.Id) as ITableItemProvider; if (tableItemProvider == null) Assert.Fail ("Provider {0} is not implementing ITableItemProvider", provider.GetType ()); IRawElementProviderFragment child = provider as IRawElementProviderFragment; if (child == null) Assert.Fail ("Unable to test a non-navigable ITableItemProvider"); Assert.IsNotNull (tableItemProvider.ContainingGrid, "ContainingGrid should not be null"); // http://msdn.microsoft.com/en-us/library/system.windows.automation.provider.igriditemprovider.containinggrid.aspx Assert.IsNotNull (tableItemProvider.ContainingGrid.GetPatternProvider (GridPatternIdentifiers.Pattern.Id), "ContainingGrid must implement GridPatternProvider"); // Provider must never return null Assert.IsNotNull (tableItemProvider.GetRowHeaderItems (), "GetRowHeaderItems must return an empty array instead of returning null"); }
internal static bool IsSimple (IRawElementProviderSimple provider) { return provider.GetPatternProvider (ExpandCollapsePatternIdentifiers.Pattern.Id) == null; }
internal static void IDockProviderSetDockPositionTest (IRawElementProviderSimple provider, Control control) { IDockProvider dockProvider = (IDockProvider)provider.GetPatternProvider (DockPatternIdentifiers.Pattern.Id); Assert.IsNotNull (dockProvider, "Dock provider should not be null"); DockStyle dockOrig = control.Dock; dockProvider.SetDockPosition (DockPosition.Top); Assert.AreEqual (DockStyle.Top, control.Dock, "DockStyle Top"); dockProvider.SetDockPosition (DockPosition.Bottom); Assert.AreEqual (DockStyle.Bottom, control.Dock, "DockStyle Bottom"); dockProvider.SetDockPosition (DockPosition.Left); Assert.AreEqual (DockStyle.Left, control.Dock, "DockStyle Left"); dockProvider.SetDockPosition (DockPosition.Right); Assert.AreEqual (DockStyle.Right, control.Dock, "DockStyle Right"); if ((control is Splitter)) { try { dockProvider.SetDockPosition (DockPosition.None); Assert.Fail ("InvalidOperationException not thrown"); } catch (InvalidOperationException) { } try { dockProvider.SetDockPosition (DockPosition.Fill); Assert.Fail ("InvalidOperationException not thrown"); } catch (InvalidOperationException) { } } else { dockProvider.SetDockPosition (DockPosition.Fill); Assert.AreEqual (DockStyle.Fill, control.Dock, "DockStyle Fill"); dockProvider.SetDockPosition (DockPosition.None); Assert.AreEqual (DockStyle.None, control.Dock, "DockStyle None"); } control.Dock = dockOrig; }
internal static void IDockProviderDockPositionTest (IRawElementProviderSimple provider, Control control) { IDockProvider dockProvider = (IDockProvider)provider.GetPatternProvider (DockPatternIdentifiers.Pattern.Id); Assert.IsNotNull (dockProvider, "Dock provider should not be null"); DockStyle dockOrig = control.Dock; control.Dock = DockStyle.Top; Assert.AreEqual (DockPosition.Top, dockProvider.DockPosition, "DockPosition Top"); control.Dock = DockStyle.Bottom; Assert.AreEqual (DockPosition.Bottom, dockProvider.DockPosition, "DockPosition Bottom"); control.Dock = DockStyle.Left; Assert.AreEqual (DockPosition.Left, dockProvider.DockPosition, "DockPosition Left"); control.Dock = DockStyle.Right; Assert.AreEqual (DockPosition.Right, dockProvider.DockPosition, "DockPosition Right"); if (!(control is Splitter)) { control.Dock = DockStyle.Fill; Assert.AreEqual (DockPosition.Fill, dockProvider.DockPosition, "DockPosition Fill"); control.Dock = DockStyle.None; Assert.AreEqual (DockPosition.None, dockProvider.DockPosition, "DockPosition None"); } control.Dock = dockOrig; }
internal static void TestPatterns (string msg, IRawElementProviderSimple provider, params AutomationPattern [] expected) { List <AutomationPattern> expectedPatterns = null; if (expected != null) expectedPatterns = new List <AutomationPattern> (expected); else expectedPatterns = new List <AutomationPattern> (); List <AutomationPattern> missingPatterns = new List <AutomationPattern> (); List <AutomationPattern> superfluousPatterns = new List <AutomationPattern> (); foreach (AutomationPattern pattern in GetAllPossiblePatterns ()) { object behaviour = provider.GetPatternProvider (pattern.Id); if (expectedPatterns.Contains (pattern) && behaviour == null) missingPatterns.Add (pattern); else if ((!expectedPatterns.Contains (pattern)) && behaviour != null) superfluousPatterns.Add (pattern); } string missingPatternsMsg = string.Empty; string superfluousPatternsMsg = string.Empty; if (missingPatterns.Count != 0) { missingPatternsMsg = "Missing patterns: "; foreach (AutomationPattern pattern in missingPatterns) missingPatternsMsg += pattern.ProgrammaticName + ","; } if (superfluousPatterns.Count != 0) { superfluousPatternsMsg = "Superfluous patterns: "; foreach (AutomationPattern pattern in superfluousPatterns) superfluousPatternsMsg += pattern.ProgrammaticName + ","; } Assert.IsTrue ((missingPatterns.Count == 0) && (superfluousPatterns.Count == 0), msg + "; " + missingPatternsMsg + " .. " + superfluousPatternsMsg); }
protected virtual void TestGridItemPattern_RowPropertyEvent (IRawElementProviderSimple provider) { IGridItemProvider gridItemProvider = provider.GetPatternProvider (GridItemPatternIdentifiers.Pattern.Id) as IGridItemProvider; if (gridItemProvider == null) Assert.Fail ("Provider {0} is not implementing IGridItemProvider", provider.GetType ()); IRawElementProviderFragment child = provider as IRawElementProviderFragment; if (child == null) Assert.Fail ("Unable to test a non-navigable IGridItemProvider"); Assert.IsNotNull (gridItemProvider.ContainingGrid, "ContainingGrid must not be null"); IGridProvider gridProvider = gridItemProvider.ContainingGrid.GetPatternProvider (GridPatternIdentifiers.Pattern.Id) as IGridProvider; if (gridProvider == null) Assert.Fail ("Provider {0} is ContainingGrid of {1} and should implement IGridProvider", gridItemProvider.ContainingGrid, provider.GetType ()); int oldValue = gridItemProvider.Row; int currentRow = gridItemProvider.Row; // Adding row before to increase our current row value bridge.ResetEventLists (); TestGridItemPattern_AddRowBefore (provider, 1); AutomationPropertyChangedEventTuple tuple = bridge.GetAutomationPropertyEventFrom (provider, GridItemPatternIdentifiers.RowProperty.Id); Assert.IsNotNull (tuple, string.Format ("{0} RowProperty event.", provider.GetType ())); Assert.AreEqual (currentRow, (int) tuple.e.OldValue, "Old value should match value before adding row"); int newValue = 0; if (gridProvider.ColumnCount > 1) // We may be moved to next column newValue = (currentRow + 1) % gridProvider.RowCount; else newValue = currentRow + 1; Assert.AreEqual (newValue, (int) tuple.e.NewValue, "New value should match value after adding row"); Assert.AreEqual (newValue, gridItemProvider.Row, "Current row is different than NewValue"); // Adding row after to just match sure our Row is not changing at all currentRow = gridItemProvider.Row; bridge.ResetEventLists (); TestGridItemPattern_AddRowAfter (provider, 1); Assert.IsNull (bridge.GetAutomationPropertyEventFrom (provider, GridItemPatternIdentifiers.RowProperty.Id), string.Format ("{0} RowProperty event should not be raised.", provider.GetType ())); Assert.AreEqual (currentRow, gridItemProvider.Row, "Current row is different than value before adding row after"); // Remove previous added row, so our RowProperty will change again! bridge.ResetEventLists (); TestGridItemPattern_RemoveRowBefore (provider, 1); tuple = bridge.GetAutomationPropertyEventFrom (provider, GridItemPatternIdentifiers.RowProperty.Id); Assert.IsNotNull (tuple, string.Format ("{0} RowProperty event.", provider.GetType ())); Assert.AreEqual (currentRow, (int) tuple.e.OldValue, "Old value should match value before removing row"); Assert.AreEqual (oldValue, (int) tuple.e.NewValue, "New value should match value after removing row"); Assert.AreEqual (oldValue, gridItemProvider.Row, "Current row is different than NewValue"); // Remove row added after, to make sure our Row is not changing at all bridge.ResetEventLists (); TestGridItemPattern_RemoveRowAfter (provider, 1); Assert.IsNull (bridge.GetAutomationPropertyEventFrom (provider, GridItemPatternIdentifiers.RowProperty.Id), string.Format ("{0} RowProperty event should not be raised.", provider.GetType ())); Assert.AreEqual (oldValue, gridItemProvider.Row, "Current row is different than value before removing row after"); }
public ScrollBar (IRawElementProviderSimple provider) : base (provider) { Role = Atk.Role.ScrollBar; rangeValueProvider = (IRangeValueProvider)provider.GetPatternProvider (RangeValuePatternIdentifiers.Pattern.Id); orientation = (OrientationType)provider.GetPropertyValue (AutomationElementIdentifiers.OrientationProperty.Id); }
protected virtual void TestEmbeddedImagePattern_All (IRawElementProviderSimple provider, bool imageExpected) { IEmbeddedImageProvider embeddedImage = provider.GetPatternProvider (EmbeddedImagePatternIdentifiers.Pattern.Id) as IEmbeddedImageProvider; Assert.IsNotNull (embeddedImage, "Provider {0} is not implementing IEmbeddedImageProvider"); Assert.AreEqual (!imageExpected, embeddedImage.Bounds.IsEmpty, string.Format ("Image was {0}expected, but was {1}found", imageExpected ? "" : "not ", embeddedImage.Bounds.IsEmpty ? "not " : "")); if (imageExpected) { Rect providerRect = (Rect) provider.GetPropertyValue (AutomationElementIdentifiers.BoundingRectangleProperty.Id); Rect imageRect = embeddedImage.Bounds; Assert.IsTrue (imageRect.X >= providerRect.X, string.Format ("Image X: {0} must be >= than container X: {1}", imageRect.X, providerRect.X)); Assert.IsTrue (imageRect.Y >= providerRect.Y, string.Format ("Image Y: {0} must be >= than container Y: {1}", imageRect.Y, providerRect.Y)); Assert.IsTrue (imageRect.Width <= providerRect.Width, string.Format ("Image Width: {0} must be <= than container Width: {1}", imageRect.Width, providerRect.Width)); Assert.IsTrue (imageRect.Height <= providerRect.Height, string.Format ("Image Height: {0} must be <= than container Height: {1}", imageRect.Height, providerRect.Height)); } }
protected virtual void TestGridItemPattern_ColumnPropertyEvent (IRawElementProviderSimple provider) { IGridItemProvider gridItemProvider = provider.GetPatternProvider (GridItemPatternIdentifiers.Pattern.Id) as IGridItemProvider; if (gridItemProvider == null) Assert.Fail ("Provider {0} is not implementing IGridItemProvider", provider.GetType ()); IRawElementProviderFragment child = provider as IRawElementProviderFragment; if (child == null) Assert.Fail ("Unable to test a non-navigable IGridItemProvider"); Assert.IsNotNull (gridItemProvider.ContainingGrid, "ContainingGrid must not be null"); IGridProvider gridProvider = gridItemProvider.ContainingGrid.GetPatternProvider (GridPatternIdentifiers.Pattern.Id) as IGridProvider; if (gridProvider == null) Assert.Fail ("Provider {0} is ContainingGrid of {1} and should implement IGridProvider", gridItemProvider.ContainingGrid, provider.GetType ()); // FIXME: Implement }
protected virtual void TestSelectionItemPattern_IsSelectedPropertyEvent (IRawElementProviderSimple provider) { ISelectionItemProvider selectionItemProvider = provider.GetPatternProvider (SelectionItemPatternIdentifiers.Pattern.Id) as ISelectionItemProvider; if (selectionItemProvider == null) Assert.Fail ("Provider {0} is not implementing ISelectionItemProvider", provider.GetType ()); IRawElementProviderFragment child = provider as IRawElementProviderFragment; if (child == null) Assert.Fail ("Unable to test a non-navigable ISelectionItemProvider"); // Parent must implement Selection IRawElementProviderFragment parent = child.Navigate (NavigateDirection.Parent); if (parent == null) Assert.Fail ("We need parent to test ISelectionItemProvider."); ISelectionProvider selectionProvider = parent.GetPatternProvider (SelectionPatternIdentifiers.Pattern.Id) as ISelectionProvider; if (selectionProvider == null) Assert.Fail ("ISelectionItemProvider.Parent {0} is not implementing ISelectionProvider", parent.GetType ()); // Item is selected, we try to unselect it if (selectionItemProvider.IsSelected) TestSelectionItemPattern_RemoveFromSelection (parent, child); if (selectionItemProvider.IsSelected && selectionProvider.IsSelectionRequired) return; int selectedItems = selectionProvider.GetSelection ().Length; bridge.ResetEventLists (); selectionItemProvider.Select (); // IsSelectedProperty AutomationPropertyChangedEventTuple tuple = bridge.GetAutomationPropertyEventFrom (provider, SelectionItemPatternIdentifiers.IsSelectedProperty.Id); Assert.IsNotNull (tuple, string.Format ("{0} IsSelectedProperty event.", provider.GetType ())); Assert.IsFalse ((bool) tuple.e.OldValue, "Old value must be false"); Assert.IsTrue ((bool) tuple.e.NewValue, "New value must be false"); Assert.IsTrue (selectionItemProvider.IsSelected, "Must be selected"); Assert.Greater (selectionProvider.GetSelection ().Length, selectedItems, "Selection must be greater that old selectedItems"); }
public ProgressBar (IRawElementProviderSimple provider) : base (provider) { rangeValueProvider = (IRangeValueProvider)provider.GetPatternProvider (RangeValuePatternIdentifiers.Pattern.Id); Role = Atk.Role.ProgressBar; }
protected virtual void TestTablePattern_GetRowHeaderItems (IRawElementProviderSimple provider) { ITableProvider tableProvider = provider.GetPatternProvider (TablePatternIdentifiers.Pattern.Id) as ITableProvider; if (tableProvider == null) Assert.Fail ("Provider {0} is not implementing ITableProvider", provider.GetType ()); // Provider must never return null Assert.IsNotNull (tableProvider.GetRowHeaders (), "GetRowHeaderItems must return an empty array instead of returning null"); // Testing children TableItemProvider: "The children of this control must implement ITableItemProvider." // http://msdn.microsoft.com/en-us/library/system.windows.automation.provider.itableprovider.aspx IRawElementProviderFragment fragment = provider as IRawElementProviderFragment; if (fragment == null) return; IRawElementProviderFragment child = fragment.Navigate (NavigateDirection.FirstChild); while (child != null) { TestTablePatternChild (child); child = child.Navigate (NavigateDirection.NextSibling); } }