File: Interop\User32\LOGFONTWTests.cs
Web Access
Project: src\src\System.Windows.Forms.Primitives\tests\UnitTests\System.Windows.Forms.Primitives.Tests.csproj (System.Windows.Forms.Primitives.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.Primitives.Tests.Interop.User32;
 
public class LOGFONTWTests
{
    [Fact]
    public unsafe void LogFont_Size()
    {
        Assert.Equal(92, sizeof(LOGFONTW));
    }
 
    [Fact]
    public unsafe void LogFont_FaceName()
    {
        LOGFONTW logFont = default;
        logFont.FaceName = "TwoFace";
        Assert.Equal("TwoFace", logFont.FaceName.ToString());
 
        // Set a smaller name to make sure it gets terminated properly.
        logFont.FaceName = "Face";
        Assert.Equal("Face", logFont.FaceName.ToString());
 
        // LOGFONT has space for 32 characters, we want to see it gets
        // cut to 31 to make room for the null.
        string bigString = new('*', 32);
 
        logFont.FaceName = bigString;
        Assert.True(logFont.FaceName.SequenceEqual(bigString.AsSpan()[1..]));
    }
 
    [Fact]
    public unsafe void CreateFontIndirect()
    {
        LOGFONTW logFont = default;
        HFONT handle = PInvokeCore.CreateFontIndirect(&logFont);
        Assert.False(handle.IsNull);
        Assert.True(PInvokeCore.DeleteObject(handle));
    }
}