Browse Source

Fixed test bug introduced in one of previous commits, code cleanup

pull/1864/head
Dmitry Pentin 4 years ago
parent
commit
09d056e42b
  1. 42
      tests/ImageSharp.Tests/Formats/Jpg/JpegColorConverterTests.cs

42
tests/ImageSharp.Tests/Formats/Jpg/JpegColorConverterTests.cs

@ -18,11 +18,13 @@ namespace SixLabors.ImageSharp.Tests.Formats.Jpg
[Trait("Format", "Jpg")]
public class JpegColorConverterTests
{
private static readonly float MaxColorChannelValue = 255f;
private const float Precision = 0.1F / 255;
private const int TestBufferLength = 40;
private static readonly ApproximateColorSpaceComparer ColorSpaceComparer = new(Precision);
private static readonly ApproximateColorSpaceComparer ColorSpaceComparer = new(epsilon: Precision);
public static readonly TheoryData<int> Seeds = new() { 1, 2, 3 };
@ -369,9 +371,6 @@ namespace SixLabors.ImageSharp.Tests.Formats.Jpg
int componentCount,
int seed)
{
const float minVal = 0f;
const float maxVal = Precision;
var rnd = new Random(seed);
var buffers = new Buffer2D<float>[componentCount];
@ -381,7 +380,7 @@ namespace SixLabors.ImageSharp.Tests.Formats.Jpg
for (int j = 0; j < values.Length; j++)
{
values[j] = ((float)rnd.NextDouble() * (maxVal - minVal)) + minVal;
values[j] = (float)rnd.NextDouble() * MaxColorChannelValue;
}
// no need to dispose when buffer is not array owner
@ -401,10 +400,10 @@ namespace SixLabors.ImageSharp.Tests.Formats.Jpg
JpegColorConverterBase.ComponentValues original = CreateRandomValues(TestBufferLength, componentCount, seed);
JpegColorConverterBase.ComponentValues values = new(
original.ComponentCount,
original.Component0,
original.Component1,
original.Component2,
original.Component3);
original.Component0.ToArray(),
original.Component1.ToArray(),
original.Component2.ToArray(),
original.Component3.ToArray());
converter.ConvertToRgbInplace(values);
@ -449,10 +448,8 @@ namespace SixLabors.ImageSharp.Tests.Formats.Jpg
float y = values.Component0[i];
float cb = values.Component1[i];
float cr = values.Component2[i];
var ycbcr = new YCbCr(y, cb, cr);
var expected = ColorSpaceConverter.ToRgb(new YCbCr(y, cb, cr));
var actual = new Rgb(result.Component0[i], result.Component1[i], result.Component2[i]);
var expected = ColorSpaceConverter.ToRgb(ycbcr);
bool equal = ColorSpaceComparer.Equals(expected, actual);
Assert.True(equal, $"Colors {expected} and {actual} are not equal at index {i}");
@ -460,8 +457,7 @@ namespace SixLabors.ImageSharp.Tests.Formats.Jpg
private static void ValidateCyyK(in JpegColorConverterBase.ComponentValues values, in JpegColorConverterBase.ComponentValues result, int i)
{
var v = new Vector4(0, 0, 0, 1F);
var scale = new Vector4(1 / 255F, 1 / 255F, 1 / 255F, 1F);
Vector4 v = Vector4.Zero;
float y = values.Component0[i];
float cb = values.Component1[i] - 128F;
@ -475,10 +471,9 @@ namespace SixLabors.ImageSharp.Tests.Formats.Jpg
v.Z = (255F - (float)Math.Round(y + (1.772F * cb), MidpointRounding.AwayFromZero)) * k;
v.W = 1F;
v *= scale;
var actual = new Rgb(result.Component0[i], result.Component1[i], result.Component2[i]);
v /= new Vector4(MaxColorChannelValue, MaxColorChannelValue, MaxColorChannelValue, 1f);
var expected = new Rgb(v.X, v.Y, v.Z);
var actual = new Rgb(result.Component0[i], result.Component1[i], result.Component2[i]);
bool equal = ColorSpaceComparer.Equals(expected, actual);
Assert.True(equal, $"Colors {expected} and {actual} are not equal at index {i}");
@ -489,9 +484,8 @@ namespace SixLabors.ImageSharp.Tests.Formats.Jpg
float r = values.Component0[i];
float g = values.Component1[i];
float b = values.Component2[i];
var expected = new Rgb(new Vector3(r, g, b) / new Vector3(MaxColorChannelValue));
var actual = new Rgb(result.Component0[i], result.Component1[i], result.Component2[i]);
var expected = new Rgb(r / 255F, g / 255F, b / 255F);
bool equal = ColorSpaceComparer.Equals(expected, actual);
Assert.True(equal, $"Colors {expected} and {actual} are not equal at index {i}");
@ -500,8 +494,8 @@ namespace SixLabors.ImageSharp.Tests.Formats.Jpg
private static void ValidateGrayScale(in JpegColorConverterBase.ComponentValues values, in JpegColorConverterBase.ComponentValues result, int i)
{
float y = values.Component0[i];
var expected = new Rgb(new Vector3(y) / new Vector3(MaxColorChannelValue));
var actual = new Rgb(result.Component0[i], result.Component0[i], result.Component0[i]);
var expected = new Rgb(y / 255F, y / 255F, y / 255F);
bool equal = ColorSpaceComparer.Equals(expected, actual);
Assert.True(equal, $"Colors {expected} and {actual} are not equal at index {i}");
@ -509,8 +503,7 @@ namespace SixLabors.ImageSharp.Tests.Formats.Jpg
private static void ValidateCmyk(in JpegColorConverterBase.ComponentValues values, in JpegColorConverterBase.ComponentValues result, int i)
{
var v = new Vector4(0, 0, 0, 1F);
var scale = new Vector4(1 / 255F, 1 / 255F, 1 / 255F, 1F);
Vector4 v = Vector4.Zero;
float c = values.Component0[i];
float m = values.Component1[i];
@ -522,10 +515,9 @@ namespace SixLabors.ImageSharp.Tests.Formats.Jpg
v.Z = y * k;
v.W = 1F;
v *= scale;
var actual = new Rgb(result.Component0[i], result.Component1[i], result.Component2[i]);
v /= new Vector4(MaxColorChannelValue, MaxColorChannelValue, MaxColorChannelValue, 1f);
var expected = new Rgb(v.X, v.Y, v.Z);
var actual = new Rgb(result.Component0[i], result.Component1[i], result.Component2[i]);
bool equal = ColorSpaceComparer.Equals(expected, actual);
Assert.True(equal, $"Colors {expected} and {actual} are not equal at index {i}");

Loading…
Cancel
Save