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 override ImageSimilarityReport<TPixelA, TPixelB> CompareImagesOrFrames<TPixelA, TPixelB>(
int index,
ImageFrame<TPixelA> expected,
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.Append(Environment.NewLine);
int i = 0;
foreach (ImageSimilarityReport r in reports)
{
sb.Append($"Report ImageFrame {i}: ");
sb.AppendFormat("Report ImageFrame {0}: ", r.Index);
sb.Append(r);
sb.Append(Environment.NewLine);
i++;
}
return sb.ToString();

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

@ -27,6 +27,7 @@ public abstract class ImageComparer
=> Tolerant(imageThresholdInPercents / 100F, perPixelManhattanThreshold);
public abstract ImageSimilarityReport<TPixelA, TPixelB> CompareImagesOrFrames<TPixelA, TPixelB>(
int index,
ImageFrame<TPixelA> expected,
ImageFrame<TPixelB> actual)
where TPixelA : unmanaged, IPixel<TPixelA>
@ -40,7 +41,7 @@ public static class ImageComparerExtensions
Image<TPixelA> expected,
Image<TPixelB> actual)
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>(
this ImageComparer comparer,
@ -58,7 +59,7 @@ public static class ImageComparerExtensions
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)
{
result.Add(report);
@ -125,7 +126,7 @@ public static class ImageComparerExtensions
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
{
protected ImageSimilarityReport(
int index,
object expectedImage,
object actualImage,
IEnumerable<PixelDifference> differences,
float? totalNormalizedDifference = null)
{
this.Index = index;
this.ExpectedImage = expectedImage;
this.ActualImage = actualImage;
this.TotalNormalizedDifference = totalNormalizedDifference;
this.Differences = differences.ToArray();
}
public int Index { get; }
public object ExpectedImage { get; }
public object ActualImage { get; }
@ -89,16 +93,17 @@ public class ImageSimilarityReport<TPixelA, TPixelB> : ImageSimilarityReport
where TPixelB : unmanaged, IPixel<TPixelB>
{
public ImageSimilarityReport(
int index,
ImageFrame<TPixelA> expectedImage,
ImageFrame<TPixelB> actualImage,
IEnumerable<PixelDifference> differences,
float? totalNormalizedDifference = null)
: base(expectedImage, actualImage, differences, totalNormalizedDifference)
: base(index, expectedImage, actualImage, differences, totalNormalizedDifference)
{
}
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;

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

@ -56,7 +56,7 @@ public class TolerantImageComparer : ImageComparer
/// </summary>
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())
{
@ -103,7 +103,7 @@ public class TolerantImageComparer : ImageComparer
if (normalizedDifference > this.ImageThreshold)
{
return new ImageSimilarityReport<TPixelA, TPixelB>(expected, actual, differences, normalizedDifference);
return new ImageSimilarityReport<TPixelA, TPixelB>(index, expected, actual, differences, normalizedDifference);
}
else
{

Loading…
Cancel
Save