LibHac/tests/LibHac.Tests/Util/AlignmentTests.cs
2022-12-13 19:10:10 -07:00

102 lines
3.4 KiB
C#

using LibHac.Util;
using Xunit;
namespace LibHac.Tests.Util
{
public class AlignmentTests
{
[Theory]
[InlineData(0, 0x40, 0)]
[InlineData(0x3F, 0x40, 0x40)]
[InlineData(0x40, 0x40, 0x40)]
[InlineData(0x41, 0x40, 0x80)]
public void AlignUp_Byte(byte value, uint alignment, byte expectedValue)
{
var actualValue = Alignment.AlignUp(value, alignment);
Assert.Equal(expectedValue, actualValue);
}
[Theory]
[InlineData(0, 0x40, 0)]
[InlineData(-0x3F, 0x40, 0)]
[InlineData(-0x40, 0x40, -0x40)]
[InlineData(-0x41, 0x40, -0x40)]
[InlineData(-0x41, 0, 0)]
[InlineData(int.MaxValue, 0x40, int.MinValue)]
public void AlignUp_Int(int value, uint alignment, int expectedValue)
{
var actualValue = Alignment.AlignUp(value, alignment);
Assert.Equal(expectedValue, actualValue);
}
[Theory]
[InlineData(0, 0x40, 0)]
[InlineData(0x3F, 0x40, 0x40)]
[InlineData(0x40, 0x40, 0x40)]
[InlineData(0x41, 0x40, 0x80)]
[InlineData(0xFFF_FFFF_8000, 0x10000, 0x1000_0000_0000)]
public void AlignUp_Ulong(ulong value, uint alignment, ulong expectedValue)
{
var actualValue = Alignment.AlignUp(value, alignment);
Assert.Equal(expectedValue, actualValue);
}
[Theory]
[InlineData(0, 0x40, 0)]
[InlineData(0x3F, 0x40, 0)]
[InlineData(0x40, 0x40, 0x40)]
[InlineData(0x41, 0x40, 0x40)]
public void AlignDown_Byte(byte value, uint alignment, byte expectedValue)
{
var actualValue = Alignment.AlignDown(value, alignment);
Assert.Equal(expectedValue, actualValue);
}
[Theory]
[InlineData(0, 0x40, 0)]
[InlineData(0x3F, 0x40, 0)]
[InlineData(0x40, 0x40, 0x40)]
[InlineData(0x41, 0x40, 0x40)]
public void AlignDown_Long(long value, uint alignment, long expectedValue)
{
var actualValue = Alignment.AlignDown(value, alignment);
Assert.Equal(expectedValue, actualValue);
}
[Theory]
[InlineData(0, 0x40, true)]
[InlineData(0x3F, 0x40, false)]
[InlineData(0x40, 0x40, true)]
[InlineData(0x41, 0x40, false)]
public void IsAligned_Byte(byte value, uint alignment, bool expectedValue)
{
var actualValue = Alignment.IsAligned(value, alignment);
Assert.Equal(expectedValue, actualValue);
}
[Theory]
[InlineData(0, 0x40, true)]
[InlineData(0x3F, 0x40, false)]
[InlineData(0x40, 0x40, true)]
[InlineData(0x41, 0x40, false)]
[InlineData(0xFFF_FFFF_8000, 0x400, true)]
public void IsAligned_Long(long value, uint alignment, bool expectedValue)
{
var actualValue = Alignment.IsAligned(value, alignment);
Assert.Equal(expectedValue, actualValue);
}
[Theory]
[InlineData(0, 0)]
[InlineData(0x3F, 1)]
[InlineData(0x40, 0x40)]
[InlineData(0x41, 1)]
[InlineData(0x42, 2)]
[InlineData(0xFF900000, 0x100000)]
public void GetAlignment_Uint(uint value, long expectedValue)
{
var actualValue = Alignment.GetAlignment(value);
Assert.Equal(expectedValue, actualValue);
}
}
}