📷 A modern, cross-platform, 2D Graphics library for .NET
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 

111 lines
2.6 KiB

// Copyright (c) Six Labors.
// Licensed under the Six Labors Split License.
using SixLabors.ImageSharp.Formats.Heif.Av1;
namespace SixLabors.ImageSharp.Tests.Formats.Heif.Av1;
[Trait("Format", "Avif")]
public class Av1MathTests
{
[Theory]
[InlineData(1, 0)]
[InlineData(2, 1)]
[InlineData(3, 1)]
[InlineData(4, 2)]
[InlineData(5, 2)]
[InlineData(7, 2)]
[InlineData(8, 3)]
[InlineData(9, 3)]
public void TestMostSignificantBit(uint value, int expected)
{
int actual = Av1Math.MostSignificantBit(value);
Assert.Equal(expected, actual);
}
[Theory]
[InlineData(1, 0)]
[InlineData(2, 1)]
[InlineData(3, 1)]
[InlineData(4, 2)]
[InlineData(5, 2)]
[InlineData(7, 2)]
[InlineData(8, 3)]
[InlineData(9, 3)]
public void TestLog2(int value, int expected)
{
int actual = Av1Math.Log2(value);
Assert.Equal(expected, actual);
}
[Theory]
[InlineData(1, 0)]
[InlineData(2, 1)]
[InlineData(3, 1)]
[InlineData(4, 2)]
[InlineData(5, 2)]
[InlineData(7, 2)]
[InlineData(8, 3)]
[InlineData(9, 3)]
public void TestFloorLog2(uint value, uint expected)
{
uint actual = Av1Math.FloorLog2(value);
Assert.Equal(expected, actual);
}
[Theory]
[InlineData(1, 0)]
[InlineData(2, 1)]
[InlineData(3, 1)]
[InlineData(4, 2)]
[InlineData(5, 2)]
[InlineData(7, 2)]
[InlineData(8, 3)]
[InlineData(9, 3)]
public void TestLog2_32(uint value, uint expected)
{
uint actual = Av1Math.Log2_32(value);
Assert.Equal(expected, actual);
}
[Theory]
[InlineData(1, 0)]
[InlineData(2, 1)]
[InlineData(3, 2)]
[InlineData(4, 2)]
[InlineData(5, 3)]
[InlineData(7, 3)]
[InlineData(8, 3)]
[InlineData(9, 4)]
public void TestLog2Ceiling(uint value, uint expected)
{
uint actual = Av1Math.CeilLog2(value);
Assert.Equal(expected, actual);
}
[Theory]
[InlineData(4, 2, 1)]
[InlineData(4, 3, 0)]
[InlineData(5, 3, 0)]
[InlineData(8, 3, 1)]
[InlineData(9, 3, 1)]
[InlineData(9, 0, 1)]
[InlineData(8, 0, 0)]
public void TestGetBitSet(int value, int n, int expected)
{
int actual = Av1Math.GetBit(value, n);
Assert.Equal(expected, actual);
}
[Theory]
[InlineData(4, 2, 4)]
[InlineData(0, 2, 4)]
[InlineData(0, 3, 8)]
[InlineData(4, 3, 12)]
public void TestSetBitSet(int value, int n, int expected)
{
int actual = value;
Av1Math.SetBit(ref actual, n);
Assert.Equal(expected, actual);
}
}