diff --git a/tests/ImageSharp.Tests/Formats/Qoi/QoiDecoderTests.cs b/tests/ImageSharp.Tests/Formats/Qoi/QoiDecoderTests.cs index 21b513e59f..387980e464 100644 --- a/tests/ImageSharp.Tests/Formats/Qoi/QoiDecoderTests.cs +++ b/tests/ImageSharp.Tests/Formats/Qoi/QoiDecoderTests.cs @@ -1,6 +1,7 @@ // Copyright (c) Six Labors. // Licensed under the Six Labors Split License. +using SixLabors.ImageSharp.Formats.Qoi; using SixLabors.ImageSharp.PixelFormats; namespace SixLabors.ImageSharp.Tests.Formats.Qoi; @@ -10,40 +11,46 @@ namespace SixLabors.ImageSharp.Tests.Formats.Qoi; public class QoiDecoderTests { [Theory] - [InlineData(TestImages.Qoi.Dice)] - [InlineData(TestImages.Qoi.EdgeCase)] - [InlineData(TestImages.Qoi.Kodim10)] - [InlineData(TestImages.Qoi.Kodim23)] - [InlineData(TestImages.Qoi.QoiLogo)] - [InlineData(TestImages.Qoi.TestCard)] - [InlineData(TestImages.Qoi.TestCardRGBA)] - [InlineData(TestImages.Qoi.Wikipedia008)] - public void Identify(string imagePath) + [InlineData(TestImages.Qoi.Dice, QoiChannels.Rgba, QoiColorSpace.SrgbWithLinearAlpha)] + [InlineData(TestImages.Qoi.EdgeCase, QoiChannels.Rgba, QoiColorSpace.SrgbWithLinearAlpha)] + [InlineData(TestImages.Qoi.Kodim10, QoiChannels.Rgb, QoiColorSpace.SrgbWithLinearAlpha)] + [InlineData(TestImages.Qoi.Kodim23, QoiChannels.Rgb, QoiColorSpace.SrgbWithLinearAlpha)] + [InlineData(TestImages.Qoi.QoiLogo, QoiChannels.Rgba, QoiColorSpace.SrgbWithLinearAlpha)] + [InlineData(TestImages.Qoi.TestCard, QoiChannels.Rgba, QoiColorSpace.SrgbWithLinearAlpha)] + [InlineData(TestImages.Qoi.TestCardRGBA, QoiChannels.Rgba, QoiColorSpace.SrgbWithLinearAlpha)] + [InlineData(TestImages.Qoi.Wikipedia008, QoiChannels.Rgb, QoiColorSpace.SrgbWithLinearAlpha)] + public void Identify(string imagePath, QoiChannels channels, QoiColorSpace colorSpace) { TestFile testFile = TestFile.Create(imagePath); using MemoryStream stream = new(testFile.Bytes, false); ImageInfo imageInfo = Image.Identify(stream); + QoiMetadata qoiMetadata = imageInfo.Metadata.GetQoiMetadata(); Assert.NotNull(imageInfo); - Assert.Equal(imageInfo.Metadata.DecodedImageFormat, ImageSharp.Formats.Qoi.QoiFormat.Instance); + Assert.Equal(imageInfo.Metadata.DecodedImageFormat, QoiFormat.Instance); + Assert.Equal(qoiMetadata.Channels, channels); + Assert.Equal(qoiMetadata.ColorSpace, colorSpace); } [Theory] - [WithFile(TestImages.Qoi.Dice, PixelTypes.Rgba32)] - [WithFile(TestImages.Qoi.EdgeCase, PixelTypes.Rgba32)] - [WithFile(TestImages.Qoi.Kodim10, PixelTypes.Rgba32)] - [WithFile(TestImages.Qoi.Kodim23, PixelTypes.Rgba32)] - [WithFile(TestImages.Qoi.QoiLogo, PixelTypes.Rgba32)] - [WithFile(TestImages.Qoi.TestCard, PixelTypes.Rgba32)] - [WithFile(TestImages.Qoi.TestCardRGBA, PixelTypes.Rgba32)] - [WithFile(TestImages.Qoi.Wikipedia008, PixelTypes.Rgba32)] - public void Decode(TestImageProvider provider) + [WithFile(TestImages.Qoi.Dice, PixelTypes.Rgba32, QoiChannels.Rgba, QoiColorSpace.SrgbWithLinearAlpha)] + [WithFile(TestImages.Qoi.EdgeCase, PixelTypes.Rgba32, QoiChannels.Rgba, QoiColorSpace.SrgbWithLinearAlpha)] + [WithFile(TestImages.Qoi.Kodim10, PixelTypes.Rgba32, QoiChannels.Rgb, QoiColorSpace.SrgbWithLinearAlpha)] + [WithFile(TestImages.Qoi.Kodim23, PixelTypes.Rgba32, QoiChannels.Rgb, QoiColorSpace.SrgbWithLinearAlpha)] + [WithFile(TestImages.Qoi.QoiLogo, PixelTypes.Rgba32, QoiChannels.Rgba, QoiColorSpace.SrgbWithLinearAlpha)] + [WithFile(TestImages.Qoi.TestCard, PixelTypes.Rgba32, QoiChannels.Rgba, QoiColorSpace.SrgbWithLinearAlpha)] + [WithFile(TestImages.Qoi.TestCardRGBA, PixelTypes.Rgba32, QoiChannels.Rgba, QoiColorSpace.SrgbWithLinearAlpha)] + [WithFile(TestImages.Qoi.Wikipedia008, PixelTypes.Rgba32, QoiChannels.Rgb, QoiColorSpace.SrgbWithLinearAlpha)] + public void Decode(TestImageProvider provider, QoiChannels channels, QoiColorSpace colorSpace) where TPixel : unmanaged, IPixel { using Image image = provider.GetImage(); + QoiMetadata qoiMetadata = image.Metadata.GetQoiMetadata(); image.DebugSave(provider); image.CompareToReferenceOutput(provider); + Assert.Equal(qoiMetadata.Channels, channels); + Assert.Equal(qoiMetadata.ColorSpace, colorSpace); } } diff --git a/tests/ImageSharp.Tests/Formats/Qoi/QoiEncoderTests.cs b/tests/ImageSharp.Tests/Formats/Qoi/QoiEncoderTests.cs index 90813da690..d57b597b06 100644 --- a/tests/ImageSharp.Tests/Formats/Qoi/QoiEncoderTests.cs +++ b/tests/ImageSharp.Tests/Formats/Qoi/QoiEncoderTests.cs @@ -13,24 +13,32 @@ namespace SixLabors.ImageSharp.Tests.Formats.Qoi; public class QoiEncoderTests { [Theory] - [WithFile(TestImages.Qoi.Dice, PixelTypes.Rgba32)] - [WithFile(TestImages.Qoi.EdgeCase, PixelTypes.Rgba32)] - [WithFile(TestImages.Qoi.Kodim10, PixelTypes.Rgba32)] - [WithFile(TestImages.Qoi.Kodim23, PixelTypes.Rgba32)] - [WithFile(TestImages.Qoi.QoiLogo, PixelTypes.Rgba32)] - [WithFile(TestImages.Qoi.TestCard, PixelTypes.Rgba32)] - [WithFile(TestImages.Qoi.TestCardRGBA, PixelTypes.Rgba32)] - [WithFile(TestImages.Qoi.Wikipedia008, PixelTypes.Rgba32)] - [System.Diagnostics.CodeAnalysis.SuppressMessage("CodeQuality", "IDE0051:Quitar miembros privados no utilizados", Justification = "Function implicitly in tests")] - private static void Encode(TestImageProvider provider) + [WithFile(TestImages.Qoi.Dice, PixelTypes.Rgba32, QoiChannels.Rgba, QoiColorSpace.SrgbWithLinearAlpha)] + [WithFile(TestImages.Qoi.EdgeCase, PixelTypes.Rgba32, QoiChannels.Rgba, QoiColorSpace.SrgbWithLinearAlpha)] + [WithFile(TestImages.Qoi.Kodim10, PixelTypes.Rgba32, QoiChannels.Rgb, QoiColorSpace.SrgbWithLinearAlpha)] + [WithFile(TestImages.Qoi.Kodim23, PixelTypes.Rgba32, QoiChannels.Rgb, QoiColorSpace.SrgbWithLinearAlpha)] + [WithFile(TestImages.Qoi.QoiLogo, PixelTypes.Rgba32, QoiChannels.Rgba, QoiColorSpace.SrgbWithLinearAlpha)] + [WithFile(TestImages.Qoi.TestCard, PixelTypes.Rgba32, QoiChannels.Rgba, QoiColorSpace.SrgbWithLinearAlpha)] + [WithFile(TestImages.Qoi.TestCardRGBA, PixelTypes.Rgba32, QoiChannels.Rgba, QoiColorSpace.SrgbWithLinearAlpha)] + [WithFile(TestImages.Qoi.Wikipedia008, PixelTypes.Rgba32, QoiChannels.Rgb, QoiColorSpace.SrgbWithLinearAlpha)] + public static void Encode(TestImageProvider provider, QoiChannels channels, QoiColorSpace colorSpace) where TPixel : unmanaged, IPixel { using Image image = provider.GetImage(new MagickReferenceDecoder()); using MemoryStream stream = new(); - QoiEncoder encoder = new(); + QoiEncoder encoder = new() + { + Channels = channels, + ColorSpace = colorSpace + }; image.Save(stream, encoder); stream.Position = 0; + using Image encodedImage = (Image)Image.Load(stream); + QoiMetadata qoiMetadata = encodedImage.Metadata.GetQoiMetadata(); + ImageComparer.Exact.CompareImages(image, encodedImage); + Assert.Equal(qoiMetadata.Channels, channels); + Assert.Equal(qoiMetadata.ColorSpace, colorSpace); } }