refactor: organize test project into subdirectories by feature area

Move 43 root-level test files into feature-specific subdirectories
mirroring the main codebase structure: Geometry, Fill, BestFit, CutOffs,
CuttingStrategy, Engine, IO. Update namespaces to match folder paths.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-04-01 20:46:43 -04:00
parent 7a6c407edd
commit 3e340e67e0
43 changed files with 62 additions and 61 deletions

View File

@@ -2,7 +2,7 @@ using OpenNest.CNC;
using OpenNest.Engine.BestFit;
using OpenNest.Geometry;
namespace OpenNest.Tests;
namespace OpenNest.Tests.BestFit;
public class NfpBestFitIntegrationTests
{

View File

@@ -4,7 +4,7 @@ using OpenNest.Engine.BestFit;
using OpenNest.Geometry;
using OpenNest.Math;
namespace OpenNest.Tests;
namespace OpenNest.Tests.BestFit;
public class NfpSlideStrategyTests
{

View File

@@ -3,7 +3,7 @@ using System.Linq;
using OpenNest.CNC;
using OpenNest.Geometry;
namespace OpenNest.Tests;
namespace OpenNest.Tests.CutOffs;
public class CutOffGeometryTests
{

View File

@@ -2,7 +2,7 @@ using OpenNest.CNC;
using OpenNest.Geometry;
using OpenNest.IO;
namespace OpenNest.Tests;
namespace OpenNest.Tests.CutOffs;
public class CutOffSerializationTests
{

View File

@@ -2,7 +2,7 @@ using System.Linq;
using OpenNest.CNC;
using OpenNest.Geometry;
namespace OpenNest.Tests;
namespace OpenNest.Tests.CutOffs;
public class CutOffTests
{
@@ -26,11 +26,11 @@ public class CutOffTests
public void Plate_Utilization_ExcludesCutOffParts()
{
var pgm = new Program();
pgm.Codes.Add(new RapidMove(new Geometry.Vector(0, 0)));
pgm.Codes.Add(new LinearMove(new Geometry.Vector(10, 0)));
pgm.Codes.Add(new LinearMove(new Geometry.Vector(10, 10)));
pgm.Codes.Add(new LinearMove(new Geometry.Vector(0, 10)));
pgm.Codes.Add(new LinearMove(new Geometry.Vector(0, 0)));
pgm.Codes.Add(new RapidMove(new Vector(0, 0)));
pgm.Codes.Add(new LinearMove(new Vector(10, 0)));
pgm.Codes.Add(new LinearMove(new Vector(10, 10)));
pgm.Codes.Add(new LinearMove(new Vector(0, 10)));
pgm.Codes.Add(new LinearMove(new Vector(0, 0)));
var realDrawing = new Drawing("real", pgm);
var cutoffDrawing = new Drawing("cutoff", new Program()) { IsCutOff = true };
@@ -47,11 +47,11 @@ public class CutOffTests
public void Plate_HasOverlappingParts_SkipsCutOffParts()
{
var pgm = new Program();
pgm.Codes.Add(new RapidMove(new Geometry.Vector(0, 0)));
pgm.Codes.Add(new LinearMove(new Geometry.Vector(10, 0)));
pgm.Codes.Add(new LinearMove(new Geometry.Vector(10, 10)));
pgm.Codes.Add(new LinearMove(new Geometry.Vector(0, 10)));
pgm.Codes.Add(new LinearMove(new Geometry.Vector(0, 0)));
pgm.Codes.Add(new RapidMove(new Vector(0, 0)));
pgm.Codes.Add(new LinearMove(new Vector(10, 0)));
pgm.Codes.Add(new LinearMove(new Vector(10, 10)));
pgm.Codes.Add(new LinearMove(new Vector(0, 10)));
pgm.Codes.Add(new LinearMove(new Vector(0, 0)));
var realDrawing = new Drawing("real", pgm);
var cutoffDrawing = new Drawing("cutoff", pgm) { IsCutOff = true };
@@ -220,7 +220,7 @@ public class CutOffTests
public void Plate_RegenerateCutOffs_MaterializesParts()
{
var plate = new Plate(100, 50);
var cutoff = new CutOff(new Geometry.Vector(25, 10), CutOffAxis.Vertical);
var cutoff = new CutOff(new Vector(25, 10), CutOffAxis.Vertical);
plate.CutOffs.Add(cutoff);
plate.RegenerateCutOffs(new CutOffSettings());
@@ -233,7 +233,7 @@ public class CutOffTests
public void Plate_RegenerateCutOffs_ReplacesOldParts()
{
var plate = new Plate(100, 50);
var cutoff = new CutOff(new Geometry.Vector(25, 10), CutOffAxis.Vertical);
var cutoff = new CutOff(new Vector(25, 10), CutOffAxis.Vertical);
plate.CutOffs.Add(cutoff);
var settings = new CutOffSettings();
@@ -247,14 +247,14 @@ public class CutOffTests
public void Plate_RegenerateCutOffs_DoesNotAffectRegularParts()
{
var pgm = new OpenNest.CNC.Program();
pgm.Codes.Add(new OpenNest.CNC.RapidMove(new Geometry.Vector(0, 0)));
pgm.Codes.Add(new OpenNest.CNC.LinearMove(new Geometry.Vector(5, 5)));
pgm.Codes.Add(new OpenNest.CNC.RapidMove(new Vector(0, 0)));
pgm.Codes.Add(new OpenNest.CNC.LinearMove(new Vector(5, 5)));
var drawing = new Drawing("real", pgm);
var plate = new Plate(100, 50);
plate.Parts.Add(new Part(drawing));
var cutoff = new CutOff(new Geometry.Vector(25, 10), CutOffAxis.Vertical);
var cutoff = new CutOff(new Vector(25, 10), CutOffAxis.Vertical);
plate.CutOffs.Add(cutoff);
plate.RegenerateCutOffs(new CutOffSettings());

View File

@@ -2,7 +2,7 @@ using OpenNest.CNC;
using OpenNest.CNC.CuttingStrategy;
using OpenNest.Geometry;
namespace OpenNest.Tests;
namespace OpenNest.Tests.CuttingStrategy;
public class CuttingResultTests
{

View File

@@ -4,7 +4,7 @@ using OpenNest.Engine;
using OpenNest.Engine.Sequencing;
using OpenNest.Geometry;
namespace OpenNest.Tests;
namespace OpenNest.Tests.CuttingStrategy;
public class LeadInAssignerTests
{

View File

@@ -2,7 +2,7 @@ using OpenNest.CNC;
using OpenNest.CNC.CuttingStrategy;
using OpenNest.Geometry;
namespace OpenNest.Tests;
namespace OpenNest.Tests.CuttingStrategy;
public class LeadInLayerTagTests
{

View File

@@ -1,7 +1,7 @@
using OpenNest.CNC;
using OpenNest.Geometry;
namespace OpenNest.Tests;
namespace OpenNest.Tests.CuttingStrategy;
public class MotionSuppressedTests
{

View File

@@ -2,7 +2,7 @@ using OpenNest.CNC;
using OpenNest.CNC.CuttingStrategy;
using OpenNest.Geometry;
namespace OpenNest.Tests;
namespace OpenNest.Tests.CuttingStrategy;
public class PartLeadInTests
{

View File

@@ -3,7 +3,7 @@ using OpenNest.Geometry;
using OpenNest.IO;
using Xunit.Abstractions;
namespace OpenNest.Tests;
namespace OpenNest.Tests.Engine;
public class EngineOverlapTests
{

View File

@@ -1,6 +1,6 @@
using OpenNest.Geometry;
namespace OpenNest.Tests;
namespace OpenNest.Tests.Engine;
public class EngineRefactorSmokeTests
{

View File

@@ -1,4 +1,4 @@
namespace OpenNest.Tests;
namespace OpenNest.Tests.Engine;
public class NestPhaseExtensionsTests
{

View File

@@ -1,6 +1,6 @@
using OpenNest.Geometry;
namespace OpenNest.Tests;
namespace OpenNest.Tests.Engine;
public class NestProgressTests
{

View File

@@ -4,7 +4,7 @@ using OpenNest.Geometry;
using OpenNest.Math;
using OpenNest.Shapes;
namespace OpenNest.Tests;
namespace OpenNest.Tests.Engine;
public class PartClassifierTests
{

View File

@@ -1,7 +1,7 @@
using OpenNest.CNC;
using OpenNest.Geometry;
namespace OpenNest.Tests;
namespace OpenNest.Tests.Engine;
public class PartFlagTests
{

View File

@@ -3,7 +3,7 @@ using OpenNest.Engine;
using OpenNest.Engine.RapidPlanning;
using OpenNest.Engine.Sequencing;
namespace OpenNest.Tests;
namespace OpenNest.Tests.Engine;
public class PlateProcessorTests
{

View File

@@ -2,7 +2,7 @@ using OpenNest.Engine;
using OpenNest.Engine.Fill;
using OpenNest.Geometry;
namespace OpenNest.Tests;
namespace OpenNest.Tests.Engine;
public class RemnantEngineTests
{

View File

@@ -1,6 +1,6 @@
using OpenNest.Engine.Fill;
namespace OpenNest.Tests;
namespace OpenNest.Tests.Fill;
public class AccumulatingProgressTests
{

View File

@@ -3,7 +3,7 @@ using OpenNest.Engine.Fill;
using OpenNest.Geometry;
using OpenNest.Math;
namespace OpenNest.Tests;
namespace OpenNest.Tests.Fill;
public class AngleCandidateBuilderTests
{

View File

@@ -1,4 +1,4 @@
namespace OpenNest.Tests;
namespace OpenNest.Tests.Fill;
public class BestCombinationTests
{

View File

@@ -4,7 +4,7 @@ using OpenNest.Geometry;
using Xunit;
using System.Collections.Generic;
namespace OpenNest.Tests
namespace OpenNest.Tests.Fill
{
public class CompactorTests
{

View File

@@ -2,7 +2,7 @@ using OpenNest.Engine;
using OpenNest.Engine.Fill;
using OpenNest.Geometry;
namespace OpenNest.Tests;
namespace OpenNest.Tests.Fill;
public class DefaultFillComparerTests
{

View File

@@ -2,7 +2,7 @@ using OpenNest.CNC;
using OpenNest.Engine.Fill;
using OpenNest.Geometry;
namespace OpenNest.Tests;
namespace OpenNest.Tests.Fill;
public class FillExtentsTests
{

View File

@@ -3,7 +3,7 @@ using OpenNest.Engine.Fill;
using OpenNest.Engine.Strategies;
using OpenNest.Geometry;
namespace OpenNest.Tests;
namespace OpenNest.Tests.Fill;
public class FillWithDirectionPreferenceTests
{

View File

@@ -1,6 +1,7 @@
using OpenNest.Geometry;
using OpenNest.Engine.Fill;
namespace OpenNest.Tests;
namespace OpenNest.Tests.Fill;
public class FillScoreTests
{
@@ -48,7 +49,7 @@ public class FillScoreTests
[Fact]
public void Compute_NullParts_ReturnsDefault()
{
var score = FillScore.Compute(null, new Geometry.Box(0, 0, 100, 100));
var score = FillScore.Compute(null, new Box(0, 0, 100, 100));
Assert.Equal(0, score.Count);
}
@@ -56,7 +57,7 @@ public class FillScoreTests
[Fact]
public void Compute_EmptyParts_ReturnsDefault()
{
var score = FillScore.Compute(new System.Collections.Generic.List<Part>(), new Geometry.Box(0, 0, 100, 100));
var score = FillScore.Compute(new System.Collections.Generic.List<Part>(), new Box(0, 0, 100, 100));
Assert.Equal(0, score.Count);
}
@@ -70,7 +71,7 @@ public class FillScoreTests
TestHelpers.MakePartAt(20, 0, 10),
TestHelpers.MakePartAt(40, 0, 10)
};
var score = FillScore.Compute(parts, new Geometry.Box(0, 0, 100, 100));
var score = FillScore.Compute(parts, new Box(0, 0, 100, 100));
Assert.Equal(3, score.Count);
Assert.True(score.Density > 0);

View File

@@ -1,7 +1,7 @@
using OpenNest.Engine.Fill;
using OpenNest.Geometry;
namespace OpenNest.Tests;
namespace OpenNest.Tests.Fill;
public class IterativeShrinkFillerTests
{

View File

@@ -1,7 +1,7 @@
using OpenNest.Engine.Fill;
using OpenNest.Geometry;
namespace OpenNest.Tests;
namespace OpenNest.Tests.Fill;
public class PairFillerTests
{

View File

@@ -4,7 +4,7 @@ using OpenNest.Geometry;
using OpenNest.Math;
using Xunit.Abstractions;
namespace OpenNest.Tests;
namespace OpenNest.Tests.Fill;
public class PairOverlapDiagnosticTests
{

View File

@@ -1,7 +1,7 @@
using OpenNest.Engine.Fill;
using OpenNest.Geometry;
namespace OpenNest.Tests;
namespace OpenNest.Tests.Fill;
public class PatternTilerTests
{

View File

@@ -1,7 +1,7 @@
using OpenNest.Engine.Fill;
using OpenNest.Geometry;
namespace OpenNest.Tests;
namespace OpenNest.Tests.Fill;
public class RemnantFillerTests2
{

View File

@@ -2,7 +2,7 @@ using OpenNest.Engine.Fill;
using OpenNest.Geometry;
using OpenNest.IO;
namespace OpenNest.Tests;
namespace OpenNest.Tests.Fill;
public class RemnantFinderTests
{

View File

@@ -1,7 +1,7 @@
using OpenNest.Engine.Fill;
using OpenNest.Geometry;
namespace OpenNest.Tests;
namespace OpenNest.Tests.Fill;
public class ShrinkFillerTests
{

View File

@@ -2,7 +2,7 @@ using OpenNest.Geometry;
using OpenNest.Math;
using System.Collections.Generic;
namespace OpenNest.Tests;
namespace OpenNest.Tests.Geometry;
public class CollisionTests
{

View File

@@ -1,7 +1,7 @@
using OpenNest.Converters;
using OpenNest.Geometry;
namespace OpenNest.Tests;
namespace OpenNest.Tests.Geometry;
public class ContourClassificationTests
{

View File

@@ -3,7 +3,7 @@ using OpenNest.Math;
using Xunit;
using System.Linq;
namespace OpenNest.Tests;
namespace OpenNest.Tests.Geometry;
public class EllipseConverterTests
{

View File

@@ -4,7 +4,7 @@ using System.IO;
using System.Linq;
using Xunit;
namespace OpenNest.Tests;
namespace OpenNest.Tests.Geometry;
public class GeometrySimplifierTests
{

View File

@@ -1,6 +1,6 @@
using OpenNest.Geometry;
namespace OpenNest.Tests;
namespace OpenNest.Tests.Geometry;
public class PolyLabelTests
{

View File

@@ -3,7 +3,7 @@ using OpenNest.Engine.BestFit;
using OpenNest.Geometry;
using OpenNest.Math;
namespace OpenNest.Tests;
namespace OpenNest.Tests.Geometry;
public class PolygonHelperTests
{

View File

@@ -2,7 +2,7 @@ using OpenNest.Geometry;
using OpenNest.Math;
using Xunit;
namespace OpenNest.Tests;
namespace OpenNest.Tests.Geometry;
public class SplineConverterTests
{

View File

@@ -2,7 +2,7 @@ using OpenNest.Converters;
using OpenNest.Geometry;
using OpenNest.IO;
namespace OpenNest.Tests;
namespace OpenNest.Tests.IO;
public class DxfRoundtripTests
{

View File

@@ -3,7 +3,7 @@ using OpenNest.Geometry;
using OpenNest.IO;
using System.Linq;
namespace OpenNest.Tests;
namespace OpenNest.Tests.IO;
public class NestBendSerializationTests
{

View File

@@ -6,7 +6,7 @@ using OpenNest.Geometry;
using OpenNest.IO;
using Xunit.Abstractions;
namespace OpenNest.Tests;
namespace OpenNest.Tests.Strategies;
public class StrategyOverlapTests
{