public void GridViewEditAccessibleObject_FragmentNavigate_navigates_correctly() { using PropertyGrid propertyGrid = new PropertyGrid { SelectedObject = Point.Empty }; propertyGrid.CreateControl(); PropertyGridView propertyGridView = propertyGrid.TestAccessor().GridView; int firstPropertyIndex = 2; // Index of Text property which has a RichEdit control as an editor. PropertyDescriptorGridEntry gridEntry = (PropertyDescriptorGridEntry)propertyGridView.AccessibilityGetGridEntries()[firstPropertyIndex]; propertyGridView.TestAccessor().Dynamic.selectedGridEntry = gridEntry; UiaCore.IRawElementProviderFragment editFieldAccessibleObject = gridEntry.AccessibilityObject.FragmentNavigate(UiaCore.NavigateDirection.FirstChild); Assert.Equal("GridViewEditAccessibleObject", editFieldAccessibleObject.GetType().Name); // The case with drop down holder: using TestDropDownHolder dropDownHolder = new TestDropDownHolder(propertyGridView); dropDownHolder.CreateControl(); propertyGridView.TestAccessor().Dynamic.dropDownHolder = dropDownHolder; dropDownHolder.SetState(0x00000002, true); // Control class States.Visible flag Assert.True(propertyGridView.DropDownVisible); object previousAccessibleObject = editFieldAccessibleObject.Navigate(UiaCore.NavigateDirection.PreviousSibling); Assert.NotNull(previousAccessibleObject); Assert.Same(dropDownHolder.AccessibilityObject, previousAccessibleObject); }
public void GridViewEditAccessibleObject_created_for_string_property() { TestEntityWithTextField testEntity = new TestEntityWithTextField { TextProperty = "Test" }; using PropertyGrid propertyGrid = new PropertyGrid { SelectedObject = testEntity }; PropertyGridView propertyGridView = propertyGrid.TestAccessor().GridView; int firstPropertyIndex = 1; // Index 0 corresponds to the category grid entry. PropertyDescriptorGridEntry gridEntry = (PropertyDescriptorGridEntry)propertyGridView.AccessibilityGetGridEntries()[firstPropertyIndex]; PropertyDescriptorGridEntry selectedGridEntry = propertyGridView.TestAccessor().Dynamic.selectedGridEntry; Assert.Equal(gridEntry.PropertyName, selectedGridEntry.PropertyName); AccessibleObject selectedGridEntryAccessibleObject = gridEntry.AccessibilityObject; UiaCore.IRawElementProviderFragment editFieldAccessibleObject = selectedGridEntryAccessibleObject.FragmentNavigate(UiaCore.NavigateDirection.FirstChild); Assert.NotNull(editFieldAccessibleObject); Assert.Equal("GridViewEditAccessibleObject", editFieldAccessibleObject.GetType().Name); }
public void GridViewTextBoxAccessibleObject_created_for_string_property() { TestEntityWithTextField testEntity = new TestEntityWithTextField { TextProperty = "Test" }; using PropertyGrid propertyGrid = new PropertyGrid { SelectedObject = testEntity }; PropertyGridView propertyGridView = propertyGrid.TestAccessor().GridView; int firstPropertyIndex = 1; // Index 0 corresponds to the category grid entry. PropertyDescriptorGridEntry gridEntry = (PropertyDescriptorGridEntry)propertyGridView.AccessibilityGetGridEntries()[firstPropertyIndex]; PropertyDescriptorGridEntry selectedGridEntry = propertyGridView.TestAccessor().Dynamic._selectedGridEntry; Assert.Equal(gridEntry.PropertyName, selectedGridEntry.PropertyName); // Force the entry edit control Handle creation. // GridViewEditAccessibleObject exists, if its control is already created. // In UI case an entry edit control is created when an PropertyGridView gets focus. Assert.NotEqual(IntPtr.Zero, propertyGridView.TestAccessor().Dynamic.EditTextBox.Handle); AccessibleObject selectedGridEntryAccessibleObject = gridEntry.AccessibilityObject; UiaCore.IRawElementProviderFragment editFieldAccessibleObject = selectedGridEntryAccessibleObject.FragmentNavigate(UiaCore.NavigateDirection.FirstChild); Assert.NotNull(editFieldAccessibleObject); Assert.Equal("GridViewTextBoxAccessibleObject", editFieldAccessibleObject.GetType().Name); }
public void ChildListAccessibleObject_BoundingRectangle_ReturnsCorrectWidth_IfComboBoxIsScrollable(ComboBoxStyle comboBoxStyle) { const int expectedWidth = 100; using ComboBox comboBox = new() { DropDownStyle = comboBoxStyle, IntegralHeight = false }; comboBox.Items.AddRange(Enumerable.Range(0, 11).Cast <object>().ToArray()); comboBox.CreateControl(); if (comboBoxStyle == ComboBoxStyle.Simple) { comboBox.Size = new Size(expectedWidth, 150); } else { comboBox.Size = new Size(expectedWidth, comboBox.Size.Height); comboBox.DropDownHeight = 120; comboBox.DroppedDown = true; } UiaCore.IRawElementProviderFragment childListUiaProvider = comboBox.ChildListAccessibleObject; UiaCore.UiaRect actual = childListUiaProvider.BoundingRectangle; Assert.Equal(expectedWidth, actual.width); } }
public void ListViewItemAccessibleObject_FragmentNavigate_ListWithItems_ReturnsExpected_IfHandleCreated() { using ListView listView = new ListView(); listView.CreateControl(); ListViewItem listItem1 = new ListViewItem(new string[] { "Test A", "Alpha" }, -1); ListViewItem listItem2 = new ListViewItem(new string[] { "Test B", "Beta" }, -1); ListViewItem listItem3 = new ListViewItem(new string[] { "Test C", "Gamma" }, -1); listView.Items.Add(listItem1); listView.Items.Add(listItem2); listView.Items.Add(listItem3); AccessibleObject accessibleObject1 = listItem1.AccessibilityObject; AccessibleObject accessibleObject2 = listItem2.AccessibilityObject; AccessibleObject accessibleObject3 = listItem3.AccessibilityObject; // First list view item Assert.Null(accessibleObject1.FragmentNavigate(UiaCore.NavigateDirection.PreviousSibling)); UiaCore.IRawElementProviderFragment listItem1NextSibling = accessibleObject1.FragmentNavigate(UiaCore.NavigateDirection.NextSibling); Assert.IsType <ListViewItemAccessibleObject>(listItem1NextSibling); Assert.Equal(accessibleObject2, listItem1NextSibling); // Second list view item UiaCore.IRawElementProviderFragment listItem2PreviousSibling = accessibleObject2.FragmentNavigate(UiaCore.NavigateDirection.PreviousSibling); UiaCore.IRawElementProviderFragment listItem2NextSibling = accessibleObject2.FragmentNavigate(UiaCore.NavigateDirection.NextSibling); Assert.IsType <ListViewItemAccessibleObject>(listItem2PreviousSibling); Assert.IsType <ListViewItemAccessibleObject>(listItem2NextSibling); Assert.Equal(accessibleObject1, listItem2PreviousSibling); Assert.Equal(accessibleObject3, listItem2NextSibling); // Third list view item Assert.Null(accessibleObject3.FragmentNavigate(UiaCore.NavigateDirection.NextSibling)); UiaCore.IRawElementProviderFragment listItem3PreviousSibling = accessibleObject3.FragmentNavigate(UiaCore.NavigateDirection.PreviousSibling); Assert.IsType <ListViewItemAccessibleObject>(listItem3PreviousSibling); Assert.Equal(accessibleObject2, listItem3PreviousSibling); // Parent Assert.Equal(accessibleObject1.FragmentNavigate(UiaCore.NavigateDirection.Parent), listView.AccessibilityObject); Assert.Equal(accessibleObject2.FragmentNavigate(UiaCore.NavigateDirection.Parent), listView.AccessibilityObject); Assert.Equal(accessibleObject3.FragmentNavigate(UiaCore.NavigateDirection.Parent), listView.AccessibilityObject); // Childs AccessibleObject firstChild = accessibleObject1.FragmentNavigate(UiaCore.NavigateDirection.FirstChild) as AccessibleObject; AccessibleObject lastChild = accessibleObject1.FragmentNavigate(UiaCore.NavigateDirection.LastChild) as AccessibleObject; Assert.IsType <ListViewSubItemAccessibleObject>(firstChild); Assert.IsType <ListViewSubItemAccessibleObject>(lastChild); Assert.NotEqual(firstChild, lastChild); Assert.True(listView.IsHandleCreated); }
public void ToolStripAccessibleObject_FragmentNavigate_FirstChild_ThumbButton() { using ToolStrip toolStrip = new ToolStrip(); var accessibleObject = toolStrip.AccessibilityObject; UiaCore.IRawElementProviderFragment firstChild = accessibleObject.FragmentNavigate(UiaCore.NavigateDirection.FirstChild); Assert.NotNull(firstChild); Assert.Equal(UiaCore.UIA.ThumbControlTypeId, firstChild.GetPropertyValue(UiaCore.UIA.ControlTypePropertyId)); }
public void ListViewGroupAccessibleObject_ListWithTwoGroups_FragmentNavigateWorkCorrectly_IfHandleIsCreated_VisualStylesEnabled() { if (!Application.UseVisualStyles) { return; } using ListView list = new ListView(); list.CreateControl(); ListViewGroup listGroup = new ListViewGroup("Group1"); ListViewItem listItem1 = new ListViewItem(); ListViewItem listItem2 = new ListViewItem(); ListViewItem listItem3 = new ListViewItem(); list.Groups.Add(listGroup); listItem1.Group = listGroup; listItem2.Group = listGroup; list.Items.Add(listItem1); list.Items.Add(listItem2); list.Items.Add(listItem3); AccessibleObject group1AccObj = listGroup.AccessibilityObject; AccessibleObject defaultGroupAccObj = list.DefaultGroup.AccessibilityObject; Assert.True(list.IsHandleCreated); // Next/Previous siblings test Assert.Null(defaultGroupAccObj.FragmentNavigate(UiaCore.NavigateDirection.PreviousSibling)); UiaCore.IRawElementProviderFragment defaultGroupNextSibling = defaultGroupAccObj.FragmentNavigate(UiaCore.NavigateDirection.NextSibling); Assert.IsType <ListViewGroupAccessibleObject>(group1AccObj); Assert.Equal(group1AccObj, defaultGroupNextSibling); Assert.Null(group1AccObj.FragmentNavigate(UiaCore.NavigateDirection.NextSibling)); UiaCore.IRawElementProviderFragment group1PreviousSibling = group1AccObj.FragmentNavigate(UiaCore.NavigateDirection.PreviousSibling); Assert.IsType <ListViewGroupAccessibleObject>(group1PreviousSibling); Assert.Equal(defaultGroupAccObj, group1PreviousSibling); // Parent Assert.Equal(defaultGroupAccObj.FragmentNavigate(UiaCore.NavigateDirection.Parent), list.AccessibilityObject); Assert.Equal(group1AccObj.FragmentNavigate(UiaCore.NavigateDirection.Parent), list.AccessibilityObject); // Childs AccessibleObject firstChild = group1AccObj.FragmentNavigate(UiaCore.NavigateDirection.FirstChild) as AccessibleObject; AccessibleObject lastChild = group1AccObj.FragmentNavigate(UiaCore.NavigateDirection.LastChild) as AccessibleObject; Assert.IsType <ListViewItemAccessibleObject>(firstChild); Assert.IsType <ListViewItemAccessibleObject>(lastChild); Assert.NotEqual(firstChild, lastChild); Assert.Equal(firstChild, listItem1.AccessibilityObject); Assert.Equal(lastChild, listItem2.AccessibilityObject); firstChild = defaultGroupAccObj.FragmentNavigate(UiaCore.NavigateDirection.FirstChild) as AccessibleObject; lastChild = defaultGroupAccObj.FragmentNavigate(UiaCore.NavigateDirection.LastChild) as AccessibleObject; Assert.IsType <ListViewItemAccessibleObject>(firstChild); Assert.IsType <ListViewItemAccessibleObject>(lastChild); Assert.Equal(firstChild, lastChild); Assert.Equal(firstChild, listItem3.AccessibilityObject); }
public void ComboBoxAccessibleObject_FragmentNavigate_FirstChild_NotNull(ComboBoxStyle comboBoxStyle) { using var control = new ComboBox { DropDownStyle = comboBoxStyle }; var accessibleObject = control.AccessibilityObject; UiaCore.IRawElementProviderFragment firstChild = accessibleObject.FragmentNavigate(UiaCore.NavigateDirection.FirstChild); Assert.NotNull(firstChild); }
public void ListViewSubItemAccessibleObject_FragmentNavigate_WorkCorrectly() { using ListView list = new ListView(); ListViewItem listViewItem1 = new ListViewItem(new string[] { "Test 1", "Item 1", "Something 1" }, -1); ColumnHeader columnHeader1 = new ColumnHeader(); ColumnHeader columnHeader2 = new ColumnHeader(); ColumnHeader columnHeader3 = new ColumnHeader(); list.Columns.AddRange(new ColumnHeader[] { columnHeader1, columnHeader2, columnHeader3 }); list.HideSelection = false; list.Items.Add(listViewItem1); list.View = View.Details; AccessibleObject subItemAccObj1 = listViewItem1.AccessibilityObject.GetChild(0); AccessibleObject subItemAccObj2 = listViewItem1.AccessibilityObject.GetChild(1); AccessibleObject subItemAccObj3 = listViewItem1.AccessibilityObject.GetChild(2); Assert.Null(subItemAccObj1.FragmentNavigate(UiaCore.NavigateDirection.PreviousSibling)); UiaCore.IRawElementProviderFragment subItem1NextSibling = subItemAccObj1.FragmentNavigate(UiaCore.NavigateDirection.NextSibling); Assert.IsType <ListViewSubItemAccessibleObject>(subItem1NextSibling); Assert.NotNull(subItem1NextSibling); UiaCore.IRawElementProviderFragment subItem2NextSibling = subItemAccObj2.FragmentNavigate(UiaCore.NavigateDirection.NextSibling); UiaCore.IRawElementProviderFragment subItem2PreviousSibling = subItemAccObj2.FragmentNavigate(UiaCore.NavigateDirection.PreviousSibling); Assert.IsType <ListViewSubItemAccessibleObject>(subItem2NextSibling); Assert.IsType <ListViewSubItemAccessibleObject>(subItem2PreviousSibling); Assert.NotNull(subItem2NextSibling); Assert.NotNull(subItem2PreviousSibling); Assert.Null(subItemAccObj3.FragmentNavigate(UiaCore.NavigateDirection.NextSibling)); UiaCore.IRawElementProviderFragment subItem3PreviousSibling = subItemAccObj3.FragmentNavigate(UiaCore.NavigateDirection.PreviousSibling); Assert.IsType <ListViewSubItemAccessibleObject>(subItem3PreviousSibling); Assert.NotNull(subItem3PreviousSibling); // Parent Assert.Equal(subItemAccObj1.FragmentNavigate(UiaCore.NavigateDirection.Parent), listViewItem1.AccessibilityObject); Assert.Equal(subItemAccObj2.FragmentNavigate(UiaCore.NavigateDirection.Parent), listViewItem1.AccessibilityObject); Assert.Equal(subItemAccObj3.FragmentNavigate(UiaCore.NavigateDirection.Parent), listViewItem1.AccessibilityObject); Assert.False(list.IsHandleCreated); }
/// <summary> /// Request to return the element in the specified direction. /// </summary> /// <param name="direction">Indicates the direction in which to navigate.</param> /// <returns>Returns the element in the specified direction.</returns> internal override UiaCore.IRawElementProviderFragment?FragmentNavigate(UiaCore.NavigateDirection direction) { if (_parentPropertyGrid.AccessibilityObject is PropertyGrid.PropertyGridAccessibleObject propertyGridAccessibleObject) { UiaCore.IRawElementProviderFragment navigationTarget = propertyGridAccessibleObject.ChildFragmentNavigate(this, direction); if (navigationTarget is not null) { return(navigationTarget); } } return(base.FragmentNavigate(direction)); }
public void DataGridViewAccessibleObject_FirstAndLastChildren_AreNotNull() { using DataGridView dataGridView = new DataGridView(); dataGridView.Columns.Add(new DataGridViewTextBoxColumn()); AccessibleObject accessibleObject = dataGridView.AccessibilityObject; // ColumnHeaders UiaCore.IRawElementProviderFragment firstChild = accessibleObject.FragmentNavigate(UiaCore.NavigateDirection.FirstChild); Assert.NotNull(firstChild); // New row UiaCore.IRawElementProviderFragment lastChild = accessibleObject.FragmentNavigate(UiaCore.NavigateDirection.LastChild); Assert.NotNull(lastChild); }
public void DataGridViewEditingPanelAccessibleObject_FirstAndLastChildren_AreNull() { using DataGridView dataGridView = new DataGridView(); dataGridView.Columns.Add(new DataGridViewTextBoxColumn()); AccessibleObject accessibleObject = dataGridView.EditingPanelAccessibleObject; // Exception does not appear when trying to get first Child UiaCore.IRawElementProviderFragment firstChild = accessibleObject.FragmentNavigate(UiaCore.NavigateDirection.FirstChild); Assert.Null(firstChild); // Exception does not appear when trying to get last Child UiaCore.IRawElementProviderFragment lastChild = accessibleObject.FragmentNavigate(UiaCore.NavigateDirection.LastChild); Assert.Null(lastChild); }
public void ComboBoxAccessibleObject_FragmentNavigate_FirstChild_ReturnNull_IfHandleNotCreated(ComboBoxStyle comboBoxStyle) { using ComboBox comboBox = new ComboBox { DropDownStyle = comboBoxStyle }; AccessibleObject accessibleObject = comboBox.AccessibilityObject; UiaCore.IRawElementProviderFragment firstChild = accessibleObject.FragmentNavigate(UiaCore.NavigateDirection.FirstChild); Assert.Null(firstChild); Assert.False(comboBox.IsHandleCreated); }
public void CheckedListBoxItemAccessibleObject_FragmentNavigate_Parent_IsExpected(int itemIndex) { using CheckedListBox checkedListBox = new(); AccessibleObject expected = checkedListBox.AccessibilityObject; checkedListBox.Items.Add(0); checkedListBox.Items.Add(1); checkedListBox.Items.Add(2); AccessibleObject itemAccessibleObject = checkedListBox.AccessibilityObject.GetChild(itemIndex); UiaCore.IRawElementProviderFragment actual = itemAccessibleObject.FragmentNavigate(UiaCore.NavigateDirection.Parent); Assert.Equal(expected, actual); Assert.False(checkedListBox.IsHandleCreated); }
public void DataGridViewEditingPanelAccessibleObject_EditedState_FirstAndLastChildren_AreNotNull() { using DataGridView dataGridView = new DataGridView(); dataGridView.Columns.Add(new DataGridViewTextBoxColumn()); DataGridViewCell cell = dataGridView.Rows[0].Cells[0]; dataGridView.CurrentCell = cell; dataGridView.BeginEdit(false); AccessibleObject accessibleObject = dataGridView.EditingPanelAccessibleObject; UiaCore.IRawElementProviderFragment firstChild = accessibleObject.FragmentNavigate(UiaCore.NavigateDirection.FirstChild); Assert.NotNull(firstChild); UiaCore.IRawElementProviderFragment lastChild = accessibleObject.FragmentNavigate(UiaCore.NavigateDirection.LastChild); Assert.NotNull(lastChild); }
public void ComboBoxAccessibleObject_FragmentNavigate_FirstChild_NotNull(ComboBoxStyle comboBoxStyle, bool createControl) { using var control = new ComboBox { DropDownStyle = comboBoxStyle }; if (createControl) { control.CreateControl(); } var accessibleObject = control.AccessibilityObject; UiaCore.IRawElementProviderFragment firstChild = accessibleObject.FragmentNavigate(UiaCore.NavigateDirection.FirstChild); Assert.NotNull(firstChild); Assert.Equal(createControl, control.IsHandleCreated); }
/// <summary> /// Request to return the element in the specified direction. /// </summary> /// <param name="direction">Indicates the direction in which to navigate.</param> /// <returns>Returns the element in the specified direction.</returns> internal override UiaCore.IRawElementProviderFragment?FragmentNavigate(UiaCore.NavigateDirection direction) { if (_parentPropertyGrid.IsHandleCreated && _parentPropertyGrid.AccessibilityObject is PropertyGrid.PropertyGridAccessibleObject propertyGridAccessibleObject) { UiaCore.IRawElementProviderFragment navigationTarget = propertyGridAccessibleObject.ChildFragmentNavigate(this, direction); if (navigationTarget is not null) { return(navigationTarget); } } return(direction switch { UiaCore.NavigateDirection.FirstChild => IsSortedByCategories?GetCategory(0) : GetChild(0), UiaCore.NavigateDirection.LastChild => IsSortedByCategories?GetLastCategory() : GetLastChild(), _ => base.FragmentNavigate(direction) });
public void LinkAccessibleObject_FragmentNavigate_Parent_IsExpected(int linkIndex) { using LinkLabel linkLabel = new(); AccessibleObject expected = linkLabel.AccessibilityObject; for (int index = 0; index < 4; index++) { linkLabel.Links.Add(new()); } LinkAccessibleObject linkAccessibleObject = linkLabel.Links[linkIndex].AccessibleObject; UiaCore.IRawElementProviderFragment actual = linkAccessibleObject.FragmentNavigate(UiaCore.NavigateDirection.Parent); Assert.Equal(expected, actual); Assert.False(linkLabel.IsHandleCreated); }
public void PropertyDescriptorGridEntryAccessibleObject_Navigates_to_DropDownControlHolder() { using PropertyGrid propertyGrid = new PropertyGrid(); using TestPropertyGridView testPropertyGridView = new TestPropertyGridView(null, propertyGrid); TestPropertyDescriptorGridEntry gridEntry = new TestPropertyDescriptorGridEntry(propertyGrid, null, false); testPropertyGridView.TestAccessor().Dynamic.selectedGridEntry = gridEntry; TestDropDownHolder dropDownHolder = new TestDropDownHolder(testPropertyGridView); dropDownHolder.SetState(0x00000002, true); // Control class States.Visible flag testPropertyGridView.TestAccessor().Dynamic.dropDownHolder = dropDownHolder; gridEntry.parentPE = new TestGridEntry(propertyGrid, null, testPropertyGridView); UiaCore.IRawElementProviderFragment firstChild = gridEntry.AccessibilityObject.FragmentNavigate(UiaCore.NavigateDirection.FirstChild); Assert.NotNull(firstChild); Assert.Equal(typeof(PropertyGridView.DropDownHolder.DropDownHolderAccessibleObject), firstChild.GetType()); }
/// <summary> /// Request to return the element in the specified direction. /// </summary> /// <param name="direction">Indicates the direction in which to navigate.</param> /// <returns>Returns the element in the specified direction.</returns> internal override UiaCore.IRawElementProviderFragment?FragmentNavigate(UiaCore.NavigateDirection direction) { if (_parentPropertyGrid.IsHandleCreated && _parentPropertyGrid.AccessibilityObject is PropertyGrid.PropertyGridAccessibleObject propertyGridAccessibleObject) { UiaCore.IRawElementProviderFragment navigationTarget = propertyGridAccessibleObject.ChildFragmentNavigate(this, direction); if (navigationTarget is not null) { return(navigationTarget); } } if (_owningPropertyGridView.OwnerGrid.SortedByCategories) { switch (direction) { case UiaCore.NavigateDirection.FirstChild: return(GetFirstCategory()); case UiaCore.NavigateDirection.LastChild: return(GetLastCategory()); } } else { switch (direction) { case UiaCore.NavigateDirection.FirstChild: return(GetChild(0)); case UiaCore.NavigateDirection.LastChild: int childCount = GetChildCount(); if (childCount > 0) { return(GetChild(childCount - 1)); } return(null); } } return(base.FragmentNavigate(direction)); }
public void PropertyDescriptorGridEntryAccessibleObject_Navigates_to_DropDownControlHolder() { using PropertyGrid propertyGrid = new(); using PropertyGridView propertyGridView = new(serviceProvider : null, propertyGrid); TestPropertyGridViewAccessibleObject accessibleObject = new(propertyGridView, parentPropertyGrid : null); propertyGridView.Properties.SetObject(propertyGrid.TestAccessor().Dynamic.s_accessibilityProperty, accessibleObject); TestPropertyDescriptorGridEntry gridEntry = new(propertyGrid, null, false); propertyGridView.TestAccessor().Dynamic._selectedGridEntry = gridEntry; PropertyGridView.DropDownHolder dropDownHolder = new(propertyGridView); dropDownHolder.TestAccessor().Dynamic.SetState(0x00000002, true); // Control class States.Visible flag propertyGridView.TestAccessor().Dynamic._dropDownHolder = dropDownHolder; gridEntry.TestAccessor().Dynamic._parent = new TestGridEntry(propertyGrid, null, propertyGridView); UiaCore.IRawElementProviderFragment firstChild = gridEntry.AccessibilityObject.FragmentNavigate(UiaCore.NavigateDirection.FirstChild); Assert.NotNull(firstChild); Assert.Equal(typeof(PropertyGridView.DropDownHolder.DropDownHolderAccessibleObject), firstChild.GetType()); }
public void GridViewTextBoxAccessibleObject_FragmentNavigate_navigates_correctly() { using PropertyGrid propertyGrid = new PropertyGrid { SelectedObject = Point.Empty }; propertyGrid.CreateControl(); PropertyGridView propertyGridView = propertyGrid.TestAccessor().GridView; int firstPropertyIndex = 2; // Index of Text property which has a RichEdit control as an editor. PropertyDescriptorGridEntry gridEntry = (PropertyDescriptorGridEntry)propertyGridView.AccessibilityGetGridEntries()[firstPropertyIndex]; propertyGridView.TestAccessor().Dynamic._selectedGridEntry = gridEntry; // Force the entry edit control Handle creation. // GridViewEditAccessibleObject exists, if its control is already created. // In UI case an entry edit control is created when an PropertyGridView gets focus. Assert.NotEqual(IntPtr.Zero, propertyGridView.TestAccessor().Dynamic.EditTextBox.Handle); UiaCore.IRawElementProviderFragment editFieldAccessibleObject = gridEntry.AccessibilityObject.FragmentNavigate(UiaCore.NavigateDirection.FirstChild); Assert.Equal("GridViewTextBoxAccessibleObject", editFieldAccessibleObject.GetType().Name); // The case with drop down holder: using PropertyGridView.DropDownHolder dropDownHolder = new(propertyGridView); dropDownHolder.CreateControl(); propertyGridView.TestAccessor().Dynamic._dropDownHolder = dropDownHolder; dropDownHolder.TestAccessor().Dynamic.SetState(0x00000002, true); // Control class States.Visible flag UiaCore.IRawElementProviderFragment dropDownHolderAccessibleObject = gridEntry.AccessibilityObject.FragmentNavigate(UiaCore.NavigateDirection.FirstChild); Assert.Equal("DropDownHolderAccessibleObject", dropDownHolderAccessibleObject.GetType().Name); Assert.True(propertyGridView.DropDownVisible); object previousAccessibleObject = editFieldAccessibleObject.Navigate(UiaCore.NavigateDirection.PreviousSibling); Assert.NotNull(previousAccessibleObject); Assert.Same(dropDownHolder.AccessibilityObject, previousAccessibleObject); }
public void ListViewItemAccessibleObject_FragmentNavigate_ListWithItems_VirtualMode_VirtualListSize3_ReturnsExpected(View view, bool showGroups) { using ListView listView = new ListView { View = view, VirtualMode = true, ShowGroups = showGroups }; listView.VirtualListSize = 3; ListViewItem listItem1 = new ListViewItem(new string[] { "Test A", "Alpha" }, -1); ListViewItem listItem2 = new ListViewItem(new string[] { "Test B", "Beta" }, -1); ListViewItem listItem3 = new ListViewItem(new string[] { "Test C", "Gamma" }, -1); listView.RetrieveVirtualItem += (s, e) => { e.Item = e.ItemIndex switch { 0 => listItem1, 1 => listItem2, 2 => listItem3, _ => throw new NotImplementedException() }; }; listItem1.SetItemIndex(listView, 0); listItem2.SetItemIndex(listView, 1); listItem3.SetItemIndex(listView, 2); listView.CreateControl(); AccessibleObject accessibleObject1 = listItem1.AccessibilityObject; AccessibleObject accessibleObject2 = listItem2.AccessibilityObject; AccessibleObject accessibleObject3 = listItem3.AccessibilityObject; // First list view item Assert.Null(accessibleObject1.FragmentNavigate(UiaCore.NavigateDirection.PreviousSibling)); UiaCore.IRawElementProviderFragment listItem1NextSibling = accessibleObject1.FragmentNavigate(UiaCore.NavigateDirection.NextSibling); Assert.IsType <ListViewItemAccessibleObject>(listItem1NextSibling); Assert.Equal(accessibleObject2, listItem1NextSibling); // Second list view item UiaCore.IRawElementProviderFragment listItem2PreviousSibling = accessibleObject2.FragmentNavigate(UiaCore.NavigateDirection.PreviousSibling); UiaCore.IRawElementProviderFragment listItem2NextSibling = accessibleObject2.FragmentNavigate(UiaCore.NavigateDirection.NextSibling); Assert.IsType <ListViewItemAccessibleObject>(listItem2PreviousSibling); Assert.IsType <ListViewItemAccessibleObject>(listItem2NextSibling); Assert.Equal(accessibleObject1, listItem2PreviousSibling); Assert.Equal(accessibleObject3, listItem2NextSibling); // Third list view item Assert.Null(accessibleObject3.FragmentNavigate(UiaCore.NavigateDirection.NextSibling)); UiaCore.IRawElementProviderFragment listItem3PreviousSibling = accessibleObject3.FragmentNavigate(UiaCore.NavigateDirection.PreviousSibling); Assert.IsType <ListViewItemAccessibleObject>(listItem3PreviousSibling); Assert.Equal(accessibleObject2, listItem3PreviousSibling); // Parent Assert.Equal(accessibleObject1.FragmentNavigate(UiaCore.NavigateDirection.Parent), listView.AccessibilityObject); Assert.Equal(accessibleObject2.FragmentNavigate(UiaCore.NavigateDirection.Parent), listView.AccessibilityObject); Assert.Equal(accessibleObject3.FragmentNavigate(UiaCore.NavigateDirection.Parent), listView.AccessibilityObject); // Childs AccessibleObject firstChild = accessibleObject1.FragmentNavigate(UiaCore.NavigateDirection.FirstChild) as AccessibleObject; AccessibleObject lastChild = accessibleObject1.FragmentNavigate(UiaCore.NavigateDirection.LastChild) as AccessibleObject; Assert.IsType <ListViewSubItemAccessibleObject>(firstChild); Assert.IsType <ListViewSubItemAccessibleObject>(lastChild); Assert.NotEqual(firstChild, lastChild); Assert.True(listView.IsHandleCreated); }
public void ToolStripAccessibleObject_FragmentNavigate_FirstChild_ThumbButton(AccessibleObject accessibleObject) { UiaCore.IRawElementProviderFragment firstChild = accessibleObject.FragmentNavigate(UiaCore.NavigateDirection.FirstChild); Assert.NotNull(firstChild); Assert.Equal(NativeConstants.UIA_ThumbControlTypeId, firstChild.GetPropertyValue(NativeConstants.UIA_ControlTypePropertyId)); }
public void ComboBoxAccessibleObject_FragmentNavigate_FirstChild_NotNull(AccessibleObject accessibleObject) { UiaCore.IRawElementProviderFragment firstChild = accessibleObject.FragmentNavigate(UiaCore.NavigateDirection.FirstChild); Assert.NotNull(firstChild); }