Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add code coverage for monthcalendar #11619

Merged
merged 2 commits into from
Jul 10, 2024
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -243,4 +243,98 @@ private CalendarBodyAccessibleObject CreateCalendarBodyAccessibleObject(MonthCal

return bodyAccessibleObject;
}

[WinFormsTheory]
[InlineData(-1, -1, null)]
[InlineData(5, 6, typeof(CalendarCellAccessibleObject))]
public void CalendarBodyAccessibleObject_GetItem_ReturnsExpectedResult_ForGivenIndices(int rowIndex, int columnIndex, Type expectedType)
{
using MonthCalendar control = new();
control.CreateControl();
CalendarBodyAccessibleObject accessibleObject = CreateCalendarBodyAccessibleObject(control);

var result = accessibleObject.GetItem(rowIndex, columnIndex);

if (expectedType is null)
{
result.Should().BeNull();
}
else
{
result.Should().NotBeNull();
result.Should().BeOfType(expectedType);
}

control.IsHandleCreated.Should().BeTrue();
}

[WinFormsTheory]
[InlineData(true, (int)MONTH_CALDENDAR_MESSAGES_VIEW.MCMV_MONTH, 6)]
[InlineData(false, (int)MONTH_CALDENDAR_MESSAGES_VIEW.MCMV_MONTH, 0)]
[InlineData(true, (int)MONTH_CALDENDAR_MESSAGES_VIEW.MCMV_YEAR, 0)]
[InlineData(true, (int)MONTH_CALDENDAR_MESSAGES_VIEW.MCMV_DECADE, 0)]
[InlineData(true, (int)MONTH_CALDENDAR_MESSAGES_VIEW.MCMV_CENTURY, 0)]
public void CalendarBodyAccessibleObject_GetRowHeaders_ReturnsExpected(bool showWeekNumbers, int viewInt, int expectedCount)
{
MONTH_CALDENDAR_MESSAGES_VIEW view = (MONTH_CALDENDAR_MESSAGES_VIEW)viewInt;
using MonthCalendar control = new() { ShowWeekNumbers = showWeekNumbers };
control.CreateControl();
PInvoke.SendMessage(control, PInvoke.MCM_SETCURRENTVIEW, 0, (nint)view);
CalendarBodyAccessibleObject accessibleObject = CreateCalendarBodyAccessibleObject(control);

var rowHeaders = accessibleObject.GetRowHeaders();

if (expectedCount == 0)
{
rowHeaders.Should().BeNull();
}
else
{
rowHeaders.Should().NotBeNull();
rowHeaders.Length.Should().Be(expectedCount);
}

control.IsHandleCreated.Should().BeTrue();
}

[WinFormsFact]
public void CalendarBodyAccessibleObject_GetRowHeaders_ReturnsCorrectType()
{
using MonthCalendar control = new() { ShowWeekNumbers = true };
control.CreateControl();
CalendarBodyAccessibleObject accessibleObject = CreateCalendarBodyAccessibleObject(control);

var rowHeaders = accessibleObject.GetRowHeaders();

rowHeaders.Should().AllBeOfType<CalendarWeekNumberCellAccessibleObject>();
control.IsHandleCreated.Should().BeTrue();
}

[WinFormsTheory]
[InlineData(null, false)]
[InlineData("CustomName", false)]
[InlineData("AccessibleName", false, true)]
public void CalendarBodyAccessibleObject_CanGetNameInternal_ShouldBeConsistentlyFalse(string name, bool expected, bool isAccessibleName = false)
{
using MonthCalendar control = new();
if (isAccessibleName)
{
control.AccessibleName = name;
}
else
{
control.Name = name;
}

var accessibleObject = CreateCalendarBodyAccessibleObject(control);
accessibleObject.CanGetNameInternal.Should().Be(expected);
}

[WinFormsFact]
public void CalendarBodyAccessibleObject_RowOrColumnMajor_ReturnsRowMajor()
{
using MonthCalendar control = new();
var accessibleObject = CreateCalendarBodyAccessibleObject(control);
accessibleObject.RowOrColumnMajor.Should().Be(RowOrColumnMajor.RowOrColumnMajor_RowMajor);
Zheng-Li01 marked this conversation as resolved.
Show resolved Hide resolved
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -125,6 +125,18 @@ public void CalendarButtonAccessibleObject_RaiseMouseClick_DoesNotThrow_WhenCont
control.IsHandleCreated.Should().BeTrue();
}

[WinFormsFact]
public void CalendarButtonAccessibleObject_CanGetDefaultActionInternal_ReturnsFalse()
Zheng-Li01 marked this conversation as resolved.
Show resolved Hide resolved
{
using MonthCalendar control = new();
MonthCalendarAccessibleObject controlAccessibleObject = (MonthCalendarAccessibleObject)control.AccessibilityObject;
CalendarButtonAccessibleObject buttonAccessibleObject = new SubCalendarButtonAccessibleObject(controlAccessibleObject);

bool canGetDefaultActionInternal = buttonAccessibleObject.TestAccessor().Dynamic.CanGetDefaultActionInternal;

canGetDefaultActionInternal.Should().BeFalse();
}

private class SubCalendarButtonAccessibleObject : CalendarButtonAccessibleObject
{
public SubCalendarButtonAccessibleObject(MonthCalendarAccessibleObject calendarAccessibleObject)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -249,4 +249,48 @@ public void CalendarCellAccessibleObject_FragmentNavigate_Child_ReturnsExpected(
Assert.Null(cell.FragmentNavigate(NavigateDirection.NavigateDirection_LastChild));
Assert.False(control.IsHandleCreated);
}

[WinFormsFact]
public void CalendarCellAccessibleObject_CanGetDescriptionInternal_ReturnsFalse()
{
using MonthCalendar control = new();
CalendarCellAccessibleObject cellAccessibleObject = CreateCalendarCellAccessibleObject(control);

bool canGetDescription = cellAccessibleObject.CanGetDescriptionInternal;

canGetDescription.Should().BeFalse();
}

[WinFormsFact]
public void CalendarCellAccessibleObject_GetColumnHeaderItems_ReturnsNull_IfHandleNotCreated()
Zheng-Li01 marked this conversation as resolved.
Show resolved Hide resolved
{
using MonthCalendar control = new();
CalendarCellAccessibleObject cellAccessibleObject = CreateCalendarCellAccessibleObject(control);
cellAccessibleObject.GetColumnHeaderItems().Should().BeNull();
}

[WinFormsTheory]
[InlineData(true, 1, typeof(CalendarWeekNumberCellAccessibleObject))]
[InlineData(false, 0, null)]
public void CalendarCellAccessibleObject_GetRowHeaderItems_ReturnsCorrectly(bool showWeekNumbers, int expectedCount, Type expectedType)
{
using MonthCalendar control = new() { ShowWeekNumbers = showWeekNumbers };
control.CreateControl();
CalendarCellAccessibleObject cellAccessibleObject = CreateCalendarCellAccessibleObject(control, 0, 2, 2);

var rowHeaderItems = cellAccessibleObject.GetRowHeaderItems();

if (expectedCount == 0)
{
rowHeaderItems.Should().BeNull("no week number cells should be present as row headers when week numbers are not visible");
}
else
{
rowHeaderItems.Should().NotBeNull();
rowHeaderItems.Should().HaveCount(expectedCount, $"expected {expectedCount} week number cell(s) as row header(s)");
rowHeaderItems[0].Should().BeAssignableTo(expectedType, "the row header should match the expected type");
}

control.IsHandleCreated.Should().BeTrue();
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -209,4 +209,15 @@ private CalendarDayOfWeekCellAccessibleObject CreateCalendarDayOfWeekCellCellAcc

return cellAccessibleObject;
}

[WinFormsFact]
public void CalendarDayOfWeekCellAccessibleObject_IsPatternSupported_CallsBaseForUnsupportedPatterns_UsingFluentAssertions()
Zheng-Li01 marked this conversation as resolved.
Show resolved Hide resolved
{
using MonthCalendar control = new();
CalendarDayOfWeekCellAccessibleObject cellAccessibleObject = CreateCalendarDayOfWeekCellCellAccessibleObject(control);
UIA_PATTERN_ID basePatternId = UIA_PATTERN_ID.UIA_ExpandCollapsePatternId;

bool actual = cellAccessibleObject.IsPatternSupported(basePatternId);
actual.Should().BeFalse();
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -61,4 +61,14 @@ private CalendarHeaderAccessibleObject CreateCalendarHeaderAccessibleObject(Mont

return headerAccessibleObject;
}

[WinFormsFact]
public void CalendarHeaderAccessibleObject_CanGetNameInternal_ReturnsFalse()
Zheng-Li01 marked this conversation as resolved.
Show resolved Hide resolved
{
using MonthCalendar control = new();
CalendarHeaderAccessibleObject headerAccessibleObject = CreateCalendarHeaderAccessibleObject(control);
bool canGetName = headerAccessibleObject.CanGetNameInternal;

canGetName.Should().BeFalse();
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,8 @@ public void CalendarNextButtonAccessibleObject_ctor_default()

nextButtonAccessibleObject.FragmentNavigate(NavigateDirection.NavigateDirection_PreviousSibling).Should().BeSameAs(previousButton);
nextButtonAccessibleObject.FragmentNavigate(NavigateDirection.NavigateDirection_NextSibling).Should().BeSameAs(firstCalendar);
nextButtonAccessibleObject.CanGetDescriptionInternal.Should().BeFalse();
nextButtonAccessibleObject.CanGetNameInternal.Should().BeFalse();

Rectangle actual = nextButtonAccessibleObject.Bounds;
Rectangle actualInClientCoordinates = control.RectangleToClient(actual);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -94,4 +94,18 @@ public void CalendarPreviousButtonAccessibleObject_FragmentNavigate_Child_Return
Assert.Null(prevButton.FragmentNavigate(NavigateDirection.NavigateDirection_LastChild));
Assert.False(control.IsHandleCreated);
}

[WinFormsFact]
public void CalendarPreviousButtonAccessibleObject_CanGetDescriptionInternal_And_CanGetNameInternal_ReturnFalse()
Zheng-Li01 marked this conversation as resolved.
Show resolved Hide resolved
{
using MonthCalendar control = new();
var controlAccessibleObject = (MonthCalendarAccessibleObject)control.AccessibilityObject;
CalendarPreviousButtonAccessibleObject previousButtonAccessibleObject = new(controlAccessibleObject);

bool canGetDescription = previousButtonAccessibleObject.CanGetDescriptionInternal;
bool canGetName = previousButtonAccessibleObject.CanGetNameInternal;

canGetDescription.Should().BeFalse();
canGetName.Should().BeFalse();
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -209,12 +209,12 @@ private CalendarRowAccessibleObject CreateCalendarRowAccessibleObject(MonthCalen
}

[WinFormsFact]
public void CalendarRowAccessibleObject_CanGetDescriptionInternal_ReturnsFalse()
public void CalendarRowAccessibleObject_CanGetDescriptionAndNameInternal_ShouldBeFalse()
Zheng-Li01 marked this conversation as resolved.
Show resolved Hide resolved
{
using MonthCalendar control = new();
CalendarRowAccessibleObject rowAccessibleObject = CreateCalendarRowAccessibleObject(control);

rowAccessibleObject.CanGetDescriptionInternal.Should().BeFalse();
control.IsHandleCreated.Should().BeFalse();
rowAccessibleObject.CanGetNameInternal.Should().BeFalse();
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -114,4 +114,18 @@ public void CalendarTodayLinkAccessibleObject_FragmentNavigate_Child_ReturnsExpe
Assert.Null(todayLink.FragmentNavigate(NavigateDirection.NavigateDirection_LastChild));
Assert.False(control.IsHandleCreated);
}

[WinFormsFact]
public void CalendarTodayLinkAccessibleObject_CanGetDescriptionInternalAndCanGetNameInternal_ReturnsFalse()
Zheng-Li01 marked this conversation as resolved.
Show resolved Hide resolved
{
using MonthCalendar control = new();
var controlAccessibleObject = (MonthCalendarAccessibleObject)control.AccessibilityObject;
CalendarTodayLinkAccessibleObject todayLinkAccessibleObject = new(controlAccessibleObject);

bool canGetDescription = todayLinkAccessibleObject.TestAccessor().Dynamic.CanGetDescriptionInternal;
bool canGetName = todayLinkAccessibleObject.TestAccessor().Dynamic.CanGetNameInternal;

canGetDescription.Should().BeFalse();
canGetName.Should().BeFalse();
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -196,6 +196,22 @@ public void CalendarWeekNumberCellAccessibleObject_FragmentNavigate_Child_Return
Assert.False(control.IsHandleCreated);
}

[WinFormsTheory]
[InlineData((int)UIA_PATTERN_ID.UIA_InvokePatternId, false)]
[InlineData((int)UIA_PATTERN_ID.UIA_GridItemPatternId, false)]
[InlineData((int)UIA_PATTERN_ID.UIA_TableItemPatternId, false)]
[InlineData(9999, false)]
public void CalendarWeekNumberCellAccessibleObject_IsPatternSupported_ReturnsExpected(int patternIdAsInt, bool expected)
Zheng-Li01 marked this conversation as resolved.
Show resolved Hide resolved
{
using MonthCalendar control = new();

CalendarWeekNumberCellAccessibleObject cellAccessibleObject = CreateCalendarWeekNumberCellAccessibleObject(control);
UIA_PATTERN_ID patternId = (UIA_PATTERN_ID)patternIdAsInt;
bool isSupported = cellAccessibleObject.IsPatternSupported(patternId);

isSupported.Should().Be(expected, $"because pattern {patternId} support should be {expected} for CalendarWeekNumberCellAccessibleObject.");
}

private CalendarWeekNumberCellAccessibleObject CreateCalendarWeekNumberCellAccessibleObject(MonthCalendar control, int calendarIndex = 0, int rowIndex = 0, int columnIndex = 0)
{
MonthCalendarAccessibleObject controlAccessibleObject = (MonthCalendarAccessibleObject)control.AccessibilityObject;
Expand Down
Loading