94 lines
3.2 KiB
C#
94 lines
3.2 KiB
C#
using Nonemm.Contests.Rules;
|
|
using Nonemm.Contests.Udc;
|
|
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 ContestWithSeveralModesIsBothAsN1mmWritesIt() =>
|
|
Assert.Equal("Both", ContestDefinitions.For(new IaruHf(), Germany).Mode);
|
|
|
|
[Fact]
|
|
public void ABuiltInContestTakesTheRowN1mmWrote()
|
|
{
|
|
ContestDefinition definition = ContestDefinitions.For(new Wae(ModeCategory.Cw), Germany);
|
|
|
|
Assert.Equal("DARC-WAEDC-CW", definition.CabrilloName);
|
|
Assert.Equal("Worked All Europe - WAE CW", definition.DisplayName);
|
|
Assert.Equal((3, 1, 1), (definition.DupeType, definition.Period, definition.PointsPerContact));
|
|
}
|
|
|
|
[Fact]
|
|
public void AUserDefinedContestIsWorkedOutFromItsFile()
|
|
{
|
|
UserDefinedContest contest = new(UdcFile.Parse("""
|
|
[Contest]
|
|
Name=SAMPLETEST
|
|
DisplayName=Sample Test
|
|
CabrilloName=SAMPLE-TEST
|
|
Mode=CW
|
|
DupeType=2
|
|
Multiplier1Name=Countries
|
|
MultSqlString=CountryPrefix
|
|
IsMultPer=1
|
|
PointsPerContact=1
|
|
EntryWindowInfo=RCVText, 500, Exchange1Text, 500
|
|
FrameText=RcvRST Exch
|
|
DefaultContestExchange=599
|
|
"""));
|
|
|
|
ContestDefinition definition = ContestDefinitions.For(contest, Germany);
|
|
|
|
Assert.Equal(("Sample Test", "SAMPLE-TEST", "Countries"), (definition.DisplayName, definition.CabrilloName, definition.Multiplier1Name));
|
|
}
|
|
}
|