File: System\Windows\Forms\ToolTipBufferTests.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 System.Runtime.InteropServices;
 
namespace System.Windows.Forms.Tests;
 
public partial class ToolTipBufferTests
{
    [WinFormsFact]
    public void ToolTipBuffer_Buffer_GetEmpty_ReturnsZero()
    {
        ToolTipBuffer buffer = new();
        Assert.Equal(IntPtr.Zero, buffer.Buffer);
    }
 
    [WinFormsFact]
    public void ToolTipBuffer_SetText_NoBuffer_Success()
    {
        ToolTipBuffer buffer = new();
        IntPtr memory1 = buffer.Buffer;
        Assert.Null(Marshal.PtrToStringUni(memory1));
 
        buffer.SetText("text");
        IntPtr memory2 = buffer.Buffer;
        Assert.NotEqual(memory1, memory2);
        Assert.Equal("text", Marshal.PtrToStringUni(memory2));
    }
 
    [WinFormsTheory]
    [InlineData(null)]
    [InlineData("")]
    public void ToolTipBuffer_SetText_EmptyNoBuffer_Success(string empty)
    {
        ToolTipBuffer buffer = new();
        IntPtr memory1 = buffer.Buffer;
        Assert.Null(Marshal.PtrToStringUni(memory1));
 
        buffer.SetText(empty);
        IntPtr memory2 = buffer.Buffer;
        Assert.NotEqual(memory1, memory2);
        Assert.Empty(Marshal.PtrToStringUni(memory2));
    }
 
    [WinFormsTheory]
    [InlineData("abcde")]
    [InlineData("abcdef")]
    public void ToolTipBuffer_SetTextLonger_Success(string longer)
    {
        ToolTipBuffer buffer = new();
        buffer.SetText("text");
        IntPtr memory1 = buffer.Buffer;
        Assert.Equal("text", Marshal.PtrToStringUni(buffer.Buffer));
 
        // Set longer.
        buffer.SetText(longer);
        IntPtr memory2 = buffer.Buffer;
        Assert.NotEqual(IntPtr.Zero, memory2);
        Assert.Equal(longer, Marshal.PtrToStringUni(memory2));
    }
 
    [WinFormsTheory]
    [InlineData(null, "")]
    [InlineData("", "")]
    [InlineData("a", "a")]
    [InlineData("ab", "ab")]
    [InlineData("abc", "abc")]
    public void ToolTipBuffer_SetTextShorter_Success(string shorter, string expected)
    {
        ToolTipBuffer buffer = new();
        buffer.SetText("text");
        IntPtr memory1 = buffer.Buffer;
        Assert.Equal("text", Marshal.PtrToStringUni(buffer.Buffer));
 
        // Set longer.
        buffer.SetText(shorter);
        IntPtr memory2 = buffer.Buffer;
        Assert.Equal(memory1, memory2);
        Assert.Equal(expected, Marshal.PtrToStringUni(memory2));
    }
 
    [WinFormsTheory]
    [InlineData("text")]
    [InlineData("abcd")]
    public void ToolTipBuffer_SetTextSameLength_Success(string sameLength)
    {
        ToolTipBuffer buffer = new();
        buffer.SetText("text");
        IntPtr memory1 = buffer.Buffer;
        Assert.Equal("text", Marshal.PtrToStringUni(buffer.Buffer));
 
        // Set longer.
        buffer.SetText(sameLength);
        IntPtr memory2 = buffer.Buffer;
        Assert.Equal(memory1, memory2);
        Assert.Equal(sameLength, Marshal.PtrToStringUni(memory2));
    }
}