Files
OpenNest/OpenNest.Tests/Data/StandardThicknessesTests.cs
T
ajandClaude Opus 5.5 d4903a648c feat(desktop): pick sheet gauges and fractions from thickness dropdowns
Operators had to know that 16 ga is 0.0598 to enter a thickness. The Nest
Info and Save to Drawing Library thickness boxes now list steel gauges
(26-3 ga) and plate fractions (1/16"-2") with their decimals, and read a
typed gauge ("16ga", "#16"), any fraction ("3/32", "1-1/4") or a decimal.
Unreadable text blocks OK/Save instead of reading as zero.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-22 13:04:55 -04:00

73 lines
2.7 KiB
C#

using OpenNest.Data;
namespace OpenNest.Tests.Data;
/// <summary>
/// The thickness box list: gauges and plate fractions read and display as their
/// decimals, and any other typed decimal still works.
/// </summary>
public class StandardThicknessesTests
{
[Theory]
[InlineData("16 ga - 0.0598", 0.0598)]
[InlineData("16 ga", 0.0598)]
[InlineData("16GA", 0.0598)]
[InlineData("16 gauge", 0.0598)]
[InlineData("#10", 0.1345)]
[InlineData("1/4", 0.25)]
[InlineData("1/4\"", 0.25)]
[InlineData("3/32", 0.09375)]
[InlineData("1-1/4", 1.25)]
[InlineData("1 1/4\"", 1.25)]
[InlineData("1-1/2\" - 1.5", 1.5)]
[InlineData("0.0598", 0.0598)]
[InlineData("0.123", 0.123)]
[InlineData("", 0)]
public void TryParse_ReadsGaugesFractionsAndDecimals(string text, double expected)
{
Assert.True(StandardThicknesses.TryParse(text, Units.Inches, out var value));
Assert.Equal(expected, value, 6);
}
[Theory]
[InlineData("abc")]
[InlineData("99 ga")]
[InlineData("-0.1")]
[InlineData("1/0")]
[InlineData("1/")]
public void TryParse_RejectsUnknownText(string text) =>
Assert.False(StandardThicknesses.TryParse(text, Units.Inches, out _));
[Fact]
public void Format_ShowsTheGaugeForAMatchingDecimal()
{
Assert.Equal("16 ga - 0.0598", StandardThicknesses.Format(0.0598, Units.Inches));
Assert.Equal("1/4\" - 0.25", StandardThicknesses.Format(0.25, Units.Inches));
Assert.Equal("1-1/4\" - 1.25", StandardThicknesses.Format(1.25, Units.Inches));
Assert.Equal("0.123", StandardThicknesses.Format(0.123, Units.Inches));
}
[Fact]
public void Millimeters_ListAndReadMetricValues()
{
Assert.Equal("16 ga - 1.519", StandardThicknesses.Format(0.0598 * 25.4, Units.Millimeters));
Assert.True(StandardThicknesses.TryParse("16 ga", Units.Millimeters, out var value));
Assert.Equal(1.51892, value, 5);
Assert.True(StandardThicknesses.TryParse("3/32", Units.Millimeters, out value));
Assert.Equal(2.38125, value, 5);
}
[Fact]
public void Entries_ListGaugesThenFractions_ThinnestFirst()
{
var gauges = StandardThicknesses.Entries.TakeWhile(e => e.Name.EndsWith(" ga")).ToList();
Assert.Equal("26 ga", gauges[0].Name);
Assert.Equal("3 ga", gauges[^1].Name);
Assert.Equal(gauges.OrderBy(e => e.Inches), gauges);
var fractions = StandardThicknesses.Entries.Skip(gauges.Count).ToList();
Assert.Equal(("1/16\"", 0.0625), (fractions[0].Name, fractions[0].Inches));
Assert.Equal(("2\"", 2.0), (fractions[^1].Name, fractions[^1].Inches));
Assert.Equal(fractions.OrderBy(e => e.Inches), fractions);
}
}