From f69ca91d1f284a6963e80e216c6f47df6b9f56cd Mon Sep 17 00:00:00 2001 From: Ben Olden-Cooligan Date: Thu, 30 Jun 2022 19:54:21 -0700 Subject: [PATCH] Add PixelColors image assert --- NAPS2.Sdk.Tests/Asserts/ImageAsserts.cs | 47 ++++++++++++++++++- .../Scan/TwainMemoryBufferReaderTests.cs | 3 ++ 2 files changed, 49 insertions(+), 1 deletion(-) diff --git a/NAPS2.Sdk.Tests/Asserts/ImageAsserts.cs b/NAPS2.Sdk.Tests/Asserts/ImageAsserts.cs index dfdba4767..78c06f605 100644 --- a/NAPS2.Sdk.Tests/Asserts/ImageAsserts.cs +++ b/NAPS2.Sdk.Tests/Asserts/ImageAsserts.cs @@ -1,4 +1,8 @@ -using Xunit; +using System.Collections; +using System.Drawing; +using NAPS2.Images.Gdi; +using Xunit; +using Xunit.Sdk; namespace NAPS2.Sdk.Tests.Asserts; @@ -77,4 +81,45 @@ public static class ImageAsserts second.Unlock(lock2); } } + + public static void PixelColors(IMemoryImage image, PixelColorData colorData) + { + var bitmap = ((GdiImage) image).Bitmap; + foreach (var data in colorData) + { + var (x, y) = data.Item1; + var (r, g, b) = data.Item2; + var color = bitmap.GetPixel(x, y); + var expected = Color.FromArgb(r, g, b); + if (color != expected) + { + throw new AssertActualExpectedException(expected, color, $"Mismatched color at ({x}, {y})"); + } + } + } + + public class PixelColorData : IEnumerable<((int x, int y), (int r, int g, int b))> + { + private readonly List<((int x, int y), (int r, int g, int b))> _colors = new(); + + public void Add((int x, int y) pos, (int r, int g, int b) color) + { + _colors.Add((pos, color)); + } + + public void Add((int x, int y) pos, Color color) + { + _colors.Add((pos, (color.R, color.G, color.B))); + } + + public IEnumerator<((int x, int y), (int r, int g, int b))> GetEnumerator() + { + return _colors.GetEnumerator(); + } + + IEnumerator IEnumerable.GetEnumerator() + { + return GetEnumerator(); + } + } } \ No newline at end of file diff --git a/NAPS2.Sdk.Tests/Scan/TwainMemoryBufferReaderTests.cs b/NAPS2.Sdk.Tests/Scan/TwainMemoryBufferReaderTests.cs index b2e9863cb..758dc3f37 100644 --- a/NAPS2.Sdk.Tests/Scan/TwainMemoryBufferReaderTests.cs +++ b/NAPS2.Sdk.Tests/Scan/TwainMemoryBufferReaderTests.cs @@ -33,6 +33,7 @@ public class TwainMemoryBufferReaderTests }; var imageData = CreateColorImageData(2, 2); var image = Create24BitImage(2, 2); + TwainMemoryBufferReader.CopyBufferToImage(buffer, imageData, image); ImageAsserts.PixelColors(image, new() @@ -60,6 +61,7 @@ public class TwainMemoryBufferReaderTests }; var imageData = CreateGrayscaleImageData(2, 2); var image = Create24BitImage(2, 2); + TwainMemoryBufferReader.CopyBufferToImage(buffer, imageData, image); ImageAsserts.PixelColors(image, new() @@ -87,6 +89,7 @@ public class TwainMemoryBufferReaderTests }; var imageData = CreateBlackWhiteImageData(2, 2); var image = Create1BitImage(2, 2); + TwainMemoryBufferReader.CopyBufferToImage(buffer, imageData, image); ImageAsserts.PixelColors(image, new()