diff --git a/src/ImageProcessor.UnitTests/ImageFactoryUnitTests.cs b/src/ImageProcessor.UnitTests/ImageFactoryUnitTests.cs index 2c364000f..b3a970e8a 100644 --- a/src/ImageProcessor.UnitTests/ImageFactoryUnitTests.cs +++ b/src/ImageProcessor.UnitTests/ImageFactoryUnitTests.cs @@ -9,6 +9,7 @@ namespace ImageProcessor.UnitTests using System; using System.Collections.Generic; using System.Drawing; + using System.Drawing.Imaging; using System.IO; using System.Linq; @@ -117,8 +118,9 @@ namespace ImageProcessor.UnitTests foreach (ImageFactory imageFactory in this.ListInputImages()) { Image original = (Image)imageFactory.Image.Clone(); + AssertImagesAreIdentical(original, imageFactory.Image); imageFactory.Alpha(50); - Assert.AreNotEqual(original, imageFactory.Image); + AssertImagesAreDifferent(original, imageFactory.Image); } } @@ -131,8 +133,9 @@ namespace ImageProcessor.UnitTests foreach (ImageFactory imageFactory in this.ListInputImages()) { Image original = (Image)imageFactory.Image.Clone(); + AssertImagesAreIdentical(original, imageFactory.Image); imageFactory.Brightness(50); - Assert.AreNotEqual(original, imageFactory.Image); + AssertImagesAreDifferent(original, imageFactory.Image); } } @@ -145,8 +148,9 @@ namespace ImageProcessor.UnitTests foreach (ImageFactory imageFactory in this.ListInputImages()) { Image original = (Image)imageFactory.Image.Clone(); + AssertImagesAreIdentical(original, imageFactory.Image); imageFactory.BackgroundColor(Color.Yellow); - Assert.AreNotEqual(original, imageFactory.Image); + AssertImagesAreDifferent(original, imageFactory.Image); } } @@ -159,8 +163,9 @@ namespace ImageProcessor.UnitTests foreach (ImageFactory imageFactory in this.ListInputImages()) { Image original = (Image)imageFactory.Image.Clone(); + AssertImagesAreIdentical(original, imageFactory.Image); imageFactory.Contrast(50); - Assert.AreNotEqual(original, imageFactory.Image); + AssertImagesAreDifferent(original, imageFactory.Image); } } @@ -173,8 +178,9 @@ namespace ImageProcessor.UnitTests foreach (ImageFactory imageFactory in this.ListInputImages()) { Image original = (Image)imageFactory.Image.Clone(); + AssertImagesAreIdentical(original, imageFactory.Image); imageFactory.Saturation(50); - Assert.AreNotEqual(original, imageFactory.Image); + AssertImagesAreDifferent(original, imageFactory.Image); } } @@ -187,8 +193,9 @@ namespace ImageProcessor.UnitTests foreach (ImageFactory imageFactory in this.ListInputImages()) { Image original = (Image)imageFactory.Image.Clone(); + AssertImagesAreIdentical(original, imageFactory.Image); imageFactory.Tint(Color.FromKnownColor(KnownColor.AliceBlue)); - Assert.AreNotEqual(original, imageFactory.Image); + AssertImagesAreDifferent(original, imageFactory.Image); } } @@ -201,8 +208,9 @@ namespace ImageProcessor.UnitTests foreach (ImageFactory imageFactory in this.ListInputImages()) { Image original = (Image)imageFactory.Image.Clone(); + AssertImagesAreIdentical(original, imageFactory.Image); imageFactory.Vignette(Color.FromKnownColor(KnownColor.AliceBlue)); - Assert.AreNotEqual(original, imageFactory.Image); + AssertImagesAreDifferent(original, imageFactory.Image); } } @@ -215,6 +223,7 @@ namespace ImageProcessor.UnitTests foreach (ImageFactory imageFactory in this.ListInputImages()) { Image original = (Image)imageFactory.Image.Clone(); + AssertImagesAreIdentical(original, imageFactory.Image); imageFactory.Watermark(new TextLayer { FontFamily = new FontFamily("Arial"), @@ -222,7 +231,7 @@ namespace ImageProcessor.UnitTests Position = new Point(10, 10), Text = "Lorem ipsum dolor" }); - Assert.AreNotEqual(original, imageFactory.Image); + AssertImagesAreDifferent(original, imageFactory.Image); } } @@ -235,8 +244,9 @@ namespace ImageProcessor.UnitTests foreach (ImageFactory imageFactory in this.ListInputImages()) { Image original = (Image)imageFactory.Image.Clone(); + AssertImagesAreIdentical(original, imageFactory.Image); imageFactory.GaussianBlur(5); - Assert.AreNotEqual(original, imageFactory.Image); + AssertImagesAreDifferent(original, imageFactory.Image); } } @@ -249,8 +259,9 @@ namespace ImageProcessor.UnitTests foreach (ImageFactory imageFactory in this.ListInputImages()) { Image original = (Image)imageFactory.Image.Clone(); + AssertImagesAreIdentical(original, imageFactory.Image); imageFactory.GaussianBlur(new GaussianLayer { Sigma = 10, Size = 5, Threshold = 2 }); - Assert.AreNotEqual(original, imageFactory.Image); + AssertImagesAreDifferent(original, imageFactory.Image); } } @@ -263,8 +274,9 @@ namespace ImageProcessor.UnitTests foreach (ImageFactory imageFactory in this.ListInputImages()) { Image original = (Image)imageFactory.Image.Clone(); + AssertImagesAreIdentical(original, imageFactory.Image); imageFactory.GaussianSharpen(5); - Assert.AreNotEqual(original, imageFactory.Image); + AssertImagesAreDifferent(original, imageFactory.Image); } } @@ -277,8 +289,9 @@ namespace ImageProcessor.UnitTests foreach (ImageFactory imageFactory in this.ListInputImages()) { Image original = (Image)imageFactory.Image.Clone(); + AssertImagesAreIdentical(original, imageFactory.Image); imageFactory.GaussianSharpen(new GaussianLayer { Sigma = 10, Size = 5, Threshold = 2 }); - Assert.AreNotEqual(original, imageFactory.Image); + AssertImagesAreDifferent(original, imageFactory.Image); } } @@ -291,46 +304,57 @@ namespace ImageProcessor.UnitTests foreach (ImageFactory imageFactory in this.ListInputImages()) { Image original = (Image)imageFactory.Image.Clone(); + AssertImagesAreIdentical(original, imageFactory.Image); imageFactory.Filter(MatrixFilters.BlackWhite); - Assert.AreNotEqual(original, imageFactory.Image); + AssertImagesAreDifferent(original, imageFactory.Image); imageFactory.Reset(); + AssertImagesAreIdentical(original, imageFactory.Image); imageFactory.Filter(MatrixFilters.Comic); - Assert.AreNotEqual(original, imageFactory.Image); + AssertImagesAreDifferent(original, imageFactory.Image); imageFactory.Reset(); + AssertImagesAreIdentical(original, imageFactory.Image); imageFactory.Filter(MatrixFilters.Gotham); - Assert.AreNotEqual(original, imageFactory.Image); + AssertImagesAreDifferent(original, imageFactory.Image); imageFactory.Reset(); + AssertImagesAreIdentical(original, imageFactory.Image); imageFactory.Filter(MatrixFilters.GreyScale); - Assert.AreNotEqual(original, imageFactory.Image); + AssertImagesAreDifferent(original, imageFactory.Image); imageFactory.Reset(); + AssertImagesAreIdentical(original, imageFactory.Image); imageFactory.Filter(MatrixFilters.HiSatch); - Assert.AreNotEqual(original, imageFactory.Image); + AssertImagesAreDifferent(original, imageFactory.Image); imageFactory.Reset(); + AssertImagesAreIdentical(original, imageFactory.Image); imageFactory.Filter(MatrixFilters.Invert); - Assert.AreNotEqual(original, imageFactory.Image); + AssertImagesAreDifferent(original, imageFactory.Image); imageFactory.Reset(); + AssertImagesAreIdentical(original, imageFactory.Image); imageFactory.Filter(MatrixFilters.Lomograph); - Assert.AreNotEqual(original, imageFactory.Image); + AssertImagesAreDifferent(original, imageFactory.Image); imageFactory.Reset(); + AssertImagesAreIdentical(original, imageFactory.Image); imageFactory.Filter(MatrixFilters.LoSatch); - Assert.AreNotEqual(original, imageFactory.Image); + AssertImagesAreDifferent(original, imageFactory.Image); imageFactory.Reset(); + AssertImagesAreIdentical(original, imageFactory.Image); imageFactory.Filter(MatrixFilters.Polaroid); - Assert.AreNotEqual(original, imageFactory.Image); + AssertImagesAreDifferent(original, imageFactory.Image); imageFactory.Reset(); + AssertImagesAreIdentical(original, imageFactory.Image); imageFactory.Filter(MatrixFilters.Sepia); - Assert.AreNotEqual(original, imageFactory.Image); + AssertImagesAreDifferent(original, imageFactory.Image); imageFactory.Reset(); + AssertImagesAreIdentical(original, imageFactory.Image); } } @@ -343,8 +367,9 @@ namespace ImageProcessor.UnitTests foreach (ImageFactory imageFactory in this.ListInputImages()) { Image original = (Image)imageFactory.Image.Clone(); + AssertImagesAreIdentical(original, imageFactory.Image); imageFactory.RoundedCorners(new RoundedCornerLayer(5)); - Assert.AreNotEqual(original, imageFactory.Image); + AssertImagesAreDifferent(original, imageFactory.Image); } } @@ -373,8 +398,9 @@ namespace ImageProcessor.UnitTests foreach (ImageFactory imageFactory in this.ListInputImages()) { Image original = (Image)imageFactory.Image.Clone(); + AssertImagesAreIdentical(original, imageFactory.Image); imageFactory.Crop(new Rectangle(0, 0, MaxSize, MaxSize)); - Assert.AreNotEqual(original, imageFactory.Image); + AssertImagesAreDifferent(original, imageFactory.Image); Assert.AreEqual(MaxSize, imageFactory.Image.Width); Assert.LessOrEqual(MaxSize, imageFactory.Image.Height); } @@ -390,8 +416,9 @@ namespace ImageProcessor.UnitTests foreach (ImageFactory imageFactory in this.ListInputImages()) { Image original = (Image)imageFactory.Image.Clone(); + AssertImagesAreIdentical(original, imageFactory.Image); imageFactory.Crop(new CropLayer(0, 0, MaxSize, MaxSize, CropMode.Pixels)); - Assert.AreNotEqual(original, imageFactory.Image); + AssertImagesAreDifferent(original, imageFactory.Image); Assert.AreEqual(MaxSize, imageFactory.Image.Width); Assert.LessOrEqual(MaxSize, imageFactory.Image.Height); } @@ -406,14 +433,16 @@ namespace ImageProcessor.UnitTests foreach (ImageFactory imageFactory in this.ListInputImages()) { Image original = (Image)imageFactory.Image.Clone(); + AssertImagesAreIdentical(original, imageFactory.Image); imageFactory.Flip(true); - Assert.AreNotEqual(original, imageFactory.Image); + AssertImagesAreDifferent(original, imageFactory.Image); Assert.AreEqual(original.Width, imageFactory.Image.Width); Assert.AreEqual(original.Height, imageFactory.Image.Height); imageFactory.Reset(); + AssertImagesAreIdentical(original, imageFactory.Image); imageFactory.Flip(); - Assert.AreNotEqual(original, imageFactory.Image); + AssertImagesAreDifferent(original, imageFactory.Image); Assert.AreEqual(original.Width, imageFactory.Image.Width); Assert.AreEqual(original.Height, imageFactory.Image.Height); } @@ -458,6 +487,7 @@ namespace ImageProcessor.UnitTests foreach (ImageFactory imageFactory in this.ListInputImages()) { Image original = (Image)imageFactory.Image.Clone(); + AssertImagesAreIdentical(original, imageFactory.Image); imageFactory.Rotate(90); Assert.AreEqual(original.Height, imageFactory.Image.Width); Assert.AreEqual(original.Width, imageFactory.Image.Height); @@ -473,13 +503,15 @@ namespace ImageProcessor.UnitTests foreach (ImageFactory imageFactory in this.ListInputImages()) { Image original = (Image)imageFactory.Image.Clone(); + AssertImagesAreIdentical(original, imageFactory.Image); imageFactory.Hue(90); - Assert.AreNotEqual(original, imageFactory.Image); + AssertImagesAreDifferent(original, imageFactory.Image); imageFactory.Reset(); + AssertImagesAreIdentical(original, imageFactory.Image); imageFactory.Hue(116, true); - Assert.AreNotEqual(original, imageFactory.Image); + AssertImagesAreDifferent(original, imageFactory.Image); } } @@ -492,8 +524,9 @@ namespace ImageProcessor.UnitTests foreach (ImageFactory imageFactory in this.ListInputImages()) { Image original = (Image)imageFactory.Image.Clone(); + AssertImagesAreIdentical(original, imageFactory.Image); imageFactory.Pixelate(8); - Assert.AreNotEqual(original, imageFactory.Image); + AssertImagesAreDifferent(original, imageFactory.Image); } } @@ -522,8 +555,9 @@ namespace ImageProcessor.UnitTests foreach (ImageFactory imageFactory in this.ListInputImages()) { Image original = (Image)imageFactory.Image.Clone(); + AssertImagesAreIdentical(original, imageFactory.Image); imageFactory.ReplaceColor(Color.White, Color.Black, 90); - Assert.AreNotEqual(original, imageFactory.Image); + AssertImagesAreDifferent(original, imageFactory.Image); } } @@ -536,42 +570,52 @@ namespace ImageProcessor.UnitTests foreach (ImageFactory imageFactory in this.ListInputImages()) { Image original = (Image)imageFactory.Image.Clone(); + AssertImagesAreIdentical(original, imageFactory.Image); imageFactory.DetectEdges(new KayyaliEdgeFilter()); - Assert.AreNotEqual(original, imageFactory.Image); + AssertImagesAreDifferent(original, imageFactory.Image); imageFactory.Reset(); + AssertImagesAreIdentical(original, imageFactory.Image); imageFactory.DetectEdges(new KirschEdgeFilter()); - Assert.AreNotEqual(original, imageFactory.Image); + AssertImagesAreDifferent(original, imageFactory.Image); imageFactory.Reset(); + AssertImagesAreIdentical(original, imageFactory.Image); imageFactory.DetectEdges(new Laplacian3X3EdgeFilter()); - Assert.AreNotEqual(original, imageFactory.Image); + AssertImagesAreDifferent(original, imageFactory.Image); imageFactory.Reset(); + AssertImagesAreIdentical(original, imageFactory.Image); imageFactory.DetectEdges(new Laplacian5X5EdgeFilter()); - Assert.AreNotEqual(original, imageFactory.Image); + AssertImagesAreDifferent(original, imageFactory.Image); imageFactory.Reset(); + AssertImagesAreIdentical(original, imageFactory.Image); imageFactory.DetectEdges(new LaplacianOfGaussianEdgeFilter()); - Assert.AreNotEqual(original, imageFactory.Image); + AssertImagesAreDifferent(original, imageFactory.Image); imageFactory.Reset(); + AssertImagesAreIdentical(original, imageFactory.Image); imageFactory.DetectEdges(new PrewittEdgeFilter()); - Assert.AreNotEqual(original, imageFactory.Image); + AssertImagesAreDifferent(original, imageFactory.Image); imageFactory.Reset(); + AssertImagesAreIdentical(original, imageFactory.Image); imageFactory.DetectEdges(new RobertsCrossEdgeFilter()); - Assert.AreNotEqual(original, imageFactory.Image); + AssertImagesAreDifferent(original, imageFactory.Image); imageFactory.Reset(); + AssertImagesAreIdentical(original, imageFactory.Image); imageFactory.DetectEdges(new ScharrEdgeFilter()); - Assert.AreNotEqual(original, imageFactory.Image); + AssertImagesAreDifferent(original, imageFactory.Image); imageFactory.Reset(); + AssertImagesAreIdentical(original, imageFactory.Image); imageFactory.DetectEdges(new SobelEdgeFilter()); - Assert.AreNotEqual(original, imageFactory.Image); + AssertImagesAreDifferent(original, imageFactory.Image); imageFactory.Reset(); + AssertImagesAreIdentical(original, imageFactory.Image); } } @@ -636,5 +680,40 @@ namespace ImageProcessor.UnitTests return imagesFactories; } + + /// + /// Asserts that two images are identical + /// + /// The expected result + /// The tested image + private void AssertImagesAreIdentical(Image expected, Image tested) + { + Assert.IsTrue(ToByteArray(expected).SequenceEqual(ToByteArray(tested))); + } + + /// + /// Asserts that two images are different + /// + /// The not-expected result + /// The tested image + private void AssertImagesAreDifferent(Image expected, Image tested) + { + Assert.IsFalse(ToByteArray(expected).SequenceEqual(ToByteArray(tested))); + } + + /// + /// Converts an image to a byte array + /// + /// The image to convert + /// The format to use + /// An array of bytes representing the image + public static byte[] ToByteArray(Image imageIn) + { + using (MemoryStream ms = new MemoryStream()) + { + imageIn.Save(ms, ImageFormat.Jpeg); + return ms.ToArray(); + } + } } } \ No newline at end of file