|
// Licensed to the .NET Foundation under one or more agreements.
// The .NET Foundation licenses this file to you under the MIT license.
#nullable enable
using System.Drawing;
using System.Runtime.InteropServices;
using Windows.Win32.System.Ole;
namespace System.Windows.Forms.Tests;
public unsafe class Control_ActiveXFontMarshalerTests
{
private static readonly ICustomMarshaler s_marshaler =
(ICustomMarshaler)Activator.CreateInstance(
typeof(Control).Assembly.GetType("System.Windows.Forms.Control+ActiveXFontMarshaler")!,
nonPublic: true)!;
[StaFact(Skip = "Flaky test being investigated. see: https://github.com/dotnet/winforms/issues/8608")]
public void ActiveXFontMarshaler_RoundTripManagedFont()
{
using Font font = new("Arial", 11.0f, GraphicsUnit.Point);
nint native = s_marshaler.MarshalManagedToNative(font);
Assert.NotEqual(0, native);
using ComScope<IFont> iFont = new((IFont*)native);
using BSTR name = iFont.Value->Name;
Assert.Equal(font.Name, name.ToString());
Assert.Equal(11.25f, (float)iFont.Value->Size);
using Font outFont = (Font)s_marshaler.MarshalNativeToManaged(native);
Assert.Equal(font.Name, outFont.Name);
Assert.Equal(11.25f, outFont.SizeInPoints);
}
}
|