diff --git a/tests/ImageSharp.Tests/Formats/Tga/TgaDecoderTests.cs b/tests/ImageSharp.Tests/Formats/Tga/TgaDecoderTests.cs index d998ac292..47983a3ad 100644 --- a/tests/ImageSharp.Tests/Formats/Tga/TgaDecoderTests.cs +++ b/tests/ImageSharp.Tests/Formats/Tga/TgaDecoderTests.cs @@ -67,6 +67,54 @@ namespace SixLabors.ImageSharp.Tests.Formats.Tga } } + [Theory] + [WithFile(GreyRle, PixelTypes.Rgba32)] + public void TgaDecoder_CanDecode_RunLenghtEncoded_MonoChrome(TestImageProvider provider) + where TPixel : struct, IPixel + { + using (Image image = provider.GetImage(new TgaDecoder())) + { + image.DebugSave(provider); + CompareWithReferenceDecoder(provider, image); + } + } + + [Theory] + [WithFile(Bit16Rle, PixelTypes.Rgba32)] + public void TgaDecoder_CanDecode_RunLenghtEncoded_16Bit(TestImageProvider provider) + where TPixel : struct, IPixel + { + using (Image image = provider.GetImage(new TgaDecoder())) + { + image.DebugSave(provider); + CompareWithReferenceDecoder(provider, image); + } + } + + [Theory] + [WithFile(Bit24Rle, PixelTypes.Rgba32)] + public void TgaDecoder_CanDecode_RunLenghtEncoded_24Bit(TestImageProvider provider) + where TPixel : struct, IPixel + { + using (Image image = provider.GetImage(new TgaDecoder())) + { + image.DebugSave(provider); + CompareWithReferenceDecoder(provider, image); + } + } + + [Theory] + [WithFile(Bit32Rle, PixelTypes.Rgba32)] + public void TgaDecoder_CanDecode_RunLenghtEncoded_32Bit(TestImageProvider provider) + where TPixel : struct, IPixel + { + using (Image image = provider.GetImage(new TgaDecoder())) + { + image.DebugSave(provider); + CompareWithReferenceDecoder(provider, image); + } + } + private void CompareWithReferenceDecoder(TestImageProvider provider, Image image) where TPixel : struct, IPixel { diff --git a/tests/ImageSharp.Tests/TestImages.cs b/tests/ImageSharp.Tests/TestImages.cs index bd1a0d391..51ca48c37 100644 --- a/tests/ImageSharp.Tests/TestImages.cs +++ b/tests/ImageSharp.Tests/TestImages.cs @@ -372,6 +372,10 @@ namespace SixLabors.ImageSharp.Tests public const string Bit24 = "Tga/bike_24bit.tga"; public const string Bit16 = "Tga/bike_16bit.tga"; public const string Grey = "Tga/bike_8bit.tga"; + public const string Bit32Rle = "Tga/bike_32bit_rle.tga"; + public const string Bit24Rle = "Tga/bike_24bit_rle.tga"; + public const string Bit16Rle = "Tga/bike_16bit_rle.tga"; + public const string GreyRle = "Tga/bike_8bit_rle.tga"; } } } diff --git a/tests/Images/Input/Tga/bike_16bit_rle.tga b/tests/Images/Input/Tga/bike_16bit_rle.tga new file mode 100644 index 000000000..686dce9a6 Binary files /dev/null and b/tests/Images/Input/Tga/bike_16bit_rle.tga differ diff --git a/tests/Images/Input/Tga/bike_24bit_rle.tga b/tests/Images/Input/Tga/bike_24bit_rle.tga new file mode 100644 index 000000000..350e75e87 Binary files /dev/null and b/tests/Images/Input/Tga/bike_24bit_rle.tga differ diff --git a/tests/Images/Input/Tga/bike_32bit_rle.tga b/tests/Images/Input/Tga/bike_32bit_rle.tga new file mode 100644 index 000000000..d199fe2ca Binary files /dev/null and b/tests/Images/Input/Tga/bike_32bit_rle.tga differ diff --git a/tests/Images/Input/Tga/bike_8bit_rle.tga b/tests/Images/Input/Tga/bike_8bit_rle.tga new file mode 100644 index 000000000..add26ab9a Binary files /dev/null and b/tests/Images/Input/Tga/bike_8bit_rle.tga differ