diff --git a/tests/ImageSharp.Tests/Processing/Convolution/DetectEdgesTest.cs b/tests/ImageSharp.Tests/Processing/Convolution/DetectEdgesTest.cs
new file mode 100644
index 0000000000..4e5a230ec0
--- /dev/null
+++ b/tests/ImageSharp.Tests/Processing/Convolution/DetectEdgesTest.cs
@@ -0,0 +1,62 @@
+//
+// Copyright (c) James Jackson-South and contributors.
+// Licensed under the Apache License, Version 2.0.
+//
+
+namespace ImageSharp.Tests.Processing.Convolution
+{
+ using ImageSharp.PixelFormats;
+ using ImageSharp.Processing;
+
+ using Xunit;
+
+ public class DetectEdgesTest : FileTestBase
+ {
+ public static readonly TheoryData DetectEdgesFilters
+ = new TheoryData
+ {
+ EdgeDetection.Kayyali,
+ EdgeDetection.Kirsch,
+ EdgeDetection.Lapacian3X3,
+ EdgeDetection.Lapacian5X5,
+ EdgeDetection.LaplacianOfGaussian,
+ EdgeDetection.Prewitt,
+ EdgeDetection.RobertsCross,
+ EdgeDetection.Robinson,
+ EdgeDetection.Scharr,
+ EdgeDetection.Sobel
+ };
+
+ [Theory]
+ [WithFileCollection(nameof(AllBmpFiles), nameof(DetectEdgesFilters), StandardPixelTypes)]
+ public void ImageShouldApplyDetectEdgesFilter(TestImageProvider provider, EdgeDetection detector)
+ where TPixel : struct, IPixel
+ {
+ using (Image image = provider.GetImage())
+ {
+ image.DetectEdges(detector)
+ .DebugSave(provider, detector.ToString(), Extensions.Bmp);
+ }
+ }
+
+ [Theory]
+ [WithFileCollection(nameof(AllBmpFiles), nameof(DetectEdgesFilters), StandardPixelTypes)]
+ public void ImageShouldApplyDetectEdgesFilterInBox(TestImageProvider provider, EdgeDetection detector)
+ where TPixel : struct, IPixel
+ {
+ using (Image source = provider.GetImage())
+ using (var image = new Image(source))
+ {
+ var bounds = new Rectangle(10, 10, image.Width / 2, image.Height / 2);
+
+ image.DetectEdges(detector, bounds)
+ .DebugSave(provider, detector.ToString(), Extensions.Bmp);
+
+ // Draw identical shapes over the bounded and compare to ensure changes are constrained.
+ image.Fill(NamedColors.HotPink, bounds);
+ source.Fill(NamedColors.HotPink, bounds);
+ ImageComparer.CheckSimilarity(image, source);
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/tests/ImageSharp.Tests/Processors/Filters/DetectEdgesTest.cs b/tests/ImageSharp.Tests/Processors/Filters/DetectEdgesTest.cs
deleted file mode 100644
index f3976ae0b7..0000000000
--- a/tests/ImageSharp.Tests/Processors/Filters/DetectEdgesTest.cs
+++ /dev/null
@@ -1,67 +0,0 @@
-//
-// Copyright (c) James Jackson-South and contributors.
-// Licensed under the Apache License, Version 2.0.
-//
-
-namespace ImageSharp.Tests
-{
- using ImageSharp.Processing;
- using System.IO;
-
- using ImageSharp.PixelFormats;
-
- using Xunit;
-
- public class DetectEdgesTest : FileTestBase
- {
- public static readonly TheoryData DetectEdgesFilters
- = new TheoryData
- {
- EdgeDetection.Kayyali,
- EdgeDetection.Kirsch,
- EdgeDetection.Lapacian3X3,
- EdgeDetection.Lapacian5X5,
- EdgeDetection.LaplacianOfGaussian,
- EdgeDetection.Prewitt,
- EdgeDetection.RobertsCross,
- EdgeDetection.Robinson,
- EdgeDetection.Scharr,
- EdgeDetection.Sobel
- };
-
- [Theory]
- [MemberData(nameof(DetectEdgesFilters))]
- public void ImageShouldApplyDetectEdgesFilter(EdgeDetection detector)
- {
- string path = this.CreateOutputDirectory("DetectEdges");
-
- foreach (TestFile file in Files)
- {
- string filename = file.GetFileName(detector);
- using (Image image = file.CreateImage())
- using (FileStream output = File.OpenWrite($"{path}/{filename}"))
- {
- image.DetectEdges(detector).Save(output);
- }
- }
- }
-
- [Theory]
- [MemberData(nameof(DetectEdgesFilters))]
- public void ImageShouldApplyDetectEdgesFilterInBox(EdgeDetection detector)
- {
- string path = this.CreateOutputDirectory("DetectEdges");
-
- foreach (TestFile file in Files)
- {
- string filename = file.GetFileName(detector + "-InBox");
- using (Image image = file.CreateImage())
- using (FileStream output = File.OpenWrite($"{path}/{filename}"))
- {
- image.DetectEdges(detector, new Rectangle(image.Width / 4, image.Height / 4, image.Width / 2, image.Height / 2))
- .Save(output);
- }
- }
- }
- }
-}
\ No newline at end of file