File: System\Windows\Forms\PropertyGridInternal\GridToolTipTests.cs
Web Access
Project: src\src\test\unit\System.Windows.Forms\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.
 
namespace System.Windows.Forms.PropertyGridInternal.Tests;
 
public class GridToolTipTests : IDisposable
{
    private readonly Control[] _controls;
    private readonly GridToolTip _toolTip;
    private const int MaximumToolTipLength = 1000;
 
    public GridToolTipTests()
    {
        _controls = [new Button(), new TextBox()];
        _toolTip = new(_controls);
    }
 
    public void Dispose()
    {
        foreach (Control c in _controls)
        {
            c.Dispose();
        }
 
        _toolTip.Dispose();
    }
 
    [WinFormsFact]
    public void GridToolTip_SetAndGetValue()
    {
        _toolTip.ToolTip = "Test tooltip";
 
        _toolTip.ToolTip.Should().Be("Test tooltip");
 
        _toolTip.ToolTip = "Another tooltip";
 
        _toolTip.ToolTip.Should().Be("Another tooltip");
    }
 
    [WinFormsFact]
    public void GridToolTip_SetNullValue()
    {
        _toolTip.ToolTip = null;
 
        _toolTip.ToolTip.Should().BeNull();
    }
 
    [WinFormsFact]
    public void GridToolTip_SetEmptyString()
    {
        _toolTip.ToolTip = string.Empty;
 
        _toolTip.ToolTip.Should().BeEmpty();
    }
 
    [WinFormsFact]
    public void GridToolTip_SetTooLong_Truncates()
    {
        _toolTip.ToolTip = new('a', MaximumToolTipLength + 5);
 
        _toolTip.ToolTip.Should().EndWith("...");
        _toolTip.ToolTip.Length.Should().Be(MaximumToolTipLength + 3);
 
        _toolTip.ToolTip = new('b', MaximumToolTipLength);
 
        _toolTip.ToolTip.Should().NotEndWith("...");
        _toolTip.ToolTip.Length.Should().Be(MaximumToolTipLength);
    }
 
    [WinFormsFact]
    public void GridToolTip_Reset()
    {
        _toolTip.ToolTip = "abc";
        _toolTip.Reset();
 
        _toolTip.ToolTip.Should().Be("abc");
    }
 
    [WinFormsFact]
    public void GridToolTip_OnHandleCreated_CallsSetupToolTip()
    {
        using Form form = new();
        foreach (Control c in _controls)
        {
            form.Controls.Add(c);
        }
 
        form.Controls.Add(_toolTip);
 
        _toolTip.IsHandleCreated.Should().BeFalse();
 
        form.Show();
 
        _toolTip.IsHandleCreated.Should().BeTrue();
    }
}