@@ -16,6 +16,7 @@ public class IntegrationTest
16
16
private const string pngBlack2x2px = "../../../TestData/Black.png" ;
17
17
private const string pngBlack4x4px = "../../../TestData/BlackDoubleSize.png" ;
18
18
private const string pngWhite2x2px = "../../../TestData/White.png" ;
19
+ private const string pngTransparent2x2px = "../../../TestData/pngTransparent2x2px.png" ;
19
20
20
21
[ Test ]
21
22
[ TestCase ( jpg0Rgb24 , jpg0Rgb24 , true ) ]
@@ -213,9 +214,11 @@ public void Diffmask(string pathPic1, string pathPic2, int expectedMeanError, in
213
214
Assert . That ( maskedDiff . PixelErrorPercentage , Is . EqualTo ( expectedPixelErrorPercentage ) , "PixelErrorPercentage" ) ;
214
215
}
215
216
216
- [ TestCase ( png0Rgba32 , png1Rgba32 , 0 , 0 , 0 , 0 ) ]
217
- [ TestCase ( jpg0Rgb24 , jpg1Rgb24 , 0 , 0 , 0 , 0 ) ]
218
- public void ShoulCalcDiffmaskImageSharp ( string pathPic1 , string pathPic2 , int expectedMeanError , int expectedAbsoluteError , int expectedPixelErrorCount , double expectedPixelErrorPercentage )
217
+ [ TestCase ( png0Rgba32 , png1Rgba32 , 0 , 0 , 0 , 0 , ResizeOption . DontResize ) ]
218
+ [ TestCase ( jpg0Rgb24 , jpg1Rgb24 , 0 , 0 , 0 , 0 , ResizeOption . DontResize ) ]
219
+ [ TestCase ( jpg0Rgb24 , jpg1Rgb24 , 0 , 0 , 0 , 0 , ResizeOption . Resize ) ]
220
+ [ TestCase ( pngBlack2x2px , pngBlack4x4px , 0 , 0 , 0 , 0 , ResizeOption . Resize ) ]
221
+ public void ShoulCalcDiffmaskImageSharpAndUseOutcome ( string pathPic1 , string pathPic2 , int expectedMeanError , int expectedAbsoluteError , int expectedPixelErrorCount , double expectedPixelErrorPercentage , ResizeOption resizeOption )
219
222
{
220
223
var absolutePathPic1 = Path . Combine ( AppContext . BaseDirectory , pathPic1 ) ;
221
224
var absolutePathPic2 = Path . Combine ( AppContext . BaseDirectory , pathPic2 ) ;
@@ -225,13 +228,13 @@ public void ShoulCalcDiffmaskImageSharp(string pathPic1, string pathPic2, int ex
225
228
using var absolutePic2 = Image . Load ( absolutePathPic2 ) ;
226
229
227
230
using ( var fileStreamDifferenceMask = File . Create ( differenceMaskPicPath ) )
228
- using ( var maskImage = ImageSharpCompare . CalcDiffMaskImage ( absolutePic1 , absolutePic2 ) )
231
+ using ( var maskImage = ImageSharpCompare . CalcDiffMaskImage ( absolutePic1 , absolutePic2 , resizeOption ) )
229
232
{
230
233
ImageExtensions . SaveAsPng ( maskImage , fileStreamDifferenceMask ) ;
231
234
}
232
235
233
236
using var differenceMaskPic = Image . Load ( differenceMaskPicPath ) ;
234
- var maskedDiff = ImageSharpCompare . CalcDiff ( absolutePic1 , absolutePic2 , differenceMaskPic ) ;
237
+ var maskedDiff = ImageSharpCompare . CalcDiff ( absolutePic1 , absolutePic2 , differenceMaskPic , resizeOption ) ;
235
238
File . Delete ( differenceMaskPicPath ) ;
236
239
237
240
Assert . That ( maskedDiff . AbsoluteError , Is . EqualTo ( expectedAbsoluteError ) , "AbsoluteError" ) ;
@@ -244,6 +247,53 @@ public void ShoulCalcDiffmaskImageSharp(string pathPic1, string pathPic2, int ex
244
247
AssertDisposeBehavior ( differenceMaskPic ) ;
245
248
}
246
249
250
+ [ TestCase ( pngWhite2x2px , pngBlack2x2px , pngTransparent2x2px , 765 , 12240 , 16 , 100d , ResizeOption . Resize ) ]
251
+ [ TestCase ( pngWhite2x2px , pngBlack2x2px , pngBlack4x4px , 765 , 12240 , 16 , 100d , ResizeOption . Resize ) ]
252
+ [ TestCase ( pngBlack2x2px , pngBlack2x2px , pngBlack4x4px , 0 , 0 , 0 , 0 , ResizeOption . Resize ) ]
253
+ [ TestCase ( pngBlack2x2px , pngBlack4x4px , pngBlack2x2px , 0 , 0 , 0 , 0 , ResizeOption . Resize ) ]
254
+ [ TestCase ( pngBlack4x4px , pngBlack2x2px , pngBlack2x2px , 0 , 0 , 0 , 0 , ResizeOption . Resize ) ]
255
+ public void ShoulUseDiffMask ( string pathPic1 , string pathPic2 , string pathPic3 , double expectedMeanError , int expectedAbsoluteError , int expectedPixelErrorCount , double expectedPixelErrorPercentage , ResizeOption resizeOption )
256
+ {
257
+ var absolutePathPic1 = Path . Combine ( AppContext . BaseDirectory , pathPic1 ) ;
258
+ var absolutePathPic2 = Path . Combine ( AppContext . BaseDirectory , pathPic2 ) ;
259
+ var differenceMaskPic = Path . Combine ( AppContext . BaseDirectory , pathPic3 ) ;
260
+ using var pic1 = Image . Load ( absolutePathPic1 ) ;
261
+ using var pic2 = Image . Load ( absolutePathPic2 ) ;
262
+ using var maskPic = Image . Load ( differenceMaskPic ) ;
263
+
264
+ var maskedDiff = ImageSharpCompare . CalcDiff ( pic1 , pic2 , maskPic , resizeOption ) ;
265
+
266
+ Assert . That ( maskedDiff . MeanError , Is . EqualTo ( expectedMeanError ) , "MeanError" ) ;
267
+ Assert . That ( maskedDiff . AbsoluteError , Is . EqualTo ( expectedAbsoluteError ) , "AbsoluteError" ) ;
268
+ Assert . That ( maskedDiff . PixelErrorCount , Is . EqualTo ( expectedPixelErrorCount ) , "PixelErrorCount" ) ;
269
+ Assert . That ( maskedDiff . PixelErrorPercentage , Is . EqualTo ( expectedPixelErrorPercentage ) , "PixelErrorPercentage" ) ;
270
+
271
+ AssertDisposeBehavior ( pic1 ) ;
272
+ AssertDisposeBehavior ( pic2 ) ;
273
+ AssertDisposeBehavior ( maskPic ) ;
274
+ }
275
+
276
+ [ TestCase ( pngBlack2x2px , pngBlack2x2px , pngBlack4x4px ) ]
277
+ [ TestCase ( pngBlack2x2px , pngBlack4x4px , pngBlack2x2px ) ]
278
+ [ TestCase ( pngBlack4x4px , pngBlack2x2px , pngBlack2x2px ) ]
279
+ public void ShoulThrowUsingInvalidImageDimenstionsDiffMask ( string pathPic1 , string pathPic2 , string pathPic3 )
280
+ {
281
+ var absolutePathPic1 = Path . Combine ( AppContext . BaseDirectory , pathPic1 ) ;
282
+ var absolutePathPic2 = Path . Combine ( AppContext . BaseDirectory , pathPic2 ) ;
283
+ var differenceMaskPic = Path . Combine ( AppContext . BaseDirectory , pathPic3 ) ;
284
+ using var pic1 = Image . Load ( absolutePathPic1 ) ;
285
+ using var pic2 = Image . Load ( absolutePathPic2 ) ;
286
+ using var maskPic = Image . Load ( differenceMaskPic ) ;
287
+
288
+ var exception = Assert . Throws < ImageSharpCompareException > ( ( ) => ImageSharpCompare . CalcDiff ( pic1 , pic2 , maskPic , ResizeOption . DontResize ) ) ;
289
+
290
+ Assert . That ( exception ? . Message , Is . EqualTo ( "Size of images differ." ) ) ;
291
+
292
+ AssertDisposeBehavior ( pic1 ) ;
293
+ AssertDisposeBehavior ( pic2 ) ;
294
+ AssertDisposeBehavior ( maskPic ) ;
295
+ }
296
+
247
297
private void AssertDisposeBehavior ( Image image )
248
298
{
249
299
const string imageSharpPrivateFieldNameIsDisposed = "isDisposed" ;
0 commit comments