65 lines
1.7 KiB
C#
65 lines
1.7 KiB
C#
using OpenNest.Shapes;
|
|
|
|
namespace OpenNest.Tests.Shapes;
|
|
|
|
public class PipeSizesTests
|
|
{
|
|
[Fact]
|
|
public void All_ContainsExpectedCount()
|
|
{
|
|
Assert.Equal(35, PipeSizes.All.Count);
|
|
}
|
|
|
|
[Fact]
|
|
public void All_IsSortedByOuterDiameterAscending()
|
|
{
|
|
for (var i = 1; i < PipeSizes.All.Count; i++)
|
|
Assert.True(PipeSizes.All[i].OuterDiameter > PipeSizes.All[i - 1].OuterDiameter);
|
|
}
|
|
|
|
[Theory]
|
|
[InlineData("1/8", 0.405)]
|
|
[InlineData("1/2", 0.840)]
|
|
[InlineData("2", 2.375)]
|
|
[InlineData("2 1/2", 2.875)]
|
|
[InlineData("12", 12.750)]
|
|
[InlineData("48", 48.000)]
|
|
public void TryGetOD_KnownLabel_ReturnsExpectedOD(string label, double expected)
|
|
{
|
|
Assert.True(PipeSizes.TryGetOD(label, out var od));
|
|
Assert.Equal(expected, od, 0.001);
|
|
}
|
|
|
|
[Fact]
|
|
public void TryGetOD_UnknownLabel_ReturnsFalse()
|
|
{
|
|
Assert.False(PipeSizes.TryGetOD("bogus", out _));
|
|
}
|
|
|
|
[Fact]
|
|
public void GetFittingSizes_FiltersByMaxOD()
|
|
{
|
|
var results = PipeSizes.GetFittingSizes(3.0).ToList();
|
|
|
|
Assert.Contains(results, e => e.Label == "2 1/2");
|
|
Assert.DoesNotContain(results, e => e.Label == "3");
|
|
Assert.DoesNotContain(results, e => e.Label == "4");
|
|
}
|
|
|
|
[Fact]
|
|
public void GetFittingSizes_ExactBoundary_IsInclusive()
|
|
{
|
|
// NPS 3 has OD 3.500; passing maxOD = 3.500 should include it.
|
|
var results = PipeSizes.GetFittingSizes(3.500).ToList();
|
|
|
|
Assert.Contains(results, e => e.Label == "3");
|
|
Assert.DoesNotContain(results, e => e.Label == "3 1/2");
|
|
}
|
|
|
|
[Fact]
|
|
public void GetFittingSizes_MaxSmallerThanSmallest_ReturnsEmpty()
|
|
{
|
|
Assert.Empty(PipeSizes.GetFittingSizes(0.1));
|
|
}
|
|
}
|