Browse Source

Add some unit tests for Av1Math

pull/2633/head
Ynse Hoornenborg 1 year ago
parent
commit
052d0ae439
  1. 11
      src/ImageSharp/Formats/Heif/Av1/Av1Math.cs
  2. 2
      src/ImageSharp/Formats/Heif/Av1/Transform/Inverse/Av1Adst32Inverse1dTransformer.cs
  3. 75
      tests/ImageSharp.Tests/Formats/Heif/Av1/Av1MathTests.cs

11
src/ImageSharp/Formats/Heif/Av1/Av1Math.cs

@ -26,17 +26,6 @@ internal static class Av1Math
return log;
}
public static uint Log2(uint n)
{
uint result = 0U;
while ((n >>= 1) > 0)
{
result++;
}
return result;
}
public static int Log2(int n)
{
int result = 0;

2
src/ImageSharp/Formats/Heif/Av1/Transform/Inverse/Av1Adst32Inverse1dTransformer.cs

@ -1,8 +1,6 @@
// Copyright (c) Six Labors.
// Licensed under the Six Labors Split License.
using System.Drawing;
using System;
using System.Runtime.CompilerServices;
namespace SixLabors.ImageSharp.Formats.Heif.Av1.Transform.Inverse;

75
tests/ImageSharp.Tests/Formats/Heif/Av1/Av1MathTests.cs

@ -8,6 +8,81 @@ 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)]

Loading…
Cancel
Save