using Nonemm.Contests.Rules; using Nonemm.Core; namespace Nonemm.Contests.Tests; public class CqWpxTests { private static ContestLog LogFor(StationInfo me, ModeCategory mode = ModeCategory.Cw) => new(new CqWpx(mode), me, TestLog.CountryFile); [Theory] [InlineData(14_025, 3)] [InlineData(21_025, 3)] [InlineData(7_025, 6)] [InlineData(3_525, 6)] public void DifferentContinentDoublesBelowFourteenMegahertz(double kilohertz, int expected) { ContestLog log = LogFor(TestLog.Germany); Assert.Equal(expected, log.Judge(TestLog.Contact("JA1XYZ", kilohertz)).Points); } [Fact] public void SameContinentScoresOneOnTheHighBands() { ContestLog log = LogFor(TestLog.Germany); Assert.Equal(1, log.Judge(TestLog.Contact("IK2XYZ")).Points); Assert.Equal(2, log.Judge(TestLog.Contact("IK2XYZ", 7_025)).Points); } [Fact] public void NorthAmericansScoreDoubleWithinNorthAmerica() { ContestLog log = LogFor(TestLog.UnitedStates); Assert.Equal(2, log.Judge(TestLog.Contact("VE3XYZ")).Points); Assert.Equal(4, log.Judge(TestLog.Contact("VE3XYZ", 7_025)).Points); } [Fact] public void OwnCountryScoresOneOnEveryBand() { ContestLog log = LogFor(TestLog.Germany); Assert.Equal(1, log.Judge(TestLog.Contact("DL9XYZ")).Points); Assert.Equal(1, log.Judge(TestLog.Contact("DL9XYZ", 3_525)).Points); } [Fact] public void RttyScoresOwnCountryTwiceOnTheLowBands() { ContestLog log = LogFor(TestLog.Germany, ModeCategory.Digital); Assert.Equal(1, log.Judge(TestLog.Contact("DL9XYZ", mode: Modes.Rtty)).Points); Assert.Equal(2, log.Judge(TestLog.Contact("DL9XYZ", 3_525, Modes.Rtty)).Points); } [Fact] public void PrefixCountsOnceForTheWholeContest() { ContestLog log = LogFor(TestLog.Germany); log.Add(TestLog.Contact("JA1XYZ")); Assert.Empty(log.Judge(TestLog.Contact("JA1ZZZ", 7_025)).NewMultipliers); Assert.Single(log.Judge(TestLog.Contact("JA2ZZZ", 7_025)).NewMultipliers); } [Fact] public void MaritimeMobileBringsNoPrefix() { ContestLog log = LogFor(TestLog.Germany); Assert.Empty(log.Judge(TestLog.Contact("DL1ABC/MM")).NewMultipliers); } }