using AssetRipper.TextureDecoder.Rgb; using AssetRipper.TextureDecoder.Rgb.Formats; namespace AssetRipper.TextureDecoder.Tests { public sealed class RgbTests { [Test] public void ConvertA8Test() { ReadOnlySpan data = File.ReadAllBytes(TestFileFolders.RgbTestFiles + "test.alpha8"); int totalBytesRead = 0; foreach (int size in new int[] { 256, 128, 64, 32, 16, 8, 4, 2, 1 }) //mip maps { int bytesRead = ConvertSquare, byte>(data.Slice(totalBytesRead), size); totalBytesRead += bytesRead; } Assert.That(totalBytesRead, Is.EqualTo(data.Length)); } [Test] public void ConvertRGB24Test() { ReadOnlySpan data = File.ReadAllBytes(TestFileFolders.RgbTestFiles + "test.rgb24"); int totalBytesRead = 0; foreach (int size in new int[] { 256, 128, 64, 32, 16, 8, 4, 2, 1 }) //mip maps { int bytesRead = ConvertSquare, byte>(data.Slice(totalBytesRead), size); totalBytesRead += bytesRead; } Assert.That(totalBytesRead, Is.EqualTo(data.Length)); } [Test] public void ConvertRGBA32Test() { ReadOnlySpan data = File.ReadAllBytes(TestFileFolders.RgbTestFiles + "test.rgba32"); int totalBytesRead = 0; foreach (int size in new int[] { 256, 128, 64, 32, 16, 8, 4, 2, 1 }) //mip maps { int bytesRead = ConvertSquare, byte>(data.Slice(totalBytesRead), size); totalBytesRead += bytesRead; } Assert.That(totalBytesRead, Is.EqualTo(data.Length)); } [Test] public void ConvertARGB32Test() { ReadOnlySpan data = File.ReadAllBytes(TestFileFolders.RgbTestFiles + "test.argb32"); int totalBytesRead = 0; foreach (int size in new int[] { 256, 128, 64, 32, 16, 8, 4, 2, 1 }) //mip maps { int bytesRead = ConvertSquare, byte>(data.Slice(totalBytesRead), size); totalBytesRead += bytesRead; } Assert.That(totalBytesRead, Is.EqualTo(data.Length)); } [Test] public void ConvertRGB16Test() { ReadOnlySpan data = File.ReadAllBytes(TestFileFolders.RgbTestFiles + "test.rgb565"); int totalBytesRead = 0; foreach (int size in new int[] { 256, 128, 64, 32, 16, 8, 4, 2, 1 }) //mip maps { int bytesRead = ConvertSquare(data.Slice(totalBytesRead), size); totalBytesRead += bytesRead; } Assert.That(totalBytesRead, Is.EqualTo(data.Length)); } [Test] public void ConvertRG16Test() { ReadOnlySpan data = File.ReadAllBytes(TestFileFolders.RgbTestFiles + "test.rg16"); int totalBytesRead = 0; foreach (int size in new int[] { 256, 128, 64, 32, 16, 8, 4, 2, 1 }) //mip maps { int bytesRead = ConvertSquare, byte>(data.Slice(totalBytesRead), size); totalBytesRead += bytesRead; } Assert.That(totalBytesRead, Is.EqualTo(data.Length)); } [Test] public void ConvertR8Test() { ReadOnlySpan data = File.ReadAllBytes(TestFileFolders.RgbTestFiles + "test.r8"); int totalBytesRead = 0; foreach (int size in new int[] { 256, 128, 64, 32, 16, 8, 4, 2, 1 }) //mip maps { int bytesRead = ConvertSquare, byte>(data.Slice(totalBytesRead), size); totalBytesRead += bytesRead; } Assert.That(totalBytesRead, Is.EqualTo(data.Length)); } [Test] public void ConvertRHalfTest() { ReadOnlySpan data = File.ReadAllBytes(TestFileFolders.RgbTestFiles + "test.rhalf"); int bytesRead = ConvertSquare, Half>(data, 256); Assert.That(bytesRead, Is.EqualTo(data.Length)); } [Test] public void ConvertRGHalfTest() { ReadOnlySpan data = File.ReadAllBytes(TestFileFolders.RgbTestFiles + "test.rghalf"); int bytesRead = ConvertSquare, Half>(data, 256); Assert.That(bytesRead, Is.EqualTo(data.Length)); } [Test] public void ConvertRGBAHalfTest() { ReadOnlySpan data = File.ReadAllBytes(TestFileFolders.RgbTestFiles + "test.rgbahalf"); int bytesRead = ConvertSquare, Half>(data, 256); Assert.That(bytesRead, Is.EqualTo(data.Length)); } [Test] public void ConvertRFloatTest() { ReadOnlySpan data = File.ReadAllBytes(TestFileFolders.RgbTestFiles + "test.rfloat"); int bytesRead = ConvertSquare, float>(data, 256); Assert.That(bytesRead, Is.EqualTo(data.Length)); } [Test] public void ConvertRGFloatTest() { ReadOnlySpan data = File.ReadAllBytes(TestFileFolders.RgbTestFiles + "test.rgfloat"); int bytesRead = ConvertSquare, float>(data, 256); Assert.That(bytesRead, Is.EqualTo(data.Length)); } [Test] public void ConvertRGBAFloatTest() { ReadOnlySpan data = File.ReadAllBytes(TestFileFolders.RgbTestFiles + "test.rgbafloat"); int bytesRead = ConvertSquare, float>(data, 256); Assert.That(bytesRead, Is.EqualTo(data.Length)); } [Test] public void ConvertRGB9e5FloatTest() { ReadOnlySpan data = File.ReadAllBytes(TestFileFolders.RgbTestFiles + "test.rgb9e5float"); int bytesRead = ConvertSquare(data, 256); Assert.That(bytesRead, Is.EqualTo(data.Length)); } [Test] public void ConvertRG32Test() { ReadOnlySpan data = File.ReadAllBytes(TestFileFolders.RgbTestFiles + "test.rg32"); int bytesRead = ConvertSquare, ushort>(data, 512); Assert.That(bytesRead, Is.EqualTo(data.Length)); } [Test] public void ConvertRGB48Test() { ReadOnlySpan data = File.ReadAllBytes(TestFileFolders.RgbTestFiles + "test.rgb48"); int bytesRead = ConvertSquare, ushort>(data, 512); Assert.That(bytesRead, Is.EqualTo(data.Length)); } [Test] public void ConvertRGBA64Test() { ReadOnlySpan data = File.ReadAllBytes(TestFileFolders.RgbTestFiles + "test.rgba64"); int bytesRead = ConvertSquare, ushort>(data, 512); Assert.That(bytesRead, Is.EqualTo(data.Length)); } private static int ConvertSquare(ReadOnlySpan data, int size) where TColor : unmanaged, IColor where TChannel : unmanaged { return RgbConverter.Convert, byte>(data, size, size, out _); } } }