Files
Nonemm/tests/Nonemm.Session.Tests/ContestDefinitionsTests.cs
T

59 lines
1.9 KiB
C#

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);
}