File: System\Windows\Forms\MonthCalendar.HitTestInfoTests.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 static System.Windows.Forms.MonthCalendar;
using Point = System.Drawing.Point;
 
namespace System.Windows.Forms.Tests;
 
public class MonthCalendarHitTestInfoTests
{
    [WinFormsTheory]
    [InlineData(HitArea.Date, true, "2022/01/01")]
    [InlineData(HitArea.WeekNumbers, true, "2022/01/01")]
    [InlineData(HitArea.Nowhere, false, null)]
    public void HitTestInfo_Constructor_SetsPropertiesCorrectly(HitArea hitArea, bool hasDateTime, string dateTimeStr)
    {
        Point point = new(5, 5);
        DateTime? time = hasDateTime ? DateTime.Parse(dateTimeStr) : null;
 
        HitTestInfo hitTestInfo = time.HasValue
            ? new HitTestInfo(point, hitArea, time.Value)
            : new HitTestInfo(point, hitArea);
 
        hitTestInfo.Point.Should().Be(point);
        hitTestInfo.HitArea.Should().Be(hitArea);
        hitTestInfo.Time.Should().Be(time ?? DateTime.MinValue);
    }
 
    [WinFormsTheory]
    [InlineData(HitArea.Date, true)]
    [InlineData(HitArea.WeekNumbers, true)]
    [InlineData(HitArea.Nowhere, false)]
    public void HitTestInfo_HitAreaHasValidDateTime_ReturnsExpectedResult(HitArea hitArea, bool expectedResult)
    {
        bool result = HitTestInfo.HitAreaHasValidDateTime(hitArea);
 
        result.Should().Be(expectedResult);
    }
 
    [WinFormsTheory]
    [InlineData(null)]
    public void HitTestInfo_Constructor_WithNullDateTime_ThrowsException(DateTime? time)
    {
        Point point = new(5, 5);
        HitArea hitArea = HitArea.Date;
 
        Action action = () => new HitTestInfo(point, hitArea, time!.Value);
 
        action.Should().Throw<InvalidOperationException>();
    }
}