diff --git a/src/ImageSharp/Formats/Jpeg/Components/Decoder/JpegColorSpace.cs b/src/ImageSharp/Formats/Jpeg/Components/Decoder/JpegColorSpace.cs
index 90162aba36..7ef2809323 100644
--- a/src/ImageSharp/Formats/Jpeg/Components/Decoder/JpegColorSpace.cs
+++ b/src/ImageSharp/Formats/Jpeg/Components/Decoder/JpegColorSpace.cs
@@ -10,14 +10,29 @@ namespace SixLabors.ImageSharp.Formats.Jpeg.Components.Decoder
{
Undefined = 0,
+ ///
+ /// Color space with 1 component.
+ ///
Grayscale,
+ ///
+ /// Color space with 4 components.
+ ///
Ycck,
+ ///
+ /// Color space with 4 components.
+ ///
Cmyk,
+ ///
+ /// Color space with 3 components.
+ ///
RGB,
+ ///
+ /// Color space with 3 components.
+ ///
YCbCr
}
}
diff --git a/tests/ImageSharp.Tests/Formats/Jpg/JpegColorConverterTests.cs b/tests/ImageSharp.Tests/Formats/Jpg/JpegColorConverterTests.cs
index 75d12710d2..5c2f453076 100644
--- a/tests/ImageSharp.Tests/Formats/Jpg/JpegColorConverterTests.cs
+++ b/tests/ImageSharp.Tests/Formats/Jpg/JpegColorConverterTests.cs
@@ -40,6 +40,55 @@ namespace SixLabors.ImageSharp.Tests.Formats.Jpg
private ITestOutputHelper Output { get; }
+ [Fact]
+ public void GetConverterThrowsExceptionOnInvalidColorSpace()
+ {
+ Assert.Throws(() => JpegColorConverterBase.GetConverter(JpegColorSpace.Undefined, 8));
+ }
+
+ [Fact]
+ public void GetConverterThrowsExceptionOnInvalidPrecision()
+ {
+ // Valid precisions: 8 & 12 bit
+ Assert.Throws(() => JpegColorConverterBase.GetConverter(JpegColorSpace.YCbCr, 9));
+ }
+
+ [Theory]
+ [InlineData(JpegColorSpace.Grayscale, 8)]
+ [InlineData(JpegColorSpace.Grayscale, 12)]
+ [InlineData(JpegColorSpace.Ycck, 8)]
+ [InlineData(JpegColorSpace.Ycck, 12)]
+ [InlineData(JpegColorSpace.Cmyk, 8)]
+ [InlineData(JpegColorSpace.Cmyk, 12)]
+ [InlineData(JpegColorSpace.RGB, 8)]
+ [InlineData(JpegColorSpace.RGB, 12)]
+ [InlineData(JpegColorSpace.YCbCr, 8)]
+ [InlineData(JpegColorSpace.YCbCr, 12)]
+ internal void GetConverterReturnsValidConverter(JpegColorSpace colorSpace, int precision)
+ {
+ var converter = JpegColorConverterBase.GetConverter(colorSpace, precision);
+
+ Assert.NotNull(converter);
+ Assert.Equal(colorSpace, converter.ColorSpace);
+ Assert.Equal(precision, converter.Precision);
+ }
+
+ [Theory]
+ [InlineData(JpegColorSpace.Grayscale, 1)]
+ [InlineData(JpegColorSpace.Ycck, 4)]
+ [InlineData(JpegColorSpace.Cmyk, 4)]
+ [InlineData(JpegColorSpace.RGB, 3)]
+ [InlineData(JpegColorSpace.YCbCr, 3)]
+ internal void ConvertWithSelectedConverter(JpegColorSpace colorSpace, int componentCount)
+ {
+ ValidateConversion(
+ colorSpace,
+ componentCount,
+ 40,
+ 40,
+ 1);
+ }
+
[Theory]
[MemberData(nameof(CommonConversionData))]
public void FromYCbCrBasic(int inputBufferLength, int resultBufferLength, int seed)
@@ -96,18 +145,6 @@ namespace SixLabors.ImageSharp.Tests.Formats.Jpg
}
#endif
- [Theory]
- [MemberData(nameof(CommonConversionData))]
- public void FromYCbCr_WithDefaultConverter(int inputBufferLength, int resultBufferLength, int seed)
- {
- ValidateConversion(
- JpegColorSpace.YCbCr,
- 3,
- inputBufferLength,
- resultBufferLength,
- seed);
- }
-
[Theory]
[MemberData(nameof(CommonConversionData))]
public void FromCmykBasic(int inputBufferLength, int resultBufferLength, int seed)
@@ -164,18 +201,6 @@ namespace SixLabors.ImageSharp.Tests.Formats.Jpg
}
#endif
- [Theory]
- [MemberData(nameof(CommonConversionData))]
- public void FromCmyk_WithDefaultConverter(int inputBufferLength, int resultBufferLength, int seed)
- {
- ValidateConversion(
- JpegColorSpace.Cmyk,
- 4,
- inputBufferLength,
- resultBufferLength,
- seed);
- }
-
[Theory]
[MemberData(nameof(CommonConversionData))]
public void FromGrayscaleBasic(int inputBufferLength, int resultBufferLength, int seed)
@@ -232,18 +257,6 @@ namespace SixLabors.ImageSharp.Tests.Formats.Jpg
}
#endif
- [Theory]
- [MemberData(nameof(CommonConversionData))]
- public void FromGraysacle_WithDefaultConverter(int inputBufferLength, int resultBufferLength, int seed)
- {
- ValidateConversion(
- JpegColorSpace.Grayscale,
- 1,
- inputBufferLength,
- resultBufferLength,
- seed);
- }
-
[Theory]
[MemberData(nameof(CommonConversionData))]
public void FromRgbBasic(int inputBufferLength, int resultBufferLength, int seed)
@@ -300,18 +313,6 @@ namespace SixLabors.ImageSharp.Tests.Formats.Jpg
}
#endif
- [Theory]
- [MemberData(nameof(CommonConversionData))]
- public void FromRgb_WithDefaultConverter(int inputBufferLength, int resultBufferLength, int seed)
- {
- ValidateConversion(
- JpegColorSpace.RGB,
- 3,
- inputBufferLength,
- resultBufferLength,
- seed);
- }
-
[Theory]
[MemberData(nameof(CommonConversionData))]
public void FromYccKBasic(int inputBufferLength, int resultBufferLength, int seed)
@@ -368,18 +369,6 @@ namespace SixLabors.ImageSharp.Tests.Formats.Jpg
}
#endif
- [Theory]
- [MemberData(nameof(CommonConversionData))]
- public void FromYcck_WithDefaultConverter(int inputBufferLength, int resultBufferLength, int seed)
- {
- ValidateConversion(
- JpegColorSpace.Ycck,
- 4,
- inputBufferLength,
- resultBufferLength,
- seed);
- }
-
private static JpegColorConverterBase.ComponentValues CreateRandomValues(
int componentCount,
int inputBufferLength,