示例#1
0
文件: Window.cs 项目: mono/uia2atk
		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);
		}
示例#2
0
文件: MenuItem.cs 项目: mono/uia2atk
		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);
		}
示例#3
0
		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;
		}
示例#4
0
		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);
		}
示例#5
0
		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;
				}
			}
		}
示例#6
0
		protected virtual void TestExpandCollapsePattern_ExpandCollapseStatePropertyEvent (IRawElementProviderSimple provider)
		{
			IExpandCollapseProvider expandCollapseProvider
				= provider.GetPatternProvider (ExpandCollapsePatternIdentifiers.Pattern.Id) as IExpandCollapseProvider;
			if (expandCollapseProvider == null)
				Assert.Fail ("Provider {0} is not implementing IExpandCollapseProvider", provider.GetType ());

			bool enabled 
				= (bool) provider.GetPropertyValue (AutomationElementIdentifiers.IsEnabledProperty.Id);
			ExpandCollapseState currentState = expandCollapseProvider.ExpandCollapseState;

			try {
				bridge.ResetEventLists ();

				if (currentState == ExpandCollapseState.Collapsed)
					expandCollapseProvider.Expand ();
				else if (currentState == ExpandCollapseState.Expanded 
				         || currentState == ExpandCollapseState.PartiallyExpanded)
					expandCollapseProvider.Collapse ();
				
				Assert.IsNotNull (bridge.GetAutomationPropertyEventFrom (provider, ExpandCollapsePatternIdentifiers.ExpandCollapseStateProperty.Id),
				                  "IExpandCollapseProvider.ExpandCollapseStateProperty didn't raise any event.");
				// Is hard to test NewValue or OldValue because the spec doesn't
				// say anything about those values when calling Collapse/Expand.
			} catch (ElementNotEnabledException) {
				if (!enabled)
					Assert.Fail ("Your provider is disabled but didn't throw ElementNotEnabledException.");
			} catch (InvalidOperationException) {
				// Expand is called when the ExpandCollapseState = LeafNode.
				if (currentState != ExpandCollapseState.LeafNode)
					Assert.Fail (string.Format ("InvalidOperationException is only thrown when state is LeafNode, current state: ", currentState));
			}
		}
示例#7
0
		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));
			}
		}
示例#8
0
		private double DistanceFrom (IRawElementProviderSimple otherProvider)
		{
			Rect bounds = (Rect) GetPropertyValue (AutomationElementIdentifiers.BoundingRectangleProperty.Id);
			Rect otherBounds = (Rect) otherProvider.GetPropertyValue (AutomationElementIdentifiers.BoundingRectangleProperty.Id);
			
			if (control != null && control.RightToLeft == SWF.RightToLeft.Yes)
				return Distance (bounds.TopRight, otherBounds.TopRight);
			else
				return Distance (bounds.TopLeft, otherBounds.TopLeft);
		}
示例#9
0
		protected virtual void TestThumbPatterns (IRawElementProviderSimple provider) 
		{
			// http://msdn.microsoft.com/en-us/library/ms742539.aspx

			// DEPENDS: IRangeValueProvider
			// DEPENDS: ITransformProvider

			Assert.AreEqual (Catalog.GetString ("thumb"),
			                 provider.GetPropertyValue (AutomationElementIdentifiers.LocalizedControlTypeProperty.Id),
			                 "LocalizedControlTypeProperty");
		}
示例#10
0
		protected override void TestEditPatterns (IRawElementProviderSimple provider) 
		{
			// LAMESPEC: Edit must always support ITextProvider, but this *is not true* in Edit Cells
			Assert.IsTrue ((bool) provider.GetPropertyValue (AutomationElementIdentifiers.IsValuePatternAvailableProperty.Id),
			               "Edit ControlType in DataGrid must support IValueProvider");
			Assert.IsFalse ((bool) provider.GetPropertyValue (AutomationElementIdentifiers.IsRangeValuePatternAvailableProperty.Id),
			                "Edit ControlType in DataGrid MUST NOT support IRangeValueProvider");

			Assert.AreEqual (Catalog.GetString ("edit"),
			                 provider.GetPropertyValue (AutomationElementIdentifiers.LocalizedControlTypeProperty.Id),
			                 "LocalizedControlTypeProperty");
			
			TestValuePattern_All (provider);
		}
示例#11
0
文件: ScrollBar.cs 项目: mono/uia2atk
		public ScrollBar (IRawElementProviderSimple provider) : base (provider)
		{
			Role = Atk.Role.ScrollBar;
			rangeValueProvider = (IRangeValueProvider)provider.GetPatternProvider (RangeValuePatternIdentifiers.Pattern.Id);
			orientation = (OrientationType)provider.GetPropertyValue (AutomationElementIdentifiers.OrientationProperty.Id);
		}
示例#12
0
		protected virtual void TestWindowPatterns (IRawElementProviderSimple provider) 
		{
			// http://msdn.microsoft.com/en-us/library/ms746673.aspx

			Assert.IsTrue ((bool) provider.GetPropertyValue (AutomationElementIdentifiers.IsTransformPatternAvailableProperty.Id),
			               "Window ControlType must support ITransformProvider");
			Assert.IsTrue ((bool) provider.GetPropertyValue (AutomationElementIdentifiers.IsWindowPatternAvailableProperty.Id),
			               "Window ControlType must support IWindowProvider");

			// DEPENDS: IDockProvider

			Assert.AreEqual (Catalog.GetString ("window"),
			                 provider.GetPropertyValue (AutomationElementIdentifiers.LocalizedControlTypeProperty.Id),
			                 "LocalizedControlTypeProperty");
		}
 public string HeaderValue(IRawElementProviderSimple element)
 {
     return element.GetPropertyValue(AutomationElementIdentifiers.NameProperty.Id).ToString();
 }
示例#14
0
		protected virtual void TestTreePatterns (IRawElementProviderSimple provider) 
		{
			// http://msdn.microsoft.com/en-us/library/ms743706.aspx

			// DEPENDS: ISelectionProvider
			// DEPENDS: IScrollProvider

			Assert.AreEqual (Catalog.GetString ("tree"),
			                 provider.GetPropertyValue (AutomationElementIdentifiers.LocalizedControlTypeProperty.Id),
			                 "LocalizedControlTypeProperty");
		}
示例#15
0
		protected virtual void TestTreeItemPatterns (IRawElementProviderSimple provider) 
		{
			// http://msdn.microsoft.com/en-us/library/ms743384.aspx

			Assert.IsTrue ((bool) provider.GetPropertyValue (AutomationElementIdentifiers.IsExpandCollapsePatternAvailableProperty.Id),
			               "TreeItem ControlType must support IExpandCollapseProvider");

			// DEPENDS: IInvokeProvider
			// DEPENDS: IScrollItemProvider
			// DEPENDS: ISelectionItemProvider
			// DEPENDS: IToggleProvider
			
			Assert.AreEqual (Catalog.GetString ("tree item"),
			                 provider.GetPropertyValue (AutomationElementIdentifiers.LocalizedControlTypeProperty.Id),
			                 "LocalizedControlTypeProperty");

			TestExpandCollapsePattern_ExpandCollapseStatePropertyEvent (provider);
		}
示例#16
0
		protected virtual void TestToolTipPatterns (IRawElementProviderSimple provider) 
		{
			// http://msdn.microsoft.com/en-us/library/ms752335.aspx

			// DEPENDS: IWindowProvider
			// DEPENDS: ITextProvider

			Assert.AreEqual (Catalog.GetString ("tool tip"),
			                 provider.GetPropertyValue (AutomationElementIdentifiers.LocalizedControlTypeProperty.Id),
			                 "LocalizedControlTypeProperty");
		}
示例#17
0
		protected virtual void TestToolBarPatterns (IRawElementProviderSimple provider) 
		{
			// http://msdn.microsoft.com/en-us/library/ms750425.aspx

			// DEPENDS: IExpandCollapsePattern
			// DEPENDS: IDockPattern
			// DEPENDS: TransformPattern

			Assert.AreEqual (Catalog.GetString ("tool bar"),
			                 provider.GetPropertyValue (AutomationElementIdentifiers.LocalizedControlTypeProperty.Id),
			                 "LocalizedControlTypeProperty");
		}
示例#18
0
		protected virtual void TestTitleBarPatterns (IRawElementProviderSimple provider) 
		{
			// http://msdn.microsoft.com/en-us/library/ms744939.aspx

			// NO REQUIRED PATTERNS

			Assert.AreEqual (Catalog.GetString ("title bar"),
			                 provider.GetPropertyValue (AutomationElementIdentifiers.LocalizedControlTypeProperty.Id),
			                 "LocalizedControlTypeProperty");
		}
示例#19
0
		protected virtual void TestTabItemPatterns (IRawElementProviderSimple provider) 
		{
			// http://msdn.microsoft.com/en-us/library/ms751611.aspx
			Assert.IsTrue ((bool) provider.GetPropertyValue (AutomationElementIdentifiers.IsSelectionItemPatternAvailableProperty.Id),
			                "TabItem ControlType must support ISelectionItemProvider");
			Assert.IsFalse ((bool) provider.GetPropertyValue (AutomationElementIdentifiers.IsInvokePatternAvailableProperty.Id),
			                "TabItem ControlType must support IInvokeProvider");

			Assert.AreEqual (Catalog.GetString ("tab item"),
			                 provider.GetPropertyValue (AutomationElementIdentifiers.LocalizedControlTypeProperty.Id),
			                 "LocalizedControlTypeProperty");
		}
示例#20
0
		protected void TestPatterns (IRawElementProviderSimple provider)
		{
			int ctype = (int) provider.GetPropertyValue (AutomationElementIdentifiers.ControlTypeProperty.Id);
			if (ctype == ControlType.Button.Id)
				TestButtonPatterns (provider);
			else if (ctype == ControlType.Calendar.Id)
				TestCalendarPatterns (provider);
			else if (ctype == ControlType.CheckBox.Id)
				TestCheckBoxPatterns (provider);
			else if (ctype == ControlType.ComboBox.Id)
				TestComboBoxPatterns (provider);
			else if (ctype == ControlType.DataGrid.Id)
				TestDataGridPatterns (provider);
			else if (ctype == ControlType.DataItem.Id)
				TestDataItemPatterns (provider);
			else if (ctype == ControlType.DataItem.Id)
				TestDocumentPatterns (provider);
			else if (ctype == ControlType.Edit.Id)
				TestEditPatterns (provider);
			else if (ctype == ControlType.Group.Id)
				TestGroupPatterns (provider);
			else if (ctype == ControlType.Header.Id)
				TestHeaderPatterns (provider);
			else if (ctype == ControlType.HeaderItem.Id)
				TestHeaderItemPatterns (provider);
			else if (ctype == ControlType.Hyperlink.Id)
				TestHyperlinkPatterns (provider);
			else if (ctype == ControlType.Hyperlink.Id)
				TestHyperlinkPatterns (provider);
			else if (ctype == ControlType.List.Id)
				TestListPatterns (provider);
			else if (ctype == ControlType.ListItem.Id)
				TestListItemPatterns (provider);
			else if (ctype == ControlType.Menu.Id)
				TestMenuPatterns (provider);
			else if (ctype == ControlType.MenuBar.Id)
				TestMenuBarPatterns (provider);
			else if (ctype == ControlType.MenuItem.Id)
				TestMenuItemPatterns (provider);
			else if (ctype == ControlType.Pane.Id)
				TestPanePatterns (provider);
			else if (ctype == ControlType.ProgressBar.Id)
				TestProgressBarPatterns (provider);
			else if (ctype == ControlType.RadioButton.Id)
				TestRadioButtonPatterns (provider);
			else if (ctype == ControlType.ScrollBar.Id)
				TestScrollBarPatterns (provider);
			else if (ctype == ControlType.Separator.Id)
				TestSeparatorPatterns (provider);
			else if (ctype == ControlType.Slider.Id)
				TestSliderPatterns (provider);
			else if (ctype == ControlType.Spinner.Id)
				TestSpinnerPatterns (provider);
			else if (ctype == ControlType.SplitButton.Id)
				TestSplitButtonPatterns (provider);
			else if (ctype == ControlType.StatusBar.Id)
				TestStatusBarPatterns (provider);
			else if (ctype == ControlType.Tab.Id)
				TestTabPatterns (provider);
			else if (ctype == ControlType.TabItem.Id)
				TestTabItemPatterns (provider);
			else if (ctype == ControlType.Table.Id)
				TestTablePatterns (provider);
			else if (ctype == ControlType.Text.Id)
				TestTextPatterns (provider);
			else if (ctype == ControlType.Thumb.Id)
				TestThumbPatterns (provider);
			else if (ctype == ControlType.TitleBar.Id)
				TestTitleBarPatterns (provider);
			else if (ctype == ControlType.ToolBar.Id)
				TestToolBarPatterns (provider);
			else if (ctype == ControlType.ToolTip.Id)
				TestToolTipPatterns (provider);
			else if (ctype == ControlType.Tree.Id)
				TestTreePatterns (provider);
			else if (ctype == ControlType.TreeItem.Id)
				TestTreeItemPatterns (provider);
			else if (ctype == ControlType.Window.Id)
				TestWindowPatterns (provider);
		}
示例#21
0
		protected virtual void TestTabPatterns (IRawElementProviderSimple provider) 
		{
			// http://msdn.microsoft.com/en-us/library/ms754207.aspx
			Assert.IsTrue ((bool) provider.GetPropertyValue (AutomationElementIdentifiers.IsSelectionPatternAvailableProperty.Id),
			                "Tab ControlType must support ISelectionProvider");

			// DEPENDS: IScrollProvider

			Assert.AreEqual (Catalog.GetString ("tab"),
			                 provider.GetPropertyValue (AutomationElementIdentifiers.LocalizedControlTypeProperty.Id),
			                 "LocalizedControlTypeProperty");

			TestSelectionPattern_GetSelectionMethod (provider);
		}
示例#22
0
		protected virtual void TestInvokePattern_InvokedEvent (IRawElementProviderSimple provider)
		{
			IInvokeProvider invokeProvider 
				= provider.GetPatternProvider (InvokePatternIdentifiers.Pattern.Id) as IInvokeProvider;
			if (invokeProvider == null)
				Assert.Fail ("Provider {0} is not implementing IInvokeProvider", provider.GetType ());

			bridge.ResetEventLists ();

			bool enabled 
				= (bool) provider.GetPropertyValue (AutomationElementIdentifiers.IsEnabledProperty.Id);
			try {
				invokeProvider.Invoke ();
				Assert.IsNotNull (bridge.GetAutomationEventFrom (provider, InvokePatternIdentifiers.InvokedEvent.Id),
				                  "IInvokeProvider.Invoke didn't raise any event.");
			} catch (ElementNotEnabledException) {
				// According to http://msdn.microsoft.com/en-us/library/system.windows.automation.provider.iinvokeprovider.invoke.aspx
				if (!enabled)
					Assert.Fail ("Your provider is disabled but didn't throw ElementNotEnabledException.");
			}
		}
示例#23
0
		protected override void TestEditPatterns (IRawElementProviderSimple provider) 
		{
			// LAMESPEC: We should implement ITextProvider instead of IValueProvider
			
			Assert.IsTrue ((bool) provider.GetPropertyValue (AutomationElementIdentifiers.IsValuePatternAvailableProperty.Id),
			               "Edit ControlType must support ITextProvider");
			Assert.IsFalse ((bool) provider.GetPropertyValue (AutomationElementIdentifiers.IsRangeValuePatternAvailableProperty.Id),
			                "Edit ControlType MUST NOT support IRangeValueProvider");
			Assert.IsFalse ((bool) provider.GetPropertyValue (AutomationElementIdentifiers.IsTextPatternAvailableProperty.Id),
			                "Edit ControlType MUST NOT support ITextProvider");

			TestValuePattern_ValuePropertyEvent (provider);
			TestValuePattern_IsReadOnlyPropertyEvent (provider);
		}
示例#24
0
		protected virtual void TestTablePatterns (IRawElementProviderSimple provider) 
		{
			// http://msdn.microsoft.com/en-us/library/ms750608.aspx
			Assert.IsTrue ((bool) provider.GetPropertyValue (AutomationElementIdentifiers.IsGridPatternAvailableProperty.Id),
			                "Table ControlType must support IGridProvider");
			Assert.IsTrue ((bool) provider.GetPropertyValue (AutomationElementIdentifiers.IsTablePatternAvailableProperty.Id),
			                "Table ControlType must support ITableProvider");

			// DEPENDS: ITableItemProvider

			Assert.AreEqual (Catalog.GetString ("table"),
			                 provider.GetPropertyValue (AutomationElementIdentifiers.LocalizedControlTypeProperty.Id),
			                 "LocalizedControlTypeProperty");

			TestTableItemPattern_All (provider);
		}
示例#25
0
文件: Tree.cs 项目: mono/uia2atk
		private bool IsListItem (IRawElementProviderSimple provider)
		{
			int controlTypeId = (int)provider.GetPropertyValue (AutomationElementIdentifiers.ControlTypeProperty.Id);
			return (controlTypeId == ControlType.TreeItem.Id || controlTypeId == ControlType.ListItem.Id);
		}
示例#26
0
		protected virtual void TestValuePattern_ValuePropertyEvent (IRawElementProviderSimple provider)
		{
			IValueProvider valueProvider 
				= provider.GetPatternProvider (ValuePatternIdentifiers.Pattern.Id) as IValueProvider;
			if (valueProvider == null)
				Assert.Fail ("Provider {0} is not implementing IValueProvider", provider.GetType ());

			bool enabled 
				= (bool) provider.GetPropertyValue (AutomationElementIdentifiers.IsEnabledProperty.Id);
			Assert.AreEqual (!enabled,
			                 valueProvider.IsReadOnly, 
			                 "!Enabled and IValueProvider.IsReadOnly should be equal");
			try {
				string newValue = "I'm your new value!";
				bridge.ResetEventLists ();
				valueProvider.SetValue (newValue);
				Assert.IsNotNull (bridge.GetAutomationPropertyEventFrom (provider, ValuePatternIdentifiers.ValueProperty.Id),
				                  "IValueProvider.Value didn't raise any event.");
				Assert.AreEqual (newValue,
				                 valueProvider.Value, 
				                 "Different value even when Value event was raised");
			} catch (ElementNotEnabledException) {
				// According to http://msdn.microsoft.com/en-us/library/system.windows.automation.provider.ivalueprovider.setvalue.aspx
				if (!enabled)
					Assert.Fail ("Your provider is disabled but didn't throw ElementNotEnabledException.");
			}
		}
示例#27
0
		public static void TestAutomationProperty (IRawElementProviderSimple provider,
		                                           AutomationProperty property,
		                                           object expectedValue)
		{
			Assert.AreEqual (expectedValue,
			                 provider.GetPropertyValue (property.Id),
			                 property.ProgrammaticName);
		}
示例#28
0
		protected virtual void TestValuePattern_IsReadOnlyPropertyEvent (IRawElementProviderSimple provider)
		{
			IValueProvider valueProvider 
				= provider.GetPatternProvider (ValuePatternIdentifiers.Pattern.Id) as IValueProvider;
			if (valueProvider == null)
				Assert.Fail ("Provider {0} is not implementing IValueProvider", provider.GetType ());

			bool enabled 
				= (bool) provider.GetPropertyValue (AutomationElementIdentifiers.IsEnabledProperty.Id);
			Assert.AreEqual (!enabled,
			                 valueProvider.IsReadOnly, 
			                 "!Enabled and IValueProvider.IsReadOnly should be equal");
			
			bool newValue = enabled;

			bridge.ResetEventLists ();
			TestValuePattern_ChangeReadOnly (provider, newValue);
			AutomationPropertyChangedEventTuple tuple
				= bridge.GetAutomationPropertyEventFrom (provider, ValuePatternIdentifiers.IsReadOnlyProperty.Id);
			Assert.IsNotNull (tuple,
			                  "IValueProvider.IsReadOnly didn't raise any event.");
			Assert.AreEqual (newValue, tuple.e.NewValue, "Value is invalid in event.");
			Assert.AreEqual (!newValue, tuple.e.OldValue, "Value is invalid in event.");

			Assert.AreEqual (newValue,
			                 valueProvider.IsReadOnly, 
			                 "IsReadOnly value not changed.");
			Assert.AreEqual (!newValue,
			                 (bool) provider.GetPropertyValue (AutomationElementIdentifiers.IsEnabledProperty.Id), 
			                 "Enabled value not changed.");

			// Changing again
			newValue = !newValue;
			
			bridge.ResetEventLists ();
			TestValuePattern_ChangeReadOnly (provider, newValue);
			tuple = bridge.GetAutomationPropertyEventFrom (provider, ValuePatternIdentifiers.IsReadOnlyProperty.Id);
			Assert.IsNotNull (tuple,
			                  "IValueProvider.IsReadOnly didn't raise any event.");
			Assert.AreEqual (newValue, tuple.e.NewValue, "Value is invalid in event.");
			Assert.AreEqual (!newValue, tuple.e.OldValue, "Value is invalid in event.");

			Assert.AreEqual (newValue,
			                 valueProvider.IsReadOnly, 
			                 "IsReadOnly value not changed.");
			Assert.AreEqual (!newValue,
			                 (bool) provider.GetPropertyValue (AutomationElementIdentifiers.IsEnabledProperty.Id), 
			                 "Enabled value not changed.");
		}
示例#29
0
		protected virtual void TestTogglePattern_ToggleStatePropertyEvent (IRawElementProviderSimple provider)
		{
			IToggleProvider toggleProvider
				= provider.GetPatternProvider (TogglePatternIdentifiers.Pattern.Id) as IToggleProvider;
			if (toggleProvider == null)
				Assert.Fail ("Provider {0} is not implementing IToggleProvider", provider.GetType ());


			// A control must cycle through its toggle states in this order:
			// On, Off, Indeterminate
			bool enabled 
				= (bool) provider.GetPropertyValue (AutomationElementIdentifiers.IsEnabledProperty.Id);
			ToggleState toggleState = toggleProvider.ToggleState;
			ToggleState firstState = toggleState;

			try {
				bridge.ResetEventLists ();				
				do {
					bridge.ResetEventLists ();
					toggleProvider.Toggle ();
					Assert.IsNotNull (bridge.GetAutomationPropertyEventFrom (provider, TogglePatternIdentifiers.ToggleStateProperty.Id),
					                  string.Format ("toggleProvider.Toggle didn't raise any event. Old {0} Current: {1}", 
					                                 toggleState,
					                                 toggleProvider.ToggleState));
					ValidateToggleState  (toggleState, toggleProvider.ToggleState);
					toggleState = toggleProvider.ToggleState;
				} while (firstState != toggleState);
			} catch (ElementNotEnabledException) {
				if (!enabled)
					Assert.Fail ("Your provider is disabled but didn't throw ElementNotEnabledException.");
			}			
		}
示例#30
0
		protected virtual void TestTextPatterns (IRawElementProviderSimple provider) 
		{
			// http://msdn.microsoft.com/en-us/library/ms752073.aspx
			Assert.IsFalse ((bool) provider.GetPropertyValue (AutomationElementIdentifiers.IsValuePatternAvailableProperty.Id),
			                "Text ControlType must NOT support IValueProvider");

			// DEPENDS: ITextProvider
			// DEPENDS: ITableItemProvider
			// DEPENDS: IRangeValueProvider

			Assert.AreEqual (Catalog.GetString ("text"),
			                 provider.GetPropertyValue (AutomationElementIdentifiers.LocalizedControlTypeProperty.Id),
			                 "LocalizedControlTypeProperty");
		}