diff --git a/OpenNest.Core/Shapes/RectangleShape.cs b/OpenNest.Core/Shapes/RectangleShape.cs new file mode 100644 index 0000000..ad70466 --- /dev/null +++ b/OpenNest.Core/Shapes/RectangleShape.cs @@ -0,0 +1,24 @@ +using System.Collections.Generic; +using OpenNest.Geometry; + +namespace OpenNest.Shapes +{ + public class RectangleShape : ShapeDefinition + { + public double Width { get; set; } + public double Height { get; set; } + + public override Drawing GetDrawing() + { + var entities = new List + { + new Line(0, 0, Width, 0), + new Line(Width, 0, Width, Height), + new Line(Width, Height, 0, Height), + new Line(0, Height, 0, 0) + }; + + return CreateDrawing(entities); + } + } +} diff --git a/OpenNest.Tests/Shapes/RectangleShapeTests.cs b/OpenNest.Tests/Shapes/RectangleShapeTests.cs new file mode 100644 index 0000000..bdfa64c --- /dev/null +++ b/OpenNest.Tests/Shapes/RectangleShapeTests.cs @@ -0,0 +1,35 @@ +using OpenNest.Shapes; + +namespace OpenNest.Tests.Shapes; + +public class RectangleShapeTests +{ + [Fact] + public void GetDrawing_ReturnsDrawingWithCorrectBoundingBox() + { + var shape = new RectangleShape { Width = 10, Height = 5 }; + var drawing = shape.GetDrawing(); + + var bbox = drawing.Program.BoundingBox(); + Assert.Equal(10, bbox.Width, 0.01); + Assert.Equal(5, bbox.Length, 0.01); + } + + [Fact] + public void GetDrawing_DefaultName_IsRectangle() + { + var shape = new RectangleShape { Width = 10, Height = 5 }; + var drawing = shape.GetDrawing(); + + Assert.Equal("Rectangle", drawing.Name); + } + + [Fact] + public void GetDrawing_CustomName_IsUsed() + { + var shape = new RectangleShape { Name = "Plate1", Width = 10, Height = 5 }; + var drawing = shape.GetDrawing(); + + Assert.Equal("Plate1", drawing.Name); + } +}