diff --git a/OpenNest.Core/CNC/VariableDefinition.cs b/OpenNest.Core/CNC/VariableDefinition.cs new file mode 100644 index 0000000..d74d87f --- /dev/null +++ b/OpenNest.Core/CNC/VariableDefinition.cs @@ -0,0 +1,21 @@ +namespace OpenNest.CNC +{ + public sealed class VariableDefinition + { + public string Name { get; } + public string Expression { get; } + public double Value { get; } + public bool Inline { get; } + public bool Global { get; } + + public VariableDefinition(string name, string expression, double value, + bool inline = false, bool global = false) + { + Name = name; + Expression = expression; + Value = value; + Inline = inline; + Global = global; + } + } +} diff --git a/OpenNest.Tests/CNC/VariableDefinitionTests.cs b/OpenNest.Tests/CNC/VariableDefinitionTests.cs new file mode 100644 index 0000000..f965823 --- /dev/null +++ b/OpenNest.Tests/CNC/VariableDefinitionTests.cs @@ -0,0 +1,33 @@ +using OpenNest.CNC; + +namespace OpenNest.Tests.CNC; + +public class VariableDefinitionTests +{ + [Fact] + public void Constructor_SetsAllProperties() + { + var v = new VariableDefinition("diameter", "0.3", 0.3); + Assert.Equal("diameter", v.Name); + Assert.Equal("0.3", v.Expression); + Assert.Equal(0.3, v.Value); + Assert.False(v.Inline); + Assert.False(v.Global); + } + + [Fact] + public void Constructor_WithFlags_SetsFlags() + { + var v = new VariableDefinition("width", "48.0", 48.0, inline: true, global: true); + Assert.True(v.Inline); + Assert.True(v.Global); + } + + [Fact] + public void DefaultFlags_AreFalse() + { + var v = new VariableDefinition("x", "1", 1.0); + Assert.False(v.Inline); + Assert.False(v.Global); + } +} diff --git a/OpenNest.Tests/Fill/PatternTilerTests.cs b/OpenNest.Tests/Fill/PatternTilerTests.cs index 81db4bb..4a49d81 100644 --- a/OpenNest.Tests/Fill/PatternTilerTests.cs +++ b/OpenNest.Tests/Fill/PatternTilerTests.cs @@ -1,3 +1,4 @@ +using OpenNest.CNC; using OpenNest.Engine.Fill; using OpenNest.Geometry; @@ -7,11 +8,11 @@ public class PatternTilerTests { private static Drawing MakeSquareDrawing(double size) { - var pgm = new CNC.Program(); - pgm.Codes.Add(new CNC.LinearMove(size, 0)); - pgm.Codes.Add(new CNC.LinearMove(size, size)); - pgm.Codes.Add(new CNC.LinearMove(0, size)); - pgm.Codes.Add(new CNC.LinearMove(0, 0)); + var pgm = new Program(); + pgm.Codes.Add(new LinearMove(size, 0)); + pgm.Codes.Add(new LinearMove(size, size)); + pgm.Codes.Add(new LinearMove(0, size)); + pgm.Codes.Add(new LinearMove(0, 0)); return new Drawing("square", pgm); } diff --git a/OpenNest.Tests/Geometry/PolygonHelperTests.cs b/OpenNest.Tests/Geometry/PolygonHelperTests.cs index b896c0c..232a0f6 100644 --- a/OpenNest.Tests/Geometry/PolygonHelperTests.cs +++ b/OpenNest.Tests/Geometry/PolygonHelperTests.cs @@ -57,12 +57,12 @@ public class PolygonHelperTests public void ExtractPerimeterPolygon_InflatedPolygonIsLarger_ForCCWWinding() { // CCW winding: (0,0)→(10,0)→(10,10)→(0,10)→(0,0) - var pgm = new CNC.Program(); - pgm.Codes.Add(new CNC.RapidMove(new Vector(0, 0))); - pgm.Codes.Add(new CNC.LinearMove(new Vector(10, 0))); - pgm.Codes.Add(new CNC.LinearMove(new Vector(10, 10))); - pgm.Codes.Add(new CNC.LinearMove(new Vector(0, 10))); - pgm.Codes.Add(new CNC.LinearMove(new Vector(0, 0))); + var pgm = new Program(); + 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 drawing = new Drawing("ccw-square", pgm); var noSpacing = PolygonHelper.ExtractPerimeterPolygon(drawing, 0);