using Nonemm.Contests.Rules; using Nonemm.Core; using Nonemm.Storage; namespace Nonemm.Session.Tests; public class ContestDefinitionsTests { private static readonly StationInfo Germany = new() { Callsign = "DL1ABC", CqZone = 14, ItuZone = 28, Continent = "EU", CountryPrefix = "DL", }; [Fact] public void NamesAndModeComeFromTheContest() { ContestDefinition definition = ContestDefinitions.For(new CqWorldWide(ModeCategory.Cw), Germany); Assert.Equal("CQWWCW", definition.Name); Assert.Equal("CQ-WW-CW", definition.CabrilloName); Assert.Equal("CW", definition.Mode); } [Fact] public void MultiplierNamesAreN1mmsOwnAndFillUpToThree() { ContestDefinition definition = ContestDefinitions.For(new CqWorldWide(ModeCategory.Cw), Germany); Assert.Equal("ZN", definition.Multiplier1Name); Assert.Equal("CountryPrefix", definition.Multiplier2Name); Assert.Equal("N/A", definition.Multiplier3Name); } [Fact] public void AContestWithThreeMultipliersFillsAllThree() { ContestDefinition definition = ContestDefinitions.For(new BartgSprint(), Germany); Assert.Equal(("CountryPrefix", "Sect", "Continent"), (definition.Multiplier1Name, definition.Multiplier2Name, definition.Multiplier3Name)); } [Theory] [InlineData(typeof(Sweepstakes), 1)] [InlineData(typeof(CqWorldWide), 2)] [InlineData(typeof(IaruHf), 3)] public void DupeScopeBecomesN1mmsDupeType(Type contest, int expected) { object made = contest == typeof(IaruHf) ? new IaruHf() : Activator.CreateInstance(contest, ModeCategory.Cw)!; Assert.Equal(expected, ContestDefinitions.For((Contests.Contest)made, Germany).DupeType); } [Fact] public void ContestWithSeveralModesIsBoth() => Assert.Equal("BOTH", ContestDefinitions.For(new IaruHf(), Germany).Mode); }