Browse Source

Better fix for report

pull/2289/head
James Jackson-South 3 years ago
parent
commit
dc58f2bc8a
  1. 3
      tests/ImageSharp.Tests/TestUtilities/ImageComparison/ExactImageComparer.cs
  2. 4
      tests/ImageSharp.Tests/TestUtilities/ImageComparison/Exceptions/ImageDifferenceIsOverThresholdException.cs
  3. 7
      tests/ImageSharp.Tests/TestUtilities/ImageComparison/ImageComparer.cs
  4. 9
      tests/ImageSharp.Tests/TestUtilities/ImageComparison/ImageSimilarityReport.cs
  5. 4
      tests/ImageSharp.Tests/TestUtilities/ImageComparison/TolerantImageComparer.cs

3
tests/ImageSharp.Tests/TestUtilities/ImageComparison/ExactImageComparer.cs

@ -12,6 +12,7 @@ public class ExactImageComparer : ImageComparer
public static ExactImageComparer Instance { get; } = new ExactImageComparer(); public static ExactImageComparer Instance { get; } = new ExactImageComparer();
public override ImageSimilarityReport<TPixelA, TPixelB> CompareImagesOrFrames<TPixelA, TPixelB>( public override ImageSimilarityReport<TPixelA, TPixelB> CompareImagesOrFrames<TPixelA, TPixelB>(
int index,
ImageFrame<TPixelA> expected, ImageFrame<TPixelA> expected,
ImageFrame<TPixelB> actual) ImageFrame<TPixelB> actual)
{ {
@ -52,6 +53,6 @@ public class ExactImageComparer : ImageComparer
} }
} }
return new ImageSimilarityReport<TPixelA, TPixelB>(expected, actual, differences); return new ImageSimilarityReport<TPixelA, TPixelB>(index, expected, actual, differences);
} }
} }

4
tests/ImageSharp.Tests/TestUtilities/ImageComparison/Exceptions/ImageDifferenceIsOverThresholdException.cs

@ -33,13 +33,11 @@ public class ImageDifferenceIsOverThresholdException : ImagesSimilarityException
sb.AppendFormat("Test Environment is Mono : {0}", TestEnvironment.IsMono); sb.AppendFormat("Test Environment is Mono : {0}", TestEnvironment.IsMono);
sb.Append(Environment.NewLine); sb.Append(Environment.NewLine);
int i = 0;
foreach (ImageSimilarityReport r in reports) foreach (ImageSimilarityReport r in reports)
{ {
sb.Append($"Report ImageFrame {i}: "); sb.AppendFormat("Report ImageFrame {0}: ", r.Index);
sb.Append(r); sb.Append(r);
sb.Append(Environment.NewLine); sb.Append(Environment.NewLine);
i++;
} }
return sb.ToString(); return sb.ToString();

7
tests/ImageSharp.Tests/TestUtilities/ImageComparison/ImageComparer.cs

@ -27,6 +27,7 @@ public abstract class ImageComparer
=> Tolerant(imageThresholdInPercents / 100F, perPixelManhattanThreshold); => Tolerant(imageThresholdInPercents / 100F, perPixelManhattanThreshold);
public abstract ImageSimilarityReport<TPixelA, TPixelB> CompareImagesOrFrames<TPixelA, TPixelB>( public abstract ImageSimilarityReport<TPixelA, TPixelB> CompareImagesOrFrames<TPixelA, TPixelB>(
int index,
ImageFrame<TPixelA> expected, ImageFrame<TPixelA> expected,
ImageFrame<TPixelB> actual) ImageFrame<TPixelB> actual)
where TPixelA : unmanaged, IPixel<TPixelA> where TPixelA : unmanaged, IPixel<TPixelA>
@ -40,7 +41,7 @@ public static class ImageComparerExtensions
Image<TPixelA> expected, Image<TPixelA> expected,
Image<TPixelB> actual) Image<TPixelB> actual)
where TPixelA : unmanaged, IPixel<TPixelA> where TPixelA : unmanaged, IPixel<TPixelA>
where TPixelB : unmanaged, IPixel<TPixelB> => comparer.CompareImagesOrFrames(expected.Frames.RootFrame, actual.Frames.RootFrame); where TPixelB : unmanaged, IPixel<TPixelB> => comparer.CompareImagesOrFrames(0, expected.Frames.RootFrame, actual.Frames.RootFrame);
public static IEnumerable<ImageSimilarityReport<TPixelA, TPixelB>> CompareImages<TPixelA, TPixelB>( public static IEnumerable<ImageSimilarityReport<TPixelA, TPixelB>> CompareImages<TPixelA, TPixelB>(
this ImageComparer comparer, this ImageComparer comparer,
@ -58,7 +59,7 @@ public static class ImageComparerExtensions
for (int i = 0; i < expected.Frames.Count; i++) for (int i = 0; i < expected.Frames.Count; i++)
{ {
ImageSimilarityReport<TPixelA, TPixelB> report = comparer.CompareImagesOrFrames(expected.Frames[i], actual.Frames[i]); ImageSimilarityReport<TPixelA, TPixelB> report = comparer.CompareImagesOrFrames(i, expected.Frames[i], actual.Frames[i]);
if (!report.IsEmpty) if (!report.IsEmpty)
{ {
result.Add(report); result.Add(report);
@ -125,7 +126,7 @@ public static class ImageComparerExtensions
if (outsideChanges.Any()) if (outsideChanges.Any())
{ {
cleanedReports.Add(new ImageSimilarityReport<TPixelA, TPixelB>(r.ExpectedImage, r.ActualImage, outsideChanges, null)); cleanedReports.Add(new ImageSimilarityReport<TPixelA, TPixelB>(r.Index, r.ExpectedImage, r.ActualImage, outsideChanges, null));
} }
} }

9
tests/ImageSharp.Tests/TestUtilities/ImageComparison/ImageSimilarityReport.cs

@ -9,17 +9,21 @@ namespace SixLabors.ImageSharp.Tests.TestUtilities.ImageComparison;
public class ImageSimilarityReport public class ImageSimilarityReport
{ {
protected ImageSimilarityReport( protected ImageSimilarityReport(
int index,
object expectedImage, object expectedImage,
object actualImage, object actualImage,
IEnumerable<PixelDifference> differences, IEnumerable<PixelDifference> differences,
float? totalNormalizedDifference = null) float? totalNormalizedDifference = null)
{ {
this.Index = index;
this.ExpectedImage = expectedImage; this.ExpectedImage = expectedImage;
this.ActualImage = actualImage; this.ActualImage = actualImage;
this.TotalNormalizedDifference = totalNormalizedDifference; this.TotalNormalizedDifference = totalNormalizedDifference;
this.Differences = differences.ToArray(); this.Differences = differences.ToArray();
} }
public int Index { get; }
public object ExpectedImage { get; } public object ExpectedImage { get; }
public object ActualImage { get; } public object ActualImage { get; }
@ -89,16 +93,17 @@ public class ImageSimilarityReport<TPixelA, TPixelB> : ImageSimilarityReport
where TPixelB : unmanaged, IPixel<TPixelB> where TPixelB : unmanaged, IPixel<TPixelB>
{ {
public ImageSimilarityReport( public ImageSimilarityReport(
int index,
ImageFrame<TPixelA> expectedImage, ImageFrame<TPixelA> expectedImage,
ImageFrame<TPixelB> actualImage, ImageFrame<TPixelB> actualImage,
IEnumerable<PixelDifference> differences, IEnumerable<PixelDifference> differences,
float? totalNormalizedDifference = null) float? totalNormalizedDifference = null)
: base(expectedImage, actualImage, differences, totalNormalizedDifference) : base(index, expectedImage, actualImage, differences, totalNormalizedDifference)
{ {
} }
public static ImageSimilarityReport<TPixelA, TPixelB> Empty => public static ImageSimilarityReport<TPixelA, TPixelB> Empty =>
new ImageSimilarityReport<TPixelA, TPixelB>(null, null, Enumerable.Empty<PixelDifference>(), 0f); new ImageSimilarityReport<TPixelA, TPixelB>(0, null, null, Enumerable.Empty<PixelDifference>(), 0f);
public new ImageFrame<TPixelA> ExpectedImage => (ImageFrame<TPixelA>)base.ExpectedImage; public new ImageFrame<TPixelA> ExpectedImage => (ImageFrame<TPixelA>)base.ExpectedImage;

4
tests/ImageSharp.Tests/TestUtilities/ImageComparison/TolerantImageComparer.cs

@ -56,7 +56,7 @@ public class TolerantImageComparer : ImageComparer
/// </summary> /// </summary>
public int PerPixelManhattanThreshold { get; } public int PerPixelManhattanThreshold { get; }
public override ImageSimilarityReport<TPixelA, TPixelB> CompareImagesOrFrames<TPixelA, TPixelB>(ImageFrame<TPixelA> expected, ImageFrame<TPixelB> actual) public override ImageSimilarityReport<TPixelA, TPixelB> CompareImagesOrFrames<TPixelA, TPixelB>(int index, ImageFrame<TPixelA> expected, ImageFrame<TPixelB> actual)
{ {
if (expected.Size() != actual.Size()) if (expected.Size() != actual.Size())
{ {
@ -103,7 +103,7 @@ public class TolerantImageComparer : ImageComparer
if (normalizedDifference > this.ImageThreshold) if (normalizedDifference > this.ImageThreshold)
{ {
return new ImageSimilarityReport<TPixelA, TPixelB>(expected, actual, differences, normalizedDifference); return new ImageSimilarityReport<TPixelA, TPixelB>(index, expected, actual, differences, normalizedDifference);
} }
else else
{ {

Loading…
Cancel
Save