diff --git a/OpenNest.Core/Shapes/FlangeShape.cs b/OpenNest.Core/Shapes/PipeFlangeShape.cs similarity index 90% rename from OpenNest.Core/Shapes/FlangeShape.cs rename to OpenNest.Core/Shapes/PipeFlangeShape.cs index 2eff093..f4be59d 100644 --- a/OpenNest.Core/Shapes/FlangeShape.cs +++ b/OpenNest.Core/Shapes/PipeFlangeShape.cs @@ -3,7 +3,7 @@ using System.Collections.Generic; namespace OpenNest.Shapes { - public class FlangeShape : ShapeDefinition + public class PipeFlangeShape : ShapeDefinition { public double NominalPipeSize { get; set; } public double OD { get; set; } @@ -24,10 +24,8 @@ namespace OpenNest.Shapes { var entities = new List(); - // Outer circle entities.Add(new Circle(0, 0, OD / 2.0)); - // Bolt holes evenly spaced on the bolt circle var boltCircleRadius = HolePatternDiameter / 2.0; var holeRadius = HoleDiameter / 2.0; var angleStep = 2.0 * System.Math.PI / HoleCount; diff --git a/OpenNest.Tests/Shapes/FlangeShapeTests.cs b/OpenNest.Tests/Shapes/FlangeShapeTests.cs deleted file mode 100644 index 931582d..0000000 --- a/OpenNest.Tests/Shapes/FlangeShapeTests.cs +++ /dev/null @@ -1,104 +0,0 @@ -using OpenNest.Shapes; - -namespace OpenNest.Tests.Shapes; - -public class FlangeShapeTests -{ - [Fact] - public void GetDrawing_BoundingBoxMatchesOD() - { - var shape = new FlangeShape - { - OD = 10, - HoleDiameter = 1, - HolePatternDiameter = 7, - HoleCount = 4 - }; - var drawing = shape.GetDrawing(); - - var bbox = drawing.Program.BoundingBox(); - Assert.Equal(10, bbox.Width, 0.01); - Assert.Equal(10, bbox.Length, 0.01); - } - - [Fact] - public void GetDrawing_AreaExcludesBoltHoles() - { - var shape = new FlangeShape - { - OD = 10, - HoleDiameter = 1, - HolePatternDiameter = 7, - HoleCount = 4 - }; - var drawing = shape.GetDrawing(); - - // Area = pi * 5^2 - 4 * pi * 0.5^2 = pi * (25 - 1) = pi * 24 - var expectedArea = System.Math.PI * 24; - Assert.Equal(expectedArea, drawing.Area, 0.5); - } - - [Fact] - public void GetDrawing_DefaultName_IsFlange() - { - var shape = new FlangeShape - { - OD = 10, - HoleDiameter = 1, - HolePatternDiameter = 7, - HoleCount = 4 - }; - var drawing = shape.GetDrawing(); - - Assert.Equal("Flange", drawing.Name); - } - - [Fact] - public void LoadFromJson_ProducesCorrectDrawing() - { - var json = """ - [ - { - "Name": "2in-150#", - "NominalPipeSize": 2.0, - "OD": 6.0, - "HoleDiameter": 0.75, - "HolePatternDiameter": 4.75, - "HoleCount": 4 - }, - { - "Name": "2in-300#", - "NominalPipeSize": 2.0, - "OD": 6.5, - "HoleDiameter": 0.75, - "HolePatternDiameter": 5.0, - "HoleCount": 8 - } - ] - """; - - var tempFile = Path.GetTempFileName(); - try - { - File.WriteAllText(tempFile, json); - - var flanges = ShapeDefinition.LoadFromJson(tempFile); - - Assert.Equal(2, flanges.Count); - - var first = flanges[0]; - Assert.Equal("2in-150#", first.Name); - var drawing = first.GetDrawing(); - var bbox = drawing.Program.BoundingBox(); - Assert.Equal(6, bbox.Width, 0.01); - - var second = flanges[1]; - Assert.Equal("2in-300#", second.Name); - Assert.Equal(8, second.HoleCount); - } - finally - { - File.Delete(tempFile); - } - } -} diff --git a/OpenNest.Tests/Shapes/PipeFlangeShapeTests.cs b/OpenNest.Tests/Shapes/PipeFlangeShapeTests.cs new file mode 100644 index 0000000..3ba47e5 --- /dev/null +++ b/OpenNest.Tests/Shapes/PipeFlangeShapeTests.cs @@ -0,0 +1,54 @@ +using OpenNest.Shapes; + +namespace OpenNest.Tests.Shapes; + +public class PipeFlangeShapeTests +{ + [Fact] + public void GetDrawing_BoundingBoxMatchesOD() + { + var shape = new PipeFlangeShape + { + OD = 10, + HoleDiameter = 1, + HolePatternDiameter = 7, + HoleCount = 4 + }; + var drawing = shape.GetDrawing(); + + var bbox = drawing.Program.BoundingBox(); + Assert.Equal(10, bbox.Width, 0.01); + Assert.Equal(10, bbox.Length, 0.01); + } + + [Fact] + public void GetDrawing_AreaExcludesBoltHoles() + { + var shape = new PipeFlangeShape + { + OD = 10, + HoleDiameter = 1, + HolePatternDiameter = 7, + HoleCount = 4 + }; + var drawing = shape.GetDrawing(); + + var expectedArea = System.Math.PI * 24; + Assert.Equal(expectedArea, drawing.Area, 0.5); + } + + [Fact] + public void GetDrawing_DefaultName_IsPipeFlange() + { + var shape = new PipeFlangeShape + { + OD = 10, + HoleDiameter = 1, + HolePatternDiameter = 7, + HoleCount = 4 + }; + var drawing = shape.GetDrawing(); + + Assert.Equal("PipeFlange", drawing.Name); + } +}