mirror of
https://github.com/Thealexbarney/LibHac.git
synced 2024-11-14 10:49:41 +01:00
102 lines
3.4 KiB
C#
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);
|
|
}
|
|
}
|
|
}
|