using Nonemm.Contests.Rules; using Nonemm.Core; namespace Nonemm.Contests.Tests; public class ArrlDxTests { private static ContestLog LogFor(StationInfo me) => new(new ArrlDx(ModeCategory.Cw), me, TestLog.CountryFile); [Fact] public void DxWorkingWvieScoresThree() { ContestLog log = LogFor(TestLog.Germany); Assert.Equal(3, log.Judge(TestLog.Contact("K1ABC", section: "CT")).Points); } [Fact] public void DxWorkingDxScoresNothing() { ContestLog log = LogFor(TestLog.Germany); Assert.Equal(0, log.Judge(TestLog.Contact("JA1XYZ", exchange: "5W")).Points); } [Fact] public void WvieWorkingWvieScoresNothing() { ContestLog log = LogFor(TestLog.UnitedStates); Assert.Equal(0, log.Judge(TestLog.Contact("VE3XYZ", exchange: "ON")).Points); } [Fact] public void DxCountsStatesAndProvinces() { ContestLog log = LogFor(TestLog.Germany); Assert.Equal("CT", log.Judge(TestLog.Contact("K1ABC", section: "CT")).NewMultipliers.Single().Value); Assert.Empty(log.Judge(TestLog.Contact("K1ABC", section: "XX")).NewMultipliers); } [Fact] public void WvieCountsCountries() { ContestLog log = LogFor(TestLog.UnitedStates); Assert.Equal("DL", log.Judge(TestLog.Contact("DL9XYZ", exchange: "100")).NewMultipliers.Single().Value); } [Fact] public void MultipliersCountOncePerBand() { ContestLog log = LogFor(TestLog.Germany); log.Add(TestLog.Contact("K1ABC", section: "CT")); Assert.Empty(log.Judge(TestLog.Contact("K2ABC", section: "CT")).NewMultipliers); Assert.Single(log.Judge(TestLog.Contact("K2ABC", 7_025, section: "CT")).NewMultipliers); } /// A Canadian station sends the postal code or the older abbreviation, and /// Newfoundland and Labrador is one province either way. N1MM counts `NF` /// and `LB` as two multipliers, which is two for one province. [Fact] public void NewfoundlandAndLabradorCountOnce() { ContestLog log = new(new ArrlDx(ModeCategory.Phone), TestLog.Germany, TestLog.CountryFile); log.Add(TestLog.Contact("VO1XYZ", section: "NF")); Assert.Empty(log.Judge(TestLog.Contact("VO2XYZ", section: "LB")).NewMultipliers); } [Theory] [InlineData("QB", "QC")] [InlineData("PE", "PEI")] [InlineData("NT", "NWT")] public void AnotherSpellingIsTheSameArea(string sent, string counted) { ContestLog log = new(new ArrlDx(ModeCategory.Phone), TestLog.Germany, TestLog.CountryFile); Assert.Equal( counted, log.Judge(TestLog.Contact("VA2XYZ", section: sent)).NewMultipliers.Single().Value); } }