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
@@ -2,7 +2,7 @@ using OpenNest.CNC;
using OpenNest.Engine.BestFit; using OpenNest.Engine.BestFit;
using OpenNest.Geometry; using OpenNest.Geometry;
namespace OpenNest.Tests; namespace OpenNest.Tests.BestFit;
public class NfpBestFitIntegrationTests public class NfpBestFitIntegrationTests
{ {
@@ -4,7 +4,7 @@ using OpenNest.Engine.BestFit;
using OpenNest.Geometry; using OpenNest.Geometry;
using OpenNest.Math; using OpenNest.Math;
namespace OpenNest.Tests; namespace OpenNest.Tests.BestFit;
public class NfpSlideStrategyTests public class NfpSlideStrategyTests
{ {
@@ -3,7 +3,7 @@ using System.Linq;
using OpenNest.CNC; using OpenNest.CNC;
using OpenNest.Geometry; using OpenNest.Geometry;
namespace OpenNest.Tests; namespace OpenNest.Tests.CutOffs;
public class CutOffGeometryTests public class CutOffGeometryTests
{ {
@@ -2,7 +2,7 @@ using OpenNest.CNC;
using OpenNest.Geometry; using OpenNest.Geometry;
using OpenNest.IO; using OpenNest.IO;
namespace OpenNest.Tests; namespace OpenNest.Tests.CutOffs;
public class CutOffSerializationTests public class CutOffSerializationTests
{ {
@@ -2,7 +2,7 @@ using System.Linq;
using OpenNest.CNC; using OpenNest.CNC;
using OpenNest.Geometry; using OpenNest.Geometry;
namespace OpenNest.Tests; namespace OpenNest.Tests.CutOffs;
public class CutOffTests public class CutOffTests
{ {
@@ -26,11 +26,11 @@ public class CutOffTests
public void Plate_Utilization_ExcludesCutOffParts() public void Plate_Utilization_ExcludesCutOffParts()
{ {
var pgm = new Program(); var pgm = new Program();
pgm.Codes.Add(new RapidMove(new Geometry.Vector(0, 0))); pgm.Codes.Add(new RapidMove(new Vector(0, 0)));
pgm.Codes.Add(new LinearMove(new Geometry.Vector(10, 0))); pgm.Codes.Add(new LinearMove(new Vector(10, 0)));
pgm.Codes.Add(new LinearMove(new Geometry.Vector(10, 10))); pgm.Codes.Add(new LinearMove(new Vector(10, 10)));
pgm.Codes.Add(new LinearMove(new Geometry.Vector(0, 10))); pgm.Codes.Add(new LinearMove(new Vector(0, 10)));
pgm.Codes.Add(new LinearMove(new Geometry.Vector(0, 0))); pgm.Codes.Add(new LinearMove(new Vector(0, 0)));
var realDrawing = new Drawing("real", pgm); var realDrawing = new Drawing("real", pgm);
var cutoffDrawing = new Drawing("cutoff", new Program()) { IsCutOff = true }; var cutoffDrawing = new Drawing("cutoff", new Program()) { IsCutOff = true };
@@ -47,11 +47,11 @@ public class CutOffTests
public void Plate_HasOverlappingParts_SkipsCutOffParts() public void Plate_HasOverlappingParts_SkipsCutOffParts()
{ {
var pgm = new Program(); var pgm = new Program();
pgm.Codes.Add(new RapidMove(new Geometry.Vector(0, 0))); pgm.Codes.Add(new RapidMove(new Vector(0, 0)));
pgm.Codes.Add(new LinearMove(new Geometry.Vector(10, 0))); pgm.Codes.Add(new LinearMove(new Vector(10, 0)));
pgm.Codes.Add(new LinearMove(new Geometry.Vector(10, 10))); pgm.Codes.Add(new LinearMove(new Vector(10, 10)));
pgm.Codes.Add(new LinearMove(new Geometry.Vector(0, 10))); pgm.Codes.Add(new LinearMove(new Vector(0, 10)));
pgm.Codes.Add(new LinearMove(new Geometry.Vector(0, 0))); pgm.Codes.Add(new LinearMove(new Vector(0, 0)));
var realDrawing = new Drawing("real", pgm); var realDrawing = new Drawing("real", pgm);
var cutoffDrawing = new Drawing("cutoff", pgm) { IsCutOff = true }; var cutoffDrawing = new Drawing("cutoff", pgm) { IsCutOff = true };
@@ -220,7 +220,7 @@ public class CutOffTests
public void Plate_RegenerateCutOffs_MaterializesParts() public void Plate_RegenerateCutOffs_MaterializesParts()
{ {
var plate = new Plate(100, 50); 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.CutOffs.Add(cutoff);
plate.RegenerateCutOffs(new CutOffSettings()); plate.RegenerateCutOffs(new CutOffSettings());
@@ -233,7 +233,7 @@ public class CutOffTests
public void Plate_RegenerateCutOffs_ReplacesOldParts() public void Plate_RegenerateCutOffs_ReplacesOldParts()
{ {
var plate = new Plate(100, 50); 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.CutOffs.Add(cutoff);
var settings = new CutOffSettings(); var settings = new CutOffSettings();
@@ -247,14 +247,14 @@ public class CutOffTests
public void Plate_RegenerateCutOffs_DoesNotAffectRegularParts() public void Plate_RegenerateCutOffs_DoesNotAffectRegularParts()
{ {
var pgm = new OpenNest.CNC.Program(); var pgm = new OpenNest.CNC.Program();
pgm.Codes.Add(new OpenNest.CNC.RapidMove(new Geometry.Vector(0, 0))); pgm.Codes.Add(new OpenNest.CNC.RapidMove(new Vector(0, 0)));
pgm.Codes.Add(new OpenNest.CNC.LinearMove(new Geometry.Vector(5, 5))); pgm.Codes.Add(new OpenNest.CNC.LinearMove(new Vector(5, 5)));
var drawing = new Drawing("real", pgm); var drawing = new Drawing("real", pgm);
var plate = new Plate(100, 50); var plate = new Plate(100, 50);
plate.Parts.Add(new Part(drawing)); 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.CutOffs.Add(cutoff);
plate.RegenerateCutOffs(new CutOffSettings()); plate.RegenerateCutOffs(new CutOffSettings());
@@ -2,7 +2,7 @@ using OpenNest.CNC;
using OpenNest.CNC.CuttingStrategy; using OpenNest.CNC.CuttingStrategy;
using OpenNest.Geometry; using OpenNest.Geometry;
namespace OpenNest.Tests; namespace OpenNest.Tests.CuttingStrategy;
public class CuttingResultTests public class CuttingResultTests
{ {
@@ -4,7 +4,7 @@ using OpenNest.Engine;
using OpenNest.Engine.Sequencing; using OpenNest.Engine.Sequencing;
using OpenNest.Geometry; using OpenNest.Geometry;
namespace OpenNest.Tests; namespace OpenNest.Tests.CuttingStrategy;
public class LeadInAssignerTests public class LeadInAssignerTests
{ {
@@ -2,7 +2,7 @@ using OpenNest.CNC;
using OpenNest.CNC.CuttingStrategy; using OpenNest.CNC.CuttingStrategy;
using OpenNest.Geometry; using OpenNest.Geometry;
namespace OpenNest.Tests; namespace OpenNest.Tests.CuttingStrategy;
public class LeadInLayerTagTests public class LeadInLayerTagTests
{ {
@@ -1,7 +1,7 @@
using OpenNest.CNC; using OpenNest.CNC;
using OpenNest.Geometry; using OpenNest.Geometry;
namespace OpenNest.Tests; namespace OpenNest.Tests.CuttingStrategy;
public class MotionSuppressedTests public class MotionSuppressedTests
{ {
@@ -2,7 +2,7 @@ using OpenNest.CNC;
using OpenNest.CNC.CuttingStrategy; using OpenNest.CNC.CuttingStrategy;
using OpenNest.Geometry; using OpenNest.Geometry;
namespace OpenNest.Tests; namespace OpenNest.Tests.CuttingStrategy;
public class PartLeadInTests public class PartLeadInTests
{ {
@@ -3,7 +3,7 @@ using OpenNest.Geometry;
using OpenNest.IO; using OpenNest.IO;
using Xunit.Abstractions; using Xunit.Abstractions;
namespace OpenNest.Tests; namespace OpenNest.Tests.Engine;
public class EngineOverlapTests public class EngineOverlapTests
{ {
@@ -1,6 +1,6 @@
using OpenNest.Geometry; using OpenNest.Geometry;
namespace OpenNest.Tests; namespace OpenNest.Tests.Engine;
public class EngineRefactorSmokeTests public class EngineRefactorSmokeTests
{ {
@@ -1,4 +1,4 @@
namespace OpenNest.Tests; namespace OpenNest.Tests.Engine;
public class NestPhaseExtensionsTests public class NestPhaseExtensionsTests
{ {
@@ -1,6 +1,6 @@
using OpenNest.Geometry; using OpenNest.Geometry;
namespace OpenNest.Tests; namespace OpenNest.Tests.Engine;
public class NestProgressTests public class NestProgressTests
{ {
@@ -4,7 +4,7 @@ using OpenNest.Geometry;
using OpenNest.Math; using OpenNest.Math;
using OpenNest.Shapes; using OpenNest.Shapes;
namespace OpenNest.Tests; namespace OpenNest.Tests.Engine;
public class PartClassifierTests public class PartClassifierTests
{ {
@@ -1,7 +1,7 @@
using OpenNest.CNC; using OpenNest.CNC;
using OpenNest.Geometry; using OpenNest.Geometry;
namespace OpenNest.Tests; namespace OpenNest.Tests.Engine;
public class PartFlagTests public class PartFlagTests
{ {
@@ -3,7 +3,7 @@ using OpenNest.Engine;
using OpenNest.Engine.RapidPlanning; using OpenNest.Engine.RapidPlanning;
using OpenNest.Engine.Sequencing; using OpenNest.Engine.Sequencing;
namespace OpenNest.Tests; namespace OpenNest.Tests.Engine;
public class PlateProcessorTests public class PlateProcessorTests
{ {
@@ -2,7 +2,7 @@ using OpenNest.Engine;
using OpenNest.Engine.Fill; using OpenNest.Engine.Fill;
using OpenNest.Geometry; using OpenNest.Geometry;
namespace OpenNest.Tests; namespace OpenNest.Tests.Engine;
public class RemnantEngineTests public class RemnantEngineTests
{ {
@@ -1,6 +1,6 @@
using OpenNest.Engine.Fill; using OpenNest.Engine.Fill;
namespace OpenNest.Tests; namespace OpenNest.Tests.Fill;
public class AccumulatingProgressTests public class AccumulatingProgressTests
{ {
@@ -3,7 +3,7 @@ using OpenNest.Engine.Fill;
using OpenNest.Geometry; using OpenNest.Geometry;
using OpenNest.Math; using OpenNest.Math;
namespace OpenNest.Tests; namespace OpenNest.Tests.Fill;
public class AngleCandidateBuilderTests public class AngleCandidateBuilderTests
{ {
@@ -1,4 +1,4 @@
namespace OpenNest.Tests; namespace OpenNest.Tests.Fill;
public class BestCombinationTests public class BestCombinationTests
{ {
@@ -4,7 +4,7 @@ using OpenNest.Geometry;
using Xunit; using Xunit;
using System.Collections.Generic; using System.Collections.Generic;
namespace OpenNest.Tests namespace OpenNest.Tests.Fill
{ {
public class CompactorTests public class CompactorTests
{ {
@@ -2,7 +2,7 @@ using OpenNest.Engine;
using OpenNest.Engine.Fill; using OpenNest.Engine.Fill;
using OpenNest.Geometry; using OpenNest.Geometry;
namespace OpenNest.Tests; namespace OpenNest.Tests.Fill;
public class DefaultFillComparerTests public class DefaultFillComparerTests
{ {
@@ -2,7 +2,7 @@ using OpenNest.CNC;
using OpenNest.Engine.Fill; using OpenNest.Engine.Fill;
using OpenNest.Geometry; using OpenNest.Geometry;
namespace OpenNest.Tests; namespace OpenNest.Tests.Fill;
public class FillExtentsTests public class FillExtentsTests
{ {
@@ -3,7 +3,7 @@ using OpenNest.Engine.Fill;
using OpenNest.Engine.Strategies; using OpenNest.Engine.Strategies;
using OpenNest.Geometry; using OpenNest.Geometry;
namespace OpenNest.Tests; namespace OpenNest.Tests.Fill;
public class FillWithDirectionPreferenceTests public class FillWithDirectionPreferenceTests
{ {
@@ -1,6 +1,7 @@
using OpenNest.Geometry;
using OpenNest.Engine.Fill; using OpenNest.Engine.Fill;
namespace OpenNest.Tests; namespace OpenNest.Tests.Fill;
public class FillScoreTests public class FillScoreTests
{ {
@@ -48,7 +49,7 @@ public class FillScoreTests
[Fact] [Fact]
public void Compute_NullParts_ReturnsDefault() 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); Assert.Equal(0, score.Count);
} }
@@ -56,7 +57,7 @@ public class FillScoreTests
[Fact] [Fact]
public void Compute_EmptyParts_ReturnsDefault() 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); Assert.Equal(0, score.Count);
} }
@@ -70,7 +71,7 @@ public class FillScoreTests
TestHelpers.MakePartAt(20, 0, 10), TestHelpers.MakePartAt(20, 0, 10),
TestHelpers.MakePartAt(40, 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.Equal(3, score.Count);
Assert.True(score.Density > 0); Assert.True(score.Density > 0);
@@ -1,7 +1,7 @@
using OpenNest.Engine.Fill; using OpenNest.Engine.Fill;
using OpenNest.Geometry; using OpenNest.Geometry;
namespace OpenNest.Tests; namespace OpenNest.Tests.Fill;
public class IterativeShrinkFillerTests public class IterativeShrinkFillerTests
{ {
@@ -1,7 +1,7 @@
using OpenNest.Engine.Fill; using OpenNest.Engine.Fill;
using OpenNest.Geometry; using OpenNest.Geometry;
namespace OpenNest.Tests; namespace OpenNest.Tests.Fill;
public class PairFillerTests public class PairFillerTests
{ {
@@ -4,7 +4,7 @@ using OpenNest.Geometry;
using OpenNest.Math; using OpenNest.Math;
using Xunit.Abstractions; using Xunit.Abstractions;
namespace OpenNest.Tests; namespace OpenNest.Tests.Fill;
public class PairOverlapDiagnosticTests public class PairOverlapDiagnosticTests
{ {
@@ -1,7 +1,7 @@
using OpenNest.Engine.Fill; using OpenNest.Engine.Fill;
using OpenNest.Geometry; using OpenNest.Geometry;
namespace OpenNest.Tests; namespace OpenNest.Tests.Fill;
public class PatternTilerTests public class PatternTilerTests
{ {
@@ -1,7 +1,7 @@
using OpenNest.Engine.Fill; using OpenNest.Engine.Fill;
using OpenNest.Geometry; using OpenNest.Geometry;
namespace OpenNest.Tests; namespace OpenNest.Tests.Fill;
public class RemnantFillerTests2 public class RemnantFillerTests2
{ {
@@ -2,7 +2,7 @@ using OpenNest.Engine.Fill;
using OpenNest.Geometry; using OpenNest.Geometry;
using OpenNest.IO; using OpenNest.IO;
namespace OpenNest.Tests; namespace OpenNest.Tests.Fill;
public class RemnantFinderTests public class RemnantFinderTests
{ {
@@ -1,7 +1,7 @@
using OpenNest.Engine.Fill; using OpenNest.Engine.Fill;
using OpenNest.Geometry; using OpenNest.Geometry;
namespace OpenNest.Tests; namespace OpenNest.Tests.Fill;
public class ShrinkFillerTests public class ShrinkFillerTests
{ {
@@ -2,7 +2,7 @@ using OpenNest.Geometry;
using OpenNest.Math; using OpenNest.Math;
using System.Collections.Generic; using System.Collections.Generic;
namespace OpenNest.Tests; namespace OpenNest.Tests.Geometry;
public class CollisionTests public class CollisionTests
{ {
@@ -1,7 +1,7 @@
using OpenNest.Converters; using OpenNest.Converters;
using OpenNest.Geometry; using OpenNest.Geometry;
namespace OpenNest.Tests; namespace OpenNest.Tests.Geometry;
public class ContourClassificationTests public class ContourClassificationTests
{ {
@@ -3,7 +3,7 @@ using OpenNest.Math;
using Xunit; using Xunit;
using System.Linq; using System.Linq;
namespace OpenNest.Tests; namespace OpenNest.Tests.Geometry;
public class EllipseConverterTests public class EllipseConverterTests
{ {
@@ -4,7 +4,7 @@ using System.IO;
using System.Linq; using System.Linq;
using Xunit; using Xunit;
namespace OpenNest.Tests; namespace OpenNest.Tests.Geometry;
public class GeometrySimplifierTests public class GeometrySimplifierTests
{ {
@@ -1,6 +1,6 @@
using OpenNest.Geometry; using OpenNest.Geometry;
namespace OpenNest.Tests; namespace OpenNest.Tests.Geometry;
public class PolyLabelTests public class PolyLabelTests
{ {
@@ -3,7 +3,7 @@ using OpenNest.Engine.BestFit;
using OpenNest.Geometry; using OpenNest.Geometry;
using OpenNest.Math; using OpenNest.Math;
namespace OpenNest.Tests; namespace OpenNest.Tests.Geometry;
public class PolygonHelperTests public class PolygonHelperTests
{ {
@@ -2,7 +2,7 @@ using OpenNest.Geometry;
using OpenNest.Math; using OpenNest.Math;
using Xunit; using Xunit;
namespace OpenNest.Tests; namespace OpenNest.Tests.Geometry;
public class SplineConverterTests public class SplineConverterTests
{ {
@@ -2,7 +2,7 @@ using OpenNest.Converters;
using OpenNest.Geometry; using OpenNest.Geometry;
using OpenNest.IO; using OpenNest.IO;
namespace OpenNest.Tests; namespace OpenNest.Tests.IO;
public class DxfRoundtripTests public class DxfRoundtripTests
{ {
@@ -3,7 +3,7 @@ using OpenNest.Geometry;
using OpenNest.IO; using OpenNest.IO;
using System.Linq; using System.Linq;
namespace OpenNest.Tests; namespace OpenNest.Tests.IO;
public class NestBendSerializationTests public class NestBendSerializationTests
{ {
@@ -6,7 +6,7 @@ using OpenNest.Geometry;
using OpenNest.IO; using OpenNest.IO;
using Xunit.Abstractions; using Xunit.Abstractions;
namespace OpenNest.Tests; namespace OpenNest.Tests.Strategies;
public class StrategyOverlapTests public class StrategyOverlapTests
{ {