@ -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 < TPixel > ( TestImageProvider < TPixel > 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 < TPixel > ( TestImageProvider < TPixel > provider , QoiChannels channels , QoiColorSpace colorSpace )
where TPixel : unmanaged , IPixel < TPixel >
{
using Image < TPixel > image = provider . GetImage ( ) ;
QoiMetadata qoiMetadata = image . Metadata . GetQoiMetadata ( ) ;
image . DebugSave ( provider ) ;
image . CompareToReferenceOutput ( provider ) ;
Assert . Equal ( qoiMetadata . Channels , channels ) ;
Assert . Equal ( qoiMetadata . ColorSpace , colorSpace ) ;
}
}