File: System\Windows\Forms\AccessibleObjects\MonthCalendar.CalendarTodayLinkAccessibleObjectTests.cs
Web Access
Project: src\src\System.Windows.Forms\tests\UnitTests\System.Windows.Forms.Tests.csproj (System.Windows.Forms.Tests)
// Licensed to the .NET Foundation under one or more agreements.
// The .NET Foundation licenses this file to you under the MIT license.
 
using Windows.Win32.UI.Accessibility;
using static System.Windows.Forms.MonthCalendar;
 
namespace System.Windows.Forms.Tests.AccessibleObjects;
 
public class MonthCalendar_CalendarTodayLinkAccessibleObjectTests
{
    [WinFormsFact]
    public void CalendarTodayLinkAccessibleObject_ctor_default()
    {
        using MonthCalendar control = new();
        var controlAccessibleObject = (MonthCalendarAccessibleObject)control.AccessibilityObject;
        CalendarTodayLinkAccessibleObject todayLinkAccessibleObject = new(controlAccessibleObject);
     
        controlAccessibleObject.Should().BeEquivalentTo(todayLinkAccessibleObject.TestAccessor().Dynamic._monthCalendarAccessibleObject);
        control.IsHandleCreated.Should().BeFalse();
 
        bool canGetDescriptionInternalResult = todayLinkAccessibleObject.TestAccessor().Dynamic.CanGetDescriptionInternal;
        canGetDescriptionInternalResult.Should().BeFalse();
 
        bool CanGetNameInternalResult = todayLinkAccessibleObject.TestAccessor().Dynamic.CanGetNameInternal;
        CanGetNameInternalResult.Should().BeFalse();
    }
 
    [WinFormsFact]
    public void CalendarTodayLinkAccessibleObject_Description_ReturnsExpected()
    {
        using MonthCalendar control = new();
        var controlAccessibleObject = (MonthCalendarAccessibleObject)control.AccessibilityObject;
        CalendarTodayLinkAccessibleObject todayLinkAccessibleObject = new(controlAccessibleObject);
 
        string actual = todayLinkAccessibleObject.Description;
 
        Assert.Equal(SR.CalendarTodayLinkAccessibleObjectDescription, actual);
        Assert.False(control.IsHandleCreated);
    }
 
    [WinFormsFact]
    public void CalendarTodayLinkAccessibleObject_GetChildId_ReturnsExpected()
    {
        using MonthCalendar control = new();
 
        control.CreateControl();
 
        var controlAccessibleObject = (MonthCalendarAccessibleObject)control.AccessibilityObject;
        CalendarTodayLinkAccessibleObject todayLinkAccessibleObject = new(controlAccessibleObject);
 
        int expected = 3 + controlAccessibleObject.CalendarsAccessibleObjects.Count;
        int actual = todayLinkAccessibleObject.GetChildId();
 
        Assert.Equal(expected, actual);
        Assert.True(control.IsHandleCreated);
    }
 
    [WinFormsFact]
    public void CalendarTodayLinkAccessibleObject_GetChildId_ReturnsExpected_IfCalendarsAccessibleObjectsIsNull()
    {
        using MonthCalendar control = new();
        var controlAccessibleObject = (MonthCalendarAccessibleObject)control.AccessibilityObject;
        CalendarTodayLinkAccessibleObject todayLinkAccessibleObject = new(controlAccessibleObject);
 
        int actual = todayLinkAccessibleObject.GetChildId();
 
        Assert.Null(controlAccessibleObject.CalendarsAccessibleObjects);
        Assert.Equal(-1, actual);
        Assert.False(control.IsHandleCreated);
    }
 
    [WinFormsFact]
    public void CalendarTodayLinkAccessibleObject_Name_ReturnsExpected()
    {
        using MonthCalendar control = new();
        var controlAccessibleObject = (MonthCalendarAccessibleObject)control.AccessibilityObject;
        CalendarTodayLinkAccessibleObject todayLinkAccessibleObject = new(controlAccessibleObject);
 
        string expected = string.Format(SR.MonthCalendarTodayButtonAccessibleName,
            DateTime.Today.ToShortDateString());
        string actual = todayLinkAccessibleObject.Name;
 
        Assert.Equal(expected, actual);
        Assert.False(control.IsHandleCreated);
    }
 
    [WinFormsFact]
    public void CalendarTodayLinkAccessibleObject_FragmentNavigate_Parent_ReturnsExpected()
    {
        using MonthCalendar control = new();
        MonthCalendarAccessibleObject controlAccessibleObject = new(control);
        CalendarTodayLinkAccessibleObject todayLink = new(controlAccessibleObject);
 
        Assert.Equal(controlAccessibleObject, todayLink.FragmentNavigate(NavigateDirection.NavigateDirection_Parent));
        Assert.False(control.IsHandleCreated);
    }
 
    [WinFormsFact]
    public void CalendarTodayLinkAccessibleObject_FragmentNavigate_Sibling_ReturnsExpected()
    {
        using MonthCalendar control = new();
        MonthCalendarAccessibleObject controlAccessibleObject = new(control);
        CalendarTodayLinkAccessibleObject todayLink = new(controlAccessibleObject);
 
        AccessibleObject lastCalendar = controlAccessibleObject.CalendarsAccessibleObjects?.Last?.Value;
 
        Assert.Equal(lastCalendar, todayLink.FragmentNavigate(NavigateDirection.NavigateDirection_PreviousSibling));
        Assert.Null(todayLink.FragmentNavigate(NavigateDirection.NavigateDirection_NextSibling));
        Assert.False(control.IsHandleCreated);
    }
 
    [WinFormsFact]
    public void CalendarTodayLinkAccessibleObject_FragmentNavigate_Child_ReturnsExpected()
    {
        using MonthCalendar control = new();
        MonthCalendarAccessibleObject controlAccessibleObject = new(control);
        CalendarTodayLinkAccessibleObject todayLink = new(controlAccessibleObject);
 
        Assert.Null(todayLink.FragmentNavigate(NavigateDirection.NavigateDirection_FirstChild));
        Assert.Null(todayLink.FragmentNavigate(NavigateDirection.NavigateDirection_LastChild));
        Assert.False(control.IsHandleCreated);
    }
}