Files
Nonemm/tests/Nonemm.Contests.Tests/OceaniaDxTests.cs
T
erikbrockoandClaude Opus 5 5a3b2db135 Pay Oceania's high bands what they are worth
The band table stopped after 40 metres and gave every other band one point.
It should be 20 on 160, 10 on 80, 5 on 40, 1 on 20, 2 on 15 and 3 on 10:
from Oceania the high bands are the hard ones, so they pay more than 20
metres does. The WIA scoring table and N1MM's COceania.ComputePoints agree
on all six.

The catch-all hid a second fault. N1MM's table ends without one, so a band
that is not in the contest — the WARC bands, 6 metres — scores nothing;
here it scored a point.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_0157i7PiZyqBkquxS9A6FTdQ
2026-09-10 20:38:00 +00:00

44 lines
1.4 KiB
C#

using Nonemm.Contests.Rules;
using Nonemm.Core;
namespace Nonemm.Contests.Tests;
public class OceaniaDxTests
{
private static ContestLog LogFor() =>
new(new OceaniaDx(ModeCategory.Phone), TestLog.Germany, TestLog.CountryFile);
[Theory]
[InlineData(1_830, 20)]
[InlineData(3_650, 10)]
[InlineData(7_050, 5)]
[InlineData(14_150, 1)]
[InlineData(21_150, 2)]
[InlineData(28_150, 3)]
public void EachBandOfTheContestHasItsOwnPoints(double kilohertz, int expected) =>
Assert.Equal(
expected,
LogFor().Judge(TestLog.Contact("VK4XYZ", kilohertz, mode: Modes.Usb)).Points);
/// The contest is on six bands. A contact on any other — the WARC bands,
/// 6 metres — is worth nothing, which is where N1MM's table ends too.
[Theory]
[InlineData(10_120)]
[InlineData(18_100)]
[InlineData(24_930)]
[InlineData(50_150)]
public void ABandOutsideTheContestScoresNothing(double kilohertz) =>
Assert.Equal(
0,
LogFor().Judge(TestLog.Contact("VK4XYZ", kilohertz, mode: Modes.Usb)).Points);
/// One side of the contact has to be in Oceania.
[Fact]
public void AContactOutsideOceaniaScoresNothing()
{
Verdict verdict = LogFor().Judge(TestLog.Contact("IK2XYZ", mode: Modes.Usb));
Assert.Equal(0, verdict.Points);
Assert.Empty(verdict.NewMultipliers);
}
}