Files
OpenNest/OpenNest.Tests/LeadInLayerTagTests.cs
AJ Isaacs 82de512f44 feat: set Layer = Leadin on all LeadIn subclass generated codes
Adds LayerType.Leadin to all LinearMove and ArcMove instances produced
by LineLeadIn, ArcLeadIn, LineArcLeadIn, CleanHoleLeadIn, and
LineLineLeadIn Generate() methods, plus tests covering all subclasses.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-30 13:16:06 -04:00

91 lines
3.0 KiB
C#

using OpenNest.CNC;
using OpenNest.CNC.CuttingStrategy;
using OpenNest.Geometry;
namespace OpenNest.Tests;
public class LeadInLayerTagTests
{
private static readonly Vector Point = new(5, 5);
private const double Normal = 0.0;
[Fact]
public void LineLeadIn_SetsLeadinLayer()
{
var leadIn = new LineLeadIn { Length = 0.5, ApproachAngle = 90 };
var codes = leadIn.Generate(Point, Normal);
var linear = codes.OfType<LinearMove>().Single();
Assert.Equal(LayerType.Leadin, linear.Layer);
}
[Fact]
public void ArcLeadIn_SetsLeadinLayer()
{
var leadIn = new ArcLeadIn { Radius = 0.25 };
var codes = leadIn.Generate(Point, Normal);
var arc = codes.OfType<ArcMove>().Single();
Assert.Equal(LayerType.Leadin, arc.Layer);
}
[Fact]
public void LineArcLeadIn_SetsLeadinLayerOnAllMoves()
{
var leadIn = new LineArcLeadIn { LineLength = 0.5, ArcRadius = 0.25, ApproachAngle = 135 };
var codes = leadIn.Generate(Point, Normal);
Assert.All(codes.OfType<LinearMove>(), m => Assert.Equal(LayerType.Leadin, m.Layer));
Assert.All(codes.OfType<ArcMove>(), m => Assert.Equal(LayerType.Leadin, m.Layer));
}
[Fact]
public void CleanHoleLeadIn_SetsLeadinLayerOnAllMoves()
{
var leadIn = new CleanHoleLeadIn { LineLength = 0.5, ArcRadius = 0.25, Kerf = 0.05 };
var codes = leadIn.Generate(Point, Normal);
Assert.All(codes.OfType<LinearMove>(), m => Assert.Equal(LayerType.Leadin, m.Layer));
Assert.All(codes.OfType<ArcMove>(), m => Assert.Equal(LayerType.Leadin, m.Layer));
}
[Fact]
public void LineLineLeadIn_SetsLeadinLayerOnAllMoves()
{
var leadIn = new LineLineLeadIn { Length1 = 0.5, Length2 = 0.3, ApproachAngle1 = 90, ApproachAngle2 = 90 };
var codes = leadIn.Generate(Point, Normal);
Assert.All(codes.OfType<LinearMove>(), m => Assert.Equal(LayerType.Leadin, m.Layer));
}
[Fact]
public void NoLeadIn_NoLinearOrArcMoves()
{
var leadIn = new NoLeadIn();
var codes = leadIn.Generate(Point, Normal);
Assert.Empty(codes.OfType<LinearMove>());
Assert.Empty(codes.OfType<ArcMove>());
}
[Fact]
public void LineLeadOut_SetsLeadoutLayer()
{
var leadOut = new LineLeadOut { Length = 0.5, ApproachAngle = 90 };
var codes = leadOut.Generate(Point, Normal);
var linear = codes.OfType<LinearMove>().Single();
Assert.Equal(LayerType.Leadout, linear.Layer);
}
[Fact]
public void ArcLeadOut_SetsLeadoutLayer()
{
var leadOut = new ArcLeadOut { Radius = 0.25 };
var codes = leadOut.Generate(Point, Normal);
var arc = codes.OfType<ArcMove>().Single();
Assert.Equal(LayerType.Leadout, arc.Layer);
}
[Fact]
public void NoLeadOut_ReturnsEmptyList()
{
var leadOut = new NoLeadOut();
var codes = leadOut.Generate(Point, Normal);
Assert.Empty(codes);
}
}