using Nonemm.Core; namespace Nonemm.Core.Tests; public class CallsignTests { [Theory] [InlineData("N8BJQ", "N8")] [InlineData("9A1AA", "9A1")] [InlineData("K1ABC", "K1")] [InlineData("VP2EXX", "VP2")] [InlineData("LZ1400PS", "LZ1400")] public void WpxPrefixEndsAtTheLastDigit(string call, string expected) => Assert.Equal(expected, Callsign.Parse(call).WpxPrefix()); [Fact] public void CallWithNoDigitTakesAZeroAfterTwoLetters() => Assert.Equal("RA0", Callsign.Parse("RAEM").WpxPrefix()); [Theory] [InlineData("KH9/N8BJQ")] [InlineData("N8BJQ/KH9")] public void PortablePrefixBecomesTheWpxPrefix(string call) => Assert.Equal("KH9", Callsign.Parse(call).WpxPrefix()); [Fact] public void PortablePrefixWithNoDigitGainsAZero() => Assert.Equal("PA0", Callsign.Parse("PA/N8BJQ").WpxPrefix()); [Fact] public void SingleDigitModifierReplacesTheDigit() => Assert.Equal("N9", Callsign.Parse("N8BJQ/9").WpxPrefix()); [Fact] public void PortableModifierChangesNothing() { Callsign call = Callsign.Parse("DL1ABC/P"); Assert.Equal("DL1", call.WpxPrefix()); Assert.Null(call.PortablePrefix); Assert.Equal("DL1ABC", call.Station); } [Fact] public void MaritimeMobileCountsForNothing() { Callsign call = Callsign.Parse("DL1ABC/MM"); Assert.True(call.IsMaritimeMobile); Assert.False(call.CountsForEntity); Assert.Null(call.WpxPrefix()); } [Fact] public void PortablePrefixIsWhatTheCountryFileGetsAsked() => Assert.Equal("KH9", Callsign.Parse("KH9/N8BJQ").EntityLookupText()); [Theory] [InlineData("JA1XYZ")] [InlineData("DL1ABC/P")] [InlineData("KH9/N8BJQ")] [InlineData("9A1A")] public void ACallThatCouldHaveBeenIssuedIsPlausible(string text) => Assert.True(Callsign.Parse(text).IsPlausible); [Theory] [InlineData("12345")] [InlineData("ABCDE")] [InlineData("AB")] [InlineData("JA1XY Z")] [InlineData("")] public void ATextThatCouldNotBeACallIsNot(string text) => Assert.False(Callsign.Parse(text).IsPlausible); [Fact] public void TwoParsesOfOneCallAreTheSameCallsign() { Assert.Equal(Callsign.Parse("OH1SIC"), Callsign.Parse("OH1SIC")); Assert.Equal(Callsign.Parse("KH9/N8BJQ"), Callsign.Parse("KH9/N8BJQ")); Assert.NotEqual(Callsign.Parse("OH1SIC"), Callsign.Parse("OH1SID")); } }