From 14e9cc601ffc78105cfc0701974fada158320c72 Mon Sep 17 00:00:00 2001 From: Florian Levis Date: Fri, 8 Mar 2024 16:54:40 +0100 Subject: [PATCH 1/2] fix: add guards for MagickImage.Shave --- src/Magick.NET/MagickImage.cs | 7 +++++- .../MagickImageTests/TheShaveMethod.cs | 25 +++++++++++++++++++ 2 files changed, 31 insertions(+), 1 deletion(-) diff --git a/src/Magick.NET/MagickImage.cs b/src/Magick.NET/MagickImage.cs index a0a0e37055..f024ae59fc 100644 --- a/src/Magick.NET/MagickImage.cs +++ b/src/Magick.NET/MagickImage.cs @@ -6012,7 +6012,12 @@ public void Shave(int size) /// The number of pixels to shave top and bottom. /// Thrown when an error is raised by ImageMagick. public void Shave(int leftRight, int topBottom) - => _nativeInstance.Shave(leftRight, topBottom); + { + Throw.IfNegative(nameof(leftRight), leftRight); + Throw.IfNegative(nameof(topBottom), topBottom); + + _nativeInstance.Shave(leftRight, topBottom); + } /// /// Shear image (create parallelogram by sliding image by X or Y axis). diff --git a/tests/Magick.NET.Tests/MagickImageTests/TheShaveMethod.cs b/tests/Magick.NET.Tests/MagickImageTests/TheShaveMethod.cs index 97e9b672a6..db0c035d94 100644 --- a/tests/Magick.NET.Tests/MagickImageTests/TheShaveMethod.cs +++ b/tests/Magick.NET.Tests/MagickImageTests/TheShaveMethod.cs @@ -1,6 +1,7 @@ // Copyright Dirk Lemstra https://github.com/dlemstra/Magick.NET. // Licensed under the Apache License, Version 2.0. +using System; using ImageMagick; using Xunit; @@ -10,6 +11,30 @@ public partial class MagickImageTests { public class TheShaveMethod { + [Fact] + public void ShouldThrowExceptionWhenSizeIsNegative() + { + using var image = new MagickImage(Files.Builtin.Logo); + + Assert.Throws("leftRight", () => image.Shave(-1)); + } + + [Fact] + public void ShouldThrowExceptionWhenLeftRightIsNegative() + { + using var image = new MagickImage(Files.Builtin.Logo); + + Assert.Throws("leftRight", () => image.Shave(-1, 40)); + } + + [Fact] + public void ShouldThrowExceptionWhenTopBottomIsNegative() + { + using var image = new MagickImage(Files.Builtin.Logo); + + Assert.Throws("topBottom", () => image.Shave(20, -1)); + } + [Fact] public void ShouldShaveSizeFromEdges() { From 40761aa94f9ec6d058adc58abdc6b2b5b4a6ec0b Mon Sep 17 00:00:00 2001 From: Florian Levis Date: Fri, 8 Mar 2024 23:39:11 +0100 Subject: [PATCH 2/2] tests: remove image loading when testings parameters guards/exceptions --- tests/Magick.NET.Tests/MagickImageTests/TheShaveMethod.cs | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/tests/Magick.NET.Tests/MagickImageTests/TheShaveMethod.cs b/tests/Magick.NET.Tests/MagickImageTests/TheShaveMethod.cs index db0c035d94..293900f5ce 100644 --- a/tests/Magick.NET.Tests/MagickImageTests/TheShaveMethod.cs +++ b/tests/Magick.NET.Tests/MagickImageTests/TheShaveMethod.cs @@ -14,7 +14,7 @@ public class TheShaveMethod [Fact] public void ShouldThrowExceptionWhenSizeIsNegative() { - using var image = new MagickImage(Files.Builtin.Logo); + using var image = new MagickImage(); Assert.Throws("leftRight", () => image.Shave(-1)); } @@ -22,7 +22,7 @@ public void ShouldThrowExceptionWhenSizeIsNegative() [Fact] public void ShouldThrowExceptionWhenLeftRightIsNegative() { - using var image = new MagickImage(Files.Builtin.Logo); + using var image = new MagickImage(); Assert.Throws("leftRight", () => image.Shave(-1, 40)); } @@ -30,7 +30,7 @@ public void ShouldThrowExceptionWhenLeftRightIsNegative() [Fact] public void ShouldThrowExceptionWhenTopBottomIsNegative() { - using var image = new MagickImage(Files.Builtin.Logo); + using var image = new MagickImage(); Assert.Throws("topBottom", () => image.Shave(20, -1)); }