using Nonemm.Contests; using Nonemm.Contests.Rules; using Nonemm.Core; using Nonemm.Storage; namespace Nonemm.Session.Tests; public class MessageExpanderTests { private static LoggingSession Session() { FakeLogStore store = new(); ContestInstance instance = store.AddContest(new ContestInstance { ContestNumber = 0, ContestName = "CQWW", SentExchange = "14", }); return new LoggingSession( store, new CqWorldWide(ModeCategory.Cw), instance, new StationInfo { Callsign = "DL1ABC", CqZone = 14, Name = "Erik" }, null); } [Fact] public void MyCallAndTheirCallAreFilledIn() { LoggingSession session = Session(); session.Entry.Call = "JA1XYZ"; Assert.Equal("JA1XYZ DE DL1ABC", MessageExpander.Expand("{CALL} DE {MYCALL}", session)); } [Fact] public void TheSentExchangeComesFromTheContestSetup() => Assert.Equal("599 14", MessageExpander.Expand("{SENTRST} {EXCH}", Session())); [Fact] public void HashIsTheSerialNumber() => Assert.Equal("NR 1", MessageExpander.Expand("NR #", Session())); [Fact] public void CutNumbersReplaceZeroAndNine() => Assert.Equal("5NN", MessageExpander.Expand("{SENTRSTCUT}", Session())); [Fact] public void AMacroThatIsNotKnownDisappears() => Assert.Equal("TU ", MessageExpander.Expand("TU {NOTAMACRO}", Session())); [Fact] public void AnUnclosedMacroIsLeftAsTyped() => Assert.Equal("TU {MYCALL", MessageExpander.Expand("TU {MYCALL", Session())); }