using Nonemm.Contests; using Nonemm.Core; namespace Nonemm.Contests.Tests; public class N1mmContestNamesTests { private static ContestRegistry Registry() => ContestRegistry.Create(); [Theory] [InlineData("CQWWCW", ModeCategory.Cw)] [InlineData("CQWWSSB", ModeCategory.Phone)] [InlineData("CQWWRTTY", ModeCategory.Digital)] [InlineData("ARRLDXCW", ModeCategory.Cw)] [InlineData("SSSSB", ModeCategory.Phone)] public void ANameN1mmWroteResolvesToAContestAndAMode(string name, ModeCategory mode) { Assert.True(N1mmContestNames.TryResolve(name, out _, out ModeCategory found)); Assert.Equal(mode, found); } /// The log's mode column can be wrong or say MIXED; the name N1MM wrote /// carries the mode itself, so it wins. [Fact] public void TheModeInTheNameBeatsTheModePassedIn() { Contest contest = Registry().Create("CQWWSSB", ModeCategory.Cw); Assert.Equal("CQWWSSB", contest.Name); Assert.Equal("CQ-WW-SSB", contest.CabrilloName); } /// Older N1MM versions wrote the CW running of CQ WW as plain CQWW. [Fact] public void TheOldPlainNameStillOpens() => Assert.Equal("CQWWCW", Registry().Create("CQWW", ModeCategory.Cw).Name); [Fact] public void OurOwnContestsNameThemselvesTheWayN1mmDoes() { ContestRegistry registry = Registry(); Assert.Equal("ARRLDXSSB", registry.Create("ARRLDX", ModeCategory.Phone).Name); Assert.Equal("IARU", registry.Create("IARU", ModeCategory.Cw).Name); Assert.Equal("NAQPRTTY", registry.Create("NAQP", ModeCategory.Digital).Name); } [Fact] public void AContestNeitherProgramKnowsIsStillAnError() => Assert.Throws(() => Registry().Create("NOSUCHCONTEST", ModeCategory.Digital)); [Fact] public void HasFindsAContestByTheNameN1mmWrote() => Assert.True(Registry().Has("CQWPXRTTY")); }