using Nonemm.Core; namespace Nonemm.Spotting.Tests; public class SpotLineTests { private static readonly DateTime Now = new(2026, 5, 30, 12, 40, 0, DateTimeKind.Utc); [Fact] public void ANodeSpotIsReadIntoItsParts() { Spot? spot = SpotLine.Parse( "DX de W3LPL: 14025.0 DL1ABC CW 20 dB 25 WPM CQ 1234Z", Now); Assert.NotNull(spot); Assert.Equal("DL1ABC", spot.Call.Text); Assert.Equal(14_025_000, spot.Frequency.Hertz); Assert.Equal("W3LPL", spot.Spotter); Assert.Equal(new DateTime(2026, 5, 30, 12, 34, 0, DateTimeKind.Utc), spot.AtUtc); Assert.DoesNotContain("1234Z", spot.Comment); } [Fact] public void OtherTrafficIsNotASpot() => Assert.Null(SpotLine.Parse("WWV de VE7CC <18Z> : SFI=142, A=7, K=2", Now)); [Fact] public void ASpotTimedAfterNowCameInYesterday() { Spot? spot = SpotLine.Parse("DX de W3LPL: 14025.0 DL1ABC CQ 2350Z", Now); Assert.Equal(new DateTime(2026, 5, 29, 23, 50, 0, DateTimeKind.Utc), spot?.AtUtc); } }