📷 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.
 
 

44 lines
1.2 KiB

// Copyright (c) Six Labors.
// Licensed under the Six Labors Split License.
using SixLabors.ImageSharp.Formats.Heif.Av1.Transform;
namespace SixLabors.ImageSharp.Tests.Formats.Heif.Av1;
[Trait("Format", "Avif")]
public class Av1ScanOrderTests
{
[Theory]
[MemberData(nameof(GetCombinations))]
internal void AllIndicesScannedExactlyOnce(int s, int t)
{
// Assign
HashSet<short> visitedScans = [];
Av1TransformSize transformSize = (Av1TransformSize)s;
Av1TransformType transformType = (Av1TransformType)t;
// Act
Av1ScanOrder scanOrder = Av1ScanOrderConstants.GetScanOrder(transformSize, transformType);
// Assert
foreach (short scan in scanOrder.Scan)
{
Assert.False(visitedScans.Contains(scan), $"Scan {scan} already visited before.");
visitedScans.Add(scan);
}
}
public static TheoryData<int, int> GetCombinations()
{
TheoryData<int, int> combinations = [];
for (int s = 0; s < (int)Av1TransformSize.AllSizes; s++)
{
for (int t = 0; t < (int)Av1TransformType.AllTransformTypes; t++)
{
combinations.Add(s, t);
}
}
return combinations;
}
}