|
// 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.Interop.Oleaut32;
// NB: doesn't require thread affinity
public class DECIMALTests
{
[Fact]
public unsafe void DECIMAL_Sizeof_Invoke_ReturnsExpected()
{
Assert.Equal(16, Marshal.SizeOf<DECIMAL>());
Assert.Equal(16, sizeof(DECIMAL));
}
[Fact]
public void DECIMAL_ToDecimal_InvokeEmpty_ReturnsExpected()
{
DECIMAL dec = default;
Assert.Equal(0m, dec.ToDecimal());
}
[Theory]
[InlineData((double)int.MinValue)]
[InlineData(-1.2)]
[InlineData(0)]
[InlineData(1.2)]
[InlineData((double)int.MaxValue)]
public void DECIMAL_ToDecimal_InvokeCustom_ReturnsExpected(double value)
{
HRESULT hr = VarDecFromR8(value, out DECIMAL dec);
Assert.Equal(HRESULT.S_OK, hr);
Assert.Equal((decimal)value, dec.ToDecimal());
}
[DllImport(Libraries.Oleaut32, ExactSpelling = true)]
private static extern HRESULT VarDecFromR8(double dblIn, out DECIMAL pdecOut);
}
|