Name the All Asian multiplier after what it counts
The score window and the stored Contest.Multiplier1Name row both said "Prefixes" for an Asian entrant, which counts DXCC entities. Contest.MultiplierNames is now MultiplierNamesFor(StationInfo me), the same shape as ExchangeFieldsFor. Every other contest returns the same list it did before; All Asian returns "Countries" from Asia and "Prefixes" from everywhere else. ContestDefinitions.For takes the station as well, because that name is written to the log for N1MM. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_0157i7PiZyqBkquxS9A6FTdQ
This commit is contained in:
@@ -80,6 +80,15 @@ public class AllAsianTests
|
||||
Assert.Empty(verdict.NewMultipliers);
|
||||
}
|
||||
|
||||
/// The column heading follows what is being counted.
|
||||
[Fact]
|
||||
public void TheMultiplierNameFollowsTheEntrant()
|
||||
{
|
||||
Contest contest = new AllAsian(ModeCategory.Phone);
|
||||
Assert.Equal(["Countries"], contest.MultiplierNamesFor(TestLog.Japan));
|
||||
Assert.Equal(["Prefixes"], contest.MultiplierNamesFor(TestLog.Germany));
|
||||
}
|
||||
|
||||
/// An entrant outside Asia may only work Asia.
|
||||
[Fact]
|
||||
public void OutsideEntrantCannotWorkOutsideAsia()
|
||||
|
||||
@@ -68,7 +68,7 @@ public class CqWorldWideRttyTests
|
||||
|
||||
[Fact]
|
||||
public void TheThreeMultiplierNamesAreShown() =>
|
||||
Assert.Equal(["Zones", "Countries", "States"], Rtty.MultiplierNames);
|
||||
Assert.Equal(["Zones", "Countries", "States"], Rtty.MultiplierNamesFor(TestLog.UnitedStates));
|
||||
|
||||
[Fact]
|
||||
public void TheCabrilloNameIsTheRttyOne() => Assert.Equal("CQ-WW-RTTY", Rtty.CabrilloName);
|
||||
|
||||
@@ -6,10 +6,19 @@ 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));
|
||||
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);
|
||||
@@ -18,7 +27,7 @@ public class ContestDefinitionsTests
|
||||
[Fact]
|
||||
public void MultiplierNamesFillUpToThree()
|
||||
{
|
||||
ContestDefinition definition = ContestDefinitions.For(new CqWorldWide(ModeCategory.Cw));
|
||||
ContestDefinition definition = ContestDefinitions.For(new CqWorldWide(ModeCategory.Cw), Germany);
|
||||
Assert.Equal("Zones", definition.Multiplier1Name);
|
||||
Assert.Equal("Countries", definition.Multiplier2Name);
|
||||
Assert.Equal("N/A", definition.Multiplier3Name);
|
||||
@@ -33,10 +42,10 @@ public class ContestDefinitionsTests
|
||||
object made = contest == typeof(IaruHf)
|
||||
? new IaruHf()
|
||||
: Activator.CreateInstance(contest, ModeCategory.Cw)!;
|
||||
Assert.Equal(expected, ContestDefinitions.For((Contests.Contest)made).DupeType);
|
||||
Assert.Equal(expected, ContestDefinitions.For((Contests.Contest)made, Germany).DupeType);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void ContestWithSeveralModesIsBoth() =>
|
||||
Assert.Equal("BOTH", ContestDefinitions.For(new IaruHf()).Mode);
|
||||
Assert.Equal("BOTH", ContestDefinitions.For(new IaruHf(), Germany).Mode);
|
||||
}
|
||||
|
||||
@@ -112,7 +112,7 @@ public class SkippedFieldTests
|
||||
public bool SkipsField(ExchangeField field, CountryLookup? their) =>
|
||||
field.Slot == ExchangeSlot.Section && their?.Entity.PrimaryPrefix != "K";
|
||||
|
||||
public IReadOnlyList<string> MultiplierNames => ["States"];
|
||||
public IReadOnlyList<string> MultiplierNamesFor(StationInfo me) => ["States"];
|
||||
|
||||
public DupeScope DupeScope => DupeScope.PerBand;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user