|
|
|
@ -10,58 +10,72 @@ namespace SixLabors.ImageSharp.Tests.Formats.Jpg |
|
|
|
public partial class JpegDecoderTests |
|
|
|
{ |
|
|
|
public static string[] BaselineTestJpegs = |
|
|
|
{ |
|
|
|
TestImages.Jpeg.Baseline.Calliphora, |
|
|
|
TestImages.Jpeg.Baseline.Cmyk, |
|
|
|
TestImages.Jpeg.Baseline.Ycck, |
|
|
|
TestImages.Jpeg.Baseline.Jpeg400, |
|
|
|
TestImages.Jpeg.Baseline.Turtle420, |
|
|
|
TestImages.Jpeg.Baseline.Testorig420, |
|
|
|
TestImages.Jpeg.Baseline.Jpeg420Small, |
|
|
|
TestImages.Jpeg.Issues.Fuzz.AccessViolationException922, |
|
|
|
TestImages.Jpeg.Baseline.Jpeg444, |
|
|
|
TestImages.Jpeg.Baseline.Jpeg422, |
|
|
|
TestImages.Jpeg.Baseline.Bad.BadEOF, |
|
|
|
TestImages.Jpeg.Baseline.MultiScanBaselineCMYK, |
|
|
|
TestImages.Jpeg.Baseline.YcckSubsample1222, |
|
|
|
TestImages.Jpeg.Baseline.Bad.BadRST, |
|
|
|
TestImages.Jpeg.Issues.MultiHuffmanBaseline394, |
|
|
|
TestImages.Jpeg.Issues.ExifDecodeOutOfRange694, |
|
|
|
TestImages.Jpeg.Issues.InvalidEOI695, |
|
|
|
TestImages.Jpeg.Issues.ExifResizeOutOfRange696, |
|
|
|
TestImages.Jpeg.Issues.InvalidAPP0721, |
|
|
|
TestImages.Jpeg.Issues.ExifGetString750Load, |
|
|
|
TestImages.Jpeg.Issues.ExifGetString750Transform, |
|
|
|
TestImages.Jpeg.Issues.BadSubSampling1076, |
|
|
|
{ |
|
|
|
TestImages.Jpeg.Baseline.Calliphora, |
|
|
|
TestImages.Jpeg.Baseline.Cmyk, |
|
|
|
TestImages.Jpeg.Baseline.Ycck, |
|
|
|
TestImages.Jpeg.Baseline.Jpeg400, |
|
|
|
TestImages.Jpeg.Baseline.Turtle420, |
|
|
|
TestImages.Jpeg.Baseline.Testorig420, |
|
|
|
TestImages.Jpeg.Baseline.Jpeg420Small, |
|
|
|
TestImages.Jpeg.Issues.Fuzz.AccessViolationException922, |
|
|
|
TestImages.Jpeg.Baseline.Jpeg444, |
|
|
|
TestImages.Jpeg.Baseline.Jpeg422, |
|
|
|
TestImages.Jpeg.Baseline.Bad.BadEOF, |
|
|
|
TestImages.Jpeg.Baseline.MultiScanBaselineCMYK, |
|
|
|
TestImages.Jpeg.Baseline.YcckSubsample1222, |
|
|
|
TestImages.Jpeg.Baseline.Bad.BadRST, |
|
|
|
TestImages.Jpeg.Issues.MultiHuffmanBaseline394, |
|
|
|
TestImages.Jpeg.Issues.ExifDecodeOutOfRange694, |
|
|
|
TestImages.Jpeg.Issues.InvalidEOI695, |
|
|
|
TestImages.Jpeg.Issues.ExifResizeOutOfRange696, |
|
|
|
TestImages.Jpeg.Issues.InvalidAPP0721, |
|
|
|
TestImages.Jpeg.Issues.ExifGetString750Load, |
|
|
|
TestImages.Jpeg.Issues.ExifGetString750Transform, |
|
|
|
TestImages.Jpeg.Issues.BadSubSampling1076, |
|
|
|
|
|
|
|
// LibJpeg can open this despite the invalid density units.
|
|
|
|
TestImages.Jpeg.Issues.Fuzz.ArgumentOutOfRangeException825B, |
|
|
|
// LibJpeg can open this despite the invalid density units.
|
|
|
|
TestImages.Jpeg.Issues.Fuzz.ArgumentOutOfRangeException825B, |
|
|
|
|
|
|
|
// LibJpeg can open this despite incorrect colorspace metadata.
|
|
|
|
TestImages.Jpeg.Issues.IncorrectColorspace855, |
|
|
|
// LibJpeg can open this despite incorrect colorspace metadata.
|
|
|
|
TestImages.Jpeg.Issues.IncorrectColorspace855, |
|
|
|
|
|
|
|
// High depth images
|
|
|
|
TestImages.Jpeg.Baseline.Testorig12bit, |
|
|
|
}; |
|
|
|
// High depth images
|
|
|
|
TestImages.Jpeg.Baseline.Testorig12bit, |
|
|
|
}; |
|
|
|
|
|
|
|
public static string[] ProgressiveTestJpegs = |
|
|
|
{ |
|
|
|
TestImages.Jpeg.Progressive.Fb, |
|
|
|
TestImages.Jpeg.Progressive.Progress, |
|
|
|
TestImages.Jpeg.Progressive.Festzug, |
|
|
|
TestImages.Jpeg.Progressive.Bad.BadEOF, |
|
|
|
TestImages.Jpeg.Issues.BadCoeffsProgressive178, |
|
|
|
TestImages.Jpeg.Issues.MissingFF00ProgressiveGirl159, |
|
|
|
TestImages.Jpeg.Issues.MissingFF00ProgressiveBedroom159, |
|
|
|
TestImages.Jpeg.Issues.BadZigZagProgressive385, |
|
|
|
TestImages.Jpeg.Progressive.Bad.ExifUndefType, |
|
|
|
TestImages.Jpeg.Issues.NoEoiProgressive517, |
|
|
|
TestImages.Jpeg.Issues.BadRstProgressive518, |
|
|
|
TestImages.Jpeg.Issues.DhtHasWrongLength624, |
|
|
|
TestImages.Jpeg.Issues.OrderedInterleavedProgressive723A, |
|
|
|
TestImages.Jpeg.Issues.OrderedInterleavedProgressive723B, |
|
|
|
TestImages.Jpeg.Issues.OrderedInterleavedProgressive723C |
|
|
|
}; |
|
|
|
{ |
|
|
|
TestImages.Jpeg.Progressive.Fb, |
|
|
|
TestImages.Jpeg.Progressive.Progress, |
|
|
|
TestImages.Jpeg.Progressive.Festzug, |
|
|
|
TestImages.Jpeg.Progressive.Bad.BadEOF, |
|
|
|
TestImages.Jpeg.Issues.BadCoeffsProgressive178, |
|
|
|
TestImages.Jpeg.Issues.MissingFF00ProgressiveGirl159, |
|
|
|
TestImages.Jpeg.Issues.MissingFF00ProgressiveBedroom159, |
|
|
|
TestImages.Jpeg.Issues.BadZigZagProgressive385, |
|
|
|
TestImages.Jpeg.Progressive.Bad.ExifUndefType, |
|
|
|
TestImages.Jpeg.Issues.NoEoiProgressive517, |
|
|
|
TestImages.Jpeg.Issues.BadRstProgressive518, |
|
|
|
TestImages.Jpeg.Issues.DhtHasWrongLength624, |
|
|
|
TestImages.Jpeg.Issues.OrderedInterleavedProgressive723A, |
|
|
|
TestImages.Jpeg.Issues.OrderedInterleavedProgressive723B, |
|
|
|
TestImages.Jpeg.Issues.OrderedInterleavedProgressive723C |
|
|
|
}; |
|
|
|
|
|
|
|
public static string[] UnsupportedTestJpegs = |
|
|
|
{ |
|
|
|
// Invalid componentCount value (2 or > 4)
|
|
|
|
TestImages.Jpeg.Issues.Fuzz.NullReferenceException823, |
|
|
|
TestImages.Jpeg.Issues.MalformedUnsupportedComponentCount, |
|
|
|
|
|
|
|
// Arithmetic coding
|
|
|
|
TestImages.Jpeg.Baseline.ArithmeticCoding, |
|
|
|
TestImages.Jpeg.Baseline.ArithmeticCodingProgressive, |
|
|
|
|
|
|
|
// Lossless jpeg
|
|
|
|
TestImages.Jpeg.Baseline.Lossless |
|
|
|
}; |
|
|
|
|
|
|
|
public static string[] UnrecoverableTestJpegs = |
|
|
|
{ |
|
|
|
@ -70,7 +84,6 @@ namespace SixLabors.ImageSharp.Tests.Formats.Jpg |
|
|
|
TestImages.Jpeg.Issues.Fuzz.AccessViolationException798, |
|
|
|
TestImages.Jpeg.Issues.Fuzz.DivideByZeroException821, |
|
|
|
TestImages.Jpeg.Issues.Fuzz.DivideByZeroException822, |
|
|
|
TestImages.Jpeg.Issues.Fuzz.NullReferenceException823, |
|
|
|
TestImages.Jpeg.Issues.Fuzz.IndexOutOfRangeException824A, |
|
|
|
TestImages.Jpeg.Issues.Fuzz.IndexOutOfRangeException824B, |
|
|
|
TestImages.Jpeg.Issues.Fuzz.IndexOutOfRangeException824D, |
|
|
|
@ -91,28 +104,27 @@ namespace SixLabors.ImageSharp.Tests.Formats.Jpg |
|
|
|
TestImages.Jpeg.Issues.Fuzz.IndexOutOfRangeException824C, |
|
|
|
}; |
|
|
|
|
|
|
|
private static readonly Dictionary<string, float> CustomToleranceValues = |
|
|
|
new Dictionary<string, float> |
|
|
|
{ |
|
|
|
// Baseline:
|
|
|
|
[TestImages.Jpeg.Baseline.Calliphora] = 0.00002f / 100, |
|
|
|
[TestImages.Jpeg.Baseline.Bad.BadEOF] = 0.38f / 100, |
|
|
|
[TestImages.Jpeg.Baseline.Bad.BadRST] = 0.0589f / 100, |
|
|
|
private static readonly Dictionary<string, float> CustomToleranceValues = new() |
|
|
|
{ |
|
|
|
// Baseline:
|
|
|
|
[TestImages.Jpeg.Baseline.Calliphora] = 0.00002f / 100, |
|
|
|
[TestImages.Jpeg.Baseline.Bad.BadEOF] = 0.38f / 100, |
|
|
|
[TestImages.Jpeg.Baseline.Bad.BadRST] = 0.0589f / 100, |
|
|
|
|
|
|
|
[TestImages.Jpeg.Baseline.Jpeg422] = 0.0013f / 100, |
|
|
|
[TestImages.Jpeg.Baseline.Testorig420] = 0.38f / 100, |
|
|
|
[TestImages.Jpeg.Baseline.Jpeg420Small] = 0.287f / 100, |
|
|
|
[TestImages.Jpeg.Baseline.Turtle420] = 1.0f / 100, |
|
|
|
[TestImages.Jpeg.Baseline.Jpeg422] = 0.0013f / 100, |
|
|
|
[TestImages.Jpeg.Baseline.Testorig420] = 0.38f / 100, |
|
|
|
[TestImages.Jpeg.Baseline.Jpeg420Small] = 0.287f / 100, |
|
|
|
[TestImages.Jpeg.Baseline.Turtle420] = 1.0f / 100, |
|
|
|
|
|
|
|
// Progressive:
|
|
|
|
[TestImages.Jpeg.Issues.MissingFF00ProgressiveGirl159] = 0.34f / 100, |
|
|
|
[TestImages.Jpeg.Issues.BadCoeffsProgressive178] = 0.38f / 100, |
|
|
|
[TestImages.Jpeg.Progressive.Bad.BadEOF] = 0.3f / 100, |
|
|
|
[TestImages.Jpeg.Progressive.Festzug] = 0.02f / 100, |
|
|
|
[TestImages.Jpeg.Progressive.Fb] = 0.16f / 100, |
|
|
|
[TestImages.Jpeg.Progressive.Progress] = 0.31f / 100, |
|
|
|
[TestImages.Jpeg.Issues.BadZigZagProgressive385] = 0.23f / 100, |
|
|
|
[TestImages.Jpeg.Progressive.Bad.ExifUndefType] = 0.011f / 100, |
|
|
|
}; |
|
|
|
// Progressive:
|
|
|
|
[TestImages.Jpeg.Issues.MissingFF00ProgressiveGirl159] = 0.34f / 100, |
|
|
|
[TestImages.Jpeg.Issues.BadCoeffsProgressive178] = 0.38f / 100, |
|
|
|
[TestImages.Jpeg.Progressive.Bad.BadEOF] = 0.3f / 100, |
|
|
|
[TestImages.Jpeg.Progressive.Festzug] = 0.02f / 100, |
|
|
|
[TestImages.Jpeg.Progressive.Fb] = 0.16f / 100, |
|
|
|
[TestImages.Jpeg.Progressive.Progress] = 0.31f / 100, |
|
|
|
[TestImages.Jpeg.Issues.BadZigZagProgressive385] = 0.23f / 100, |
|
|
|
[TestImages.Jpeg.Progressive.Bad.ExifUndefType] = 0.011f / 100, |
|
|
|
}; |
|
|
|
} |
|
|
|
} |
|
|
|
|