Test drawings used CCW winding, causing OffsetSide.Left to produce inward offsets. The BestFit pipeline then positioned pairs so actual shapes overlapped, failing all 1232 candidates. Changed to CW winding to match CNC convention where OffsetSide.Left = outward. Also fixed EdgeStartSequencer test: centerPart at (25,55) was only 4.5 from the top edge (plate Y=60), closer than midPart at (10,10). Moved to (25,25) for correct ordering. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
28 lines
813 B
C#
28 lines
813 B
C#
using OpenNest.Engine.Sequencing;
|
|
|
|
namespace OpenNest.Tests.Sequencing;
|
|
|
|
public class EdgeStartSequencerTests
|
|
{
|
|
private static Part MakePartAt(double x, double y) => TestHelpers.MakePartAt(x, y);
|
|
|
|
[Fact]
|
|
public void SortsByDistanceFromNearestEdge()
|
|
{
|
|
var plate = new Plate(60, 120);
|
|
var edgePart = MakePartAt(1, 1);
|
|
var centerPart = MakePartAt(25, 25);
|
|
var midPart = MakePartAt(10, 10);
|
|
plate.Parts.Add(edgePart);
|
|
plate.Parts.Add(centerPart);
|
|
plate.Parts.Add(midPart);
|
|
|
|
var sequencer = new EdgeStartSequencer();
|
|
var result = sequencer.Sequence(plate.Parts.ToList(), plate);
|
|
|
|
Assert.Same(edgePart, result[0].Part);
|
|
Assert.Same(midPart, result[1].Part);
|
|
Assert.Same(centerPart, result[2].Part);
|
|
}
|
|
}
|