diff --git a/OpenNest.FrontEnd.Tests/ConsoleHost.cs b/OpenNest.FrontEnd.Tests/ConsoleHost.cs
new file mode 100644
index 00000000..d6deebc8
--- /dev/null
+++ b/OpenNest.FrontEnd.Tests/ConsoleHost.cs
@@ -0,0 +1,15 @@
+using System.Reflection;
+
+namespace OpenNest.FrontEnd.Tests;
+
+/// Runs the console front end in-process. Import with using static.
+internal static class ConsoleHost
+{
+ /// Calls NestConsole.Run and returns its exit code.
+ public static int RunConsole(params string[] args)
+ {
+ var method = Assembly.Load("OpenNest.Console").GetType("NestConsole")!
+ .GetMethod("Run", BindingFlags.Static | BindingFlags.Public)!;
+ return (int)method.Invoke(null, new object[] { args })!;
+ }
+}
diff --git a/OpenNest.FrontEnd.Tests/CuttingPlanFrontEndTests.cs b/OpenNest.FrontEnd.Tests/CuttingPlanFrontEndTests.cs
index 3560c48c..903c9e86 100644
--- a/OpenNest.FrontEnd.Tests/CuttingPlanFrontEndTests.cs
+++ b/OpenNest.FrontEnd.Tests/CuttingPlanFrontEndTests.cs
@@ -5,6 +5,7 @@ using OpenNest.Geometry;
using OpenNest.IO;
using OpenNest.Mcp;
using OpenNest.Mcp.Tools;
+using static OpenNest.FrontEnd.Tests.ConsoleHost;
namespace OpenNest.FrontEnd.Tests;
@@ -171,13 +172,6 @@ public class CuttingPlanFrontEndTests : IDisposable
Assert.False(part.HasManualLeadIns);
}
- private static int RunConsole(params string[] args)
- {
- var method = Assembly.Load("OpenNest.Console").GetType("NestConsole")!
- .GetMethod("Run", BindingFlags.Static | BindingFlags.Public)!;
- return (int)method.Invoke(null, new object[] { args })!;
- }
-
private static Nest Fixture(Program program, params Vector[] locations)
{
var nest = new Nest("fixture");
diff --git a/OpenNest.FrontEnd.Tests/NestingPipelineTests.cs b/OpenNest.FrontEnd.Tests/NestingPipelineTests.cs
index b6015588..953a768c 100644
--- a/OpenNest.FrontEnd.Tests/NestingPipelineTests.cs
+++ b/OpenNest.FrontEnd.Tests/NestingPipelineTests.cs
@@ -6,6 +6,7 @@ using OpenNest.Geometry;
using OpenNest.IO;
using OpenNest.Mcp;
using OpenNest.Mcp.Tools;
+using static OpenNest.FrontEnd.Tests.ConsoleHost;
namespace OpenNest.FrontEnd.Tests;
@@ -75,13 +76,6 @@ public class NestingPipelineTests : IDisposable
new[] { new StockUsage(job.Plates[0].Id, 999, 0) });
}
- private static int RunConsole(params string[] args)
- {
- var method = Assembly.Load("OpenNest.Console").GetType("NestConsole")!
- .GetMethod("Run", BindingFlags.Static | BindingFlags.Public)!;
- return (int)method.Invoke(null, new object[] { args })!;
- }
-
[Theory]
[InlineData("overlap", false, 2)]
[InlineData("overlap", true, 0)]
diff --git a/OpenNest.FrontEnd.Tests/RegexImportFailureTests.cs b/OpenNest.FrontEnd.Tests/RegexImportFailureTests.cs
index 38c44051..00933772 100644
--- a/OpenNest.FrontEnd.Tests/RegexImportFailureTests.cs
+++ b/OpenNest.FrontEnd.Tests/RegexImportFailureTests.cs
@@ -11,6 +11,7 @@ using OpenNest.Geometry;
using OpenNest.IO.Bending;
using OpenNest.Mcp;
using OpenNest.Mcp.Tools;
+using static OpenNest.FrontEnd.Tests.ConsoleHost;
using CadLayer = ACadSharp.Tables.Layer;
using CadLine = ACadSharp.Entities.Line;
@@ -136,13 +137,6 @@ public class RegexImportFailureTests : IDisposable
Assert.Equal(hash, Hash(bad));
}
- private static int RunConsole(params string[] args)
- {
- var method = Assembly.Load("OpenNest.Console").GetType("NestConsole")!
- .GetMethod("Run", BindingFlags.Static | BindingFlags.Public)!;
- return (int)method.Invoke(null, new object[] { args })!;
- }
-
private string WriteDxf(string name, bool marker)
{
var document = new CadDocument();