Skip to content

Commit 8c754c5

Browse files
committed
Compare with tolerance
1 parent ec3a08f commit 8c754c5

File tree

1 file changed

+71
-19
lines changed

1 file changed

+71
-19
lines changed

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

Lines changed: 71 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -242,62 +242,103 @@ static void RunTest(string arg) =>
242242
[Theory]
243243
[MemberData(nameof(Seeds))]
244244
public void FromYCbCrAvx2(int seed) =>
245-
this.TestConversionToRgb(new JpegColorConverterBase.YCbCrAvx(8), 3, seed, new JpegColorConverterBase.YCbCrScalar(8));
245+
this.TestConversionToRgb(new JpegColorConverterBase.YCbCrAvx(8),
246+
3,
247+
seed,
248+
new JpegColorConverterBase.YCbCrScalar(8));
246249

247250
[Theory]
248251
[MemberData(nameof(Seeds))]
249252
public void FromRgbToYCbCrAvx2(int seed) =>
250-
this.TestConversionFromRgb(new JpegColorConverterBase.YCbCrAvx(8), 3, seed, new JpegColorConverterBase.YCbCrScalar(8));
253+
this.TestConversionFromRgb(new JpegColorConverterBase.YCbCrAvx(8),
254+
3,
255+
seed,
256+
new JpegColorConverterBase.YCbCrScalar(8),
257+
precísion: 2);
251258

252259
[Theory]
253260
[MemberData(nameof(Seeds))]
254261
public void FromCmykAvx2(int seed) =>
255-
this.TestConversionToRgb(new JpegColorConverterBase.CmykAvx(8), 4, seed, new JpegColorConverterBase.CmykScalar(8));
262+
this.TestConversionToRgb(new JpegColorConverterBase.CmykAvx(8),
263+
4,
264+
seed,
265+
new JpegColorConverterBase.CmykScalar(8));
256266

257267
[Theory]
258268
[MemberData(nameof(Seeds))]
259269
public void FromRgbToCmykAvx2(int seed) =>
260-
this.TestConversionFromRgb(new JpegColorConverterBase.CmykAvx(8), 4, seed, new JpegColorConverterBase.CmykScalar(8));
270+
this.TestConversionFromRgb(new JpegColorConverterBase.CmykAvx(8),
271+
4,
272+
seed,
273+
new JpegColorConverterBase.CmykScalar(8),
274+
precísion: 4);
261275

262276
[Theory]
263277
[MemberData(nameof(Seeds))]
264278
public void FromCmykArm(int seed) =>
265-
this.TestConversionToRgb( new JpegColorConverterBase.CmykArm64(8), 4, seed, new JpegColorConverterBase.CmykScalar(8));
279+
this.TestConversionToRgb( new JpegColorConverterBase.CmykArm64(8),
280+
4,
281+
seed,
282+
new JpegColorConverterBase.CmykScalar(8));
266283

267284
[Theory]
268285
[MemberData(nameof(Seeds))]
269286
public void FromRgbToCmykArm(int seed) =>
270-
this.TestConversionFromRgb(new JpegColorConverterBase.CmykArm64(8), 4, seed, new JpegColorConverterBase.CmykScalar(8));
287+
this.TestConversionFromRgb(new JpegColorConverterBase.CmykArm64(8),
288+
4,
289+
seed,
290+
new JpegColorConverterBase.CmykScalar(8),
291+
precísion: 4);
271292

272293
[Theory]
273294
[MemberData(nameof(Seeds))]
274295
public void FromGrayscaleAvx2(int seed) =>
275-
this.TestConversionToRgb(new JpegColorConverterBase.GrayscaleAvx(8), 1, seed, new JpegColorConverterBase.GrayscaleScalar(8));
296+
this.TestConversionToRgb(new JpegColorConverterBase.GrayscaleAvx(8),
297+
1,
298+
seed,
299+
new JpegColorConverterBase.GrayscaleScalar(8));
276300

277301
[Theory]
278302
[MemberData(nameof(Seeds))]
279303
public void FromRgbToGrayscaleAvx2(int seed) =>
280-
this.TestConversionFromRgb(new JpegColorConverterBase.GrayscaleAvx(8), 1, seed, new JpegColorConverterBase.GrayscaleScalar(8));
304+
this.TestConversionFromRgb(new JpegColorConverterBase.GrayscaleAvx(8),
305+
1,
306+
seed,
307+
new JpegColorConverterBase.GrayscaleScalar(8),
308+
precísion: 3);
281309

282310
[Theory]
283311
[MemberData(nameof(Seeds))]
284312
public void FromRgbAvx2(int seed) =>
285-
this.TestConversionToRgb(new JpegColorConverterBase.RgbAvx(8), 3, seed, new JpegColorConverterBase.RgbScalar(8));
313+
this.TestConversionToRgb(new JpegColorConverterBase.RgbAvx(8),
314+
3,
315+
seed,
316+
new JpegColorConverterBase.RgbScalar(8));
286317

287318
[Theory]
288319
[MemberData(nameof(Seeds))]
289320
public void FromRgbArm(int seed) =>
290-
this.TestConversionToRgb(new JpegColorConverterBase.RgbArm(8), 3, seed, new JpegColorConverterBase.RgbScalar(8));
321+
this.TestConversionToRgb(new JpegColorConverterBase.RgbArm(8),
322+
3,
323+
seed,
324+
new JpegColorConverterBase.RgbScalar(8));
291325

292326
[Theory]
293327
[MemberData(nameof(Seeds))]
294328
public void FromYccKAvx2(int seed) =>
295-
this.TestConversionToRgb( new JpegColorConverterBase.YccKAvx(8), 4, seed, new JpegColorConverterBase.YccKScalar(8));
329+
this.TestConversionToRgb( new JpegColorConverterBase.YccKAvx(8),
330+
4,
331+
seed,
332+
new JpegColorConverterBase.YccKScalar(8));
296333

297334
[Theory]
298335
[MemberData(nameof(Seeds))]
299336
public void FromRgbToYccKAvx2(int seed) =>
300-
this.TestConversionFromRgb(new JpegColorConverterBase.YccKAvx(8), 4, seed, new JpegColorConverterBase.YccKScalar(8));
337+
this.TestConversionFromRgb(new JpegColorConverterBase.YccKAvx(8),
338+
4,
339+
seed,
340+
new JpegColorConverterBase.YccKScalar(8),
341+
precísion: 4);
301342

302343
private void TestConversionToRgb(
303344
JpegColorConverterBase converter,
@@ -323,7 +364,8 @@ private void TestConversionFromRgb(
323364
JpegColorConverterBase converter,
324365
int componentCount,
325366
int seed,
326-
JpegColorConverterBase baseLineConverter)
367+
JpegColorConverterBase baseLineConverter,
368+
int precísion)
327369
{
328370
if (!converter.IsAvailable)
329371
{
@@ -336,7 +378,8 @@ private void TestConversionFromRgb(
336378
converter,
337379
componentCount,
338380
seed,
339-
baseLineConverter);
381+
baseLineConverter,
382+
precísion);
340383
}
341384

342385
private static JpegColorConverterBase.ComponentValues CreateRandomValues(
@@ -434,7 +477,8 @@ private static void ValidateConversionFromRgb(
434477
JpegColorConverterBase converter,
435478
int componentCount,
436479
int seed,
437-
JpegColorConverterBase baseLineConverter)
480+
JpegColorConverterBase baseLineConverter,
481+
int precision = 4)
438482
{
439483
// arrange
440484
JpegColorConverterBase.ComponentValues actual = CreateRandomValues(TestBufferLength, componentCount, seed);
@@ -451,22 +495,30 @@ private static void ValidateConversionFromRgb(
451495
// assert
452496
if (componentCount == 1)
453497
{
454-
Assert.True(expected.Component0.SequenceEqual(actual.Component0));
498+
CompareSequenceWithTolerance(expected.Component0, actual.Component0, precision);
455499
}
456500

457501
if (componentCount == 2)
458502
{
459-
Assert.True(expected.Component1.SequenceEqual(actual.Component1));
503+
CompareSequenceWithTolerance(expected.Component1, actual.Component1, precision);
460504
}
461505

462506
if (componentCount == 3)
463507
{
464-
Assert.True(expected.Component2.SequenceEqual(actual.Component2));
508+
CompareSequenceWithTolerance(expected.Component2, actual.Component2, precision);
465509
}
466510

467511
if (componentCount == 4)
468512
{
469-
Assert.True(expected.Component3.SequenceEqual(actual.Component3));
513+
CompareSequenceWithTolerance(expected.Component3, actual.Component3, precision);
514+
}
515+
}
516+
517+
private static void CompareSequenceWithTolerance(Span<float> expected, Span<float> actual, int precision)
518+
{
519+
for (int i = 0; i < expected.Length; i++)
520+
{
521+
Assert.Equal(expected[i], actual[i], precision: precision);
470522
}
471523
}
472524

0 commit comments

Comments
 (0)