feat: add PartSequencerFactory
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -0,0 +1,23 @@
|
|||||||
|
using System;
|
||||||
|
using OpenNest.CNC.CuttingStrategy;
|
||||||
|
|
||||||
|
namespace OpenNest.Engine.Sequencing
|
||||||
|
{
|
||||||
|
public static class PartSequencerFactory
|
||||||
|
{
|
||||||
|
public static IPartSequencer Create(SequenceParameters parameters)
|
||||||
|
{
|
||||||
|
return parameters.Method switch
|
||||||
|
{
|
||||||
|
SequenceMethod.RightSide => new RightSideSequencer(),
|
||||||
|
SequenceMethod.LeftSide => new LeftSideSequencer(),
|
||||||
|
SequenceMethod.BottomSide => new BottomSideSequencer(),
|
||||||
|
SequenceMethod.EdgeStart => new EdgeStartSequencer(),
|
||||||
|
SequenceMethod.LeastCode => new LeastCodeSequencer(),
|
||||||
|
SequenceMethod.Advanced => new AdvancedSequencer(parameters),
|
||||||
|
_ => throw new NotSupportedException(
|
||||||
|
$"Sequence method '{parameters.Method}' is not supported.")
|
||||||
|
};
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,30 @@
|
|||||||
|
using System;
|
||||||
|
using OpenNest.CNC.CuttingStrategy;
|
||||||
|
using OpenNest.Engine.Sequencing;
|
||||||
|
using Xunit;
|
||||||
|
|
||||||
|
namespace OpenNest.Tests.Sequencing;
|
||||||
|
|
||||||
|
public class PartSequencerFactoryTests
|
||||||
|
{
|
||||||
|
[Theory]
|
||||||
|
[InlineData(SequenceMethod.RightSide, typeof(RightSideSequencer))]
|
||||||
|
[InlineData(SequenceMethod.LeftSide, typeof(LeftSideSequencer))]
|
||||||
|
[InlineData(SequenceMethod.BottomSide, typeof(BottomSideSequencer))]
|
||||||
|
[InlineData(SequenceMethod.EdgeStart, typeof(EdgeStartSequencer))]
|
||||||
|
[InlineData(SequenceMethod.LeastCode, typeof(LeastCodeSequencer))]
|
||||||
|
[InlineData(SequenceMethod.Advanced, typeof(AdvancedSequencer))]
|
||||||
|
public void Create_ReturnsCorrectType(SequenceMethod method, Type expectedType)
|
||||||
|
{
|
||||||
|
var parameters = new SequenceParameters { Method = method };
|
||||||
|
var sequencer = PartSequencerFactory.Create(parameters);
|
||||||
|
Assert.IsType(expectedType, sequencer);
|
||||||
|
}
|
||||||
|
|
||||||
|
[Fact]
|
||||||
|
public void Create_RightSideAlt_Throws()
|
||||||
|
{
|
||||||
|
var parameters = new SequenceParameters { Method = SequenceMethod.RightSideAlt };
|
||||||
|
Assert.Throws<NotSupportedException>(() => PartSequencerFactory.Create(parameters));
|
||||||
|
}
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user