mirror of
https://github.com/ajisaacs/OpenNest.git
synced 2026-11-04 17:11:34 -05:00
S reads too much like 5 on labels and screens, so the sequence alphabet is now base-29. Already-issued names keep their numbers: the server's stored counter stays authoritative and a base-29 name can never equal an earlier base-30 one. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
35 lines
1004 B
C#
35 lines
1004 B
C#
using OpenNest.Data;
|
|
|
|
namespace OpenNest.Tests.Data;
|
|
|
|
public class NestNamesTests
|
|
{
|
|
[Theory]
|
|
[InlineData(0, "N26-222")]
|
|
[InlineData(1, "N26-223")]
|
|
[InlineData(28, "N26-22Z")]
|
|
[InlineData(29, "N26-232")]
|
|
[InlineData(841, "N26-322")]
|
|
[InlineData(24389, "N26-3222")]
|
|
public void NamesUseTwoDigitYearAndPaddedBase29Sequence(int number, string expected)
|
|
{
|
|
Assert.Equal(expected, NestNames.Format(2026, number));
|
|
Assert.True(NestNames.TryParse(expected, 2026, out var parsed));
|
|
Assert.Equal(number, parsed);
|
|
}
|
|
|
|
[Theory]
|
|
[InlineData(null)]
|
|
[InlineData("")]
|
|
[InlineData("N25-223")]
|
|
[InlineData("N26-23")]
|
|
[InlineData("N26-2223")]
|
|
[InlineData("N26-22B")]
|
|
[InlineData("N26-22S")]
|
|
[InlineData("n26-223")]
|
|
[InlineData("N26-223 copy")]
|
|
[InlineData("N26-ZZZZZZZZZ")]
|
|
public void TryParse_RejectsOtherYearsAndNonCanonicalNames(string? name) =>
|
|
Assert.False(NestNames.TryParse(name, 2026, out _));
|
|
}
|