using Nonemm.Core; using Nonemm.Formats.Adif; namespace Nonemm.Formats.Tests; public class AdifTests { private static readonly StationInfo Me = new() { Callsign = "DL1ABC" }; private static Qso Contact() => new() { Id = Qso.NewId(), TimestampUtc = new DateTime(2026, 5, 30, 12, 34, 56, DateTimeKind.Utc), Call = Callsign.Parse("JA1XYZ"), Frequency = Frequency.FromKilohertz(14_025), Mode = Modes.Cw, ContestName = "CQWW", SentReport = "599", ReceivedReport = "579", Zone = 25, ReceivedNumber = 34, }; [Fact] public void ContactSurvivesAWriteAndRead() { string text = new AdifWriter(Me).Write([Contact()]); Qso read = AdifReader.Read(text).Single(); Assert.Equal("JA1XYZ", read.Call.Text); Assert.Equal(new DateTime(2026, 5, 30, 12, 34, 56, DateTimeKind.Utc), read.TimestampUtc); Assert.Equal(14_025_000, read.Frequency.Hertz); Assert.Equal(Modes.Cw, read.Mode); Assert.Equal("579", read.ReceivedReport); Assert.Equal(25, read.Zone); Assert.Equal(34, read.ReceivedNumber); Assert.Equal("CQWW", read.ContestName); } [Fact] public void HeaderIsSkipped() { const string text = "Exported by something\r\n3.1.4 \r\n" + "JA1XYZ 20260530 123456 CW "; Assert.Equal("JA1XYZ", AdifReader.Read(text).Single().Call.Text); } [Fact] public void RecordWithNoCallIsDropped() { const string text = "\r\n20260530 \r\nJA1XYZ "; Assert.Single(AdifReader.Read(text)); } [Fact] public void BandStandsInWhenThereIsNoFrequency() { const string text = "\r\nJA1XYZ 20m "; Assert.Equal(Bands.Band20M, AdifReader.Read(text).Single().Band); } }