|
// Licensed to the .NET Foundation under one or more agreements.
// The .NET Foundation licenses this file to you under the MIT license.
#nullable disable
using Windows.Win32.System.Variant;
using Windows.Win32.UI.Accessibility;
using static System.Windows.Forms.ColumnHeader;
namespace System.Windows.Forms.Tests.AccessibleObjects;
public class ColumnHeader_ListViewColumnHeaderAccessibleObjectTests
{
[WinFormsFact]
public void ListViewColumnHeaderAccessibleObject_Ctor_OwnerColumnHeaderCannotBeNull()
{
Assert.Throws<ArgumentNullException>(() => new ListViewColumnHeaderAccessibleObject(null));
}
[WinFormsFact]
public void ListViewColumnHeaderAccessibleObject_GetPropertyValue_ControlType_ReturnsExpected()
{
using ColumnHeader columnHeader = new();
ListViewColumnHeaderAccessibleObject accessibleObject = new(columnHeader);
Assert.Equal(UIA_CONTROLTYPE_ID.UIA_HeaderItemControlTypeId, (UIA_CONTROLTYPE_ID)(int)accessibleObject.GetPropertyValue(UIA_PROPERTY_ID.UIA_ControlTypePropertyId));
}
[WinFormsFact]
public void ListViewColumnHeaderAccessibleObject_GetPropertyValue_Name_ReturnsExpected()
{
string testText = "This is a simple text for testing.";
using ColumnHeader columnHeader = new() { Text = testText };
ListViewColumnHeaderAccessibleObject accessibleObject = new(columnHeader);
Assert.Equal(testText, ((BSTR)accessibleObject.GetPropertyValue(UIA_PROPERTY_ID.UIA_NamePropertyId)).ToStringAndFree());
Assert.Equal(testText, ((BSTR)accessibleObject.GetPropertyValue(UIA_PROPERTY_ID.UIA_LegacyIAccessibleNamePropertyId)).ToStringAndFree());
Assert.Equal(VARIANT.Empty, accessibleObject.GetPropertyValue(UIA_PROPERTY_ID.UIA_LegacyIAccessibleDefaultActionPropertyId));
}
[WinFormsFact]
public void ListViewColumnHeaderAccessibleObject_IsDisconnected_WhenListViewReleasesUiaProvider()
{
using ListView listView = new();
using ColumnHeader columnHeader = new();
listView.Columns.Add(columnHeader);
EnforceAccessibleObjectCreation(columnHeader);
_ = listView.AccessibilityObject;
listView.ReleaseUiaProvider(listView.HWND);
Assert.Null(columnHeader.TestAccessor().Dynamic._accessibilityObject);
Assert.True(listView.IsHandleCreated);
}
[WinFormsFact]
public void ListViewColumnHeaderAccessibleObject_IsDisconnected_WhenListViewIsCleared()
{
using ListView listView = new();
using ColumnHeader columnHeader = new();
listView.Columns.Add(columnHeader);
EnforceAccessibleObjectCreation(columnHeader);
listView.Clear();
Assert.Null(columnHeader.TestAccessor().Dynamic._accessibilityObject);
Assert.False(listView.IsHandleCreated);
}
[WinFormsFact]
public void ListViewColumnHeaderAccessibleObject_IsDisconnected_WhenColumnsAreCleared()
{
using ListView listView = new();
using ColumnHeader columnHeader = new();
listView.Columns.Add(columnHeader);
EnforceAccessibleObjectCreation(columnHeader);
listView.Columns.Clear();
Assert.Null(columnHeader.TestAccessor().Dynamic._accessibilityObject);
Assert.False(listView.IsHandleCreated);
}
[WinFormsFact]
public void ListViewColumnHeaderAccessibleObject_IsDisconnected_WhenColumnIsRemoved()
{
using ListView listView = new();
using ColumnHeader columnHeader = new();
listView.Columns.Add(columnHeader);
EnforceAccessibleObjectCreation(columnHeader);
listView.Columns.Remove(columnHeader);
Assert.Null(columnHeader.TestAccessor().Dynamic._accessibilityObject);
Assert.False(listView.IsHandleCreated);
}
private static void EnforceAccessibleObjectCreation(ColumnHeader columnHeader)
{
_ = columnHeader.AccessibilityObject;
Assert.NotNull(columnHeader.TestAccessor().Dynamic._accessibilityObject);
}
}
|