Add CW keying, function key messages and the documentation
The function keys send through cwdaemon or a WinKeyer, with N1MM's message macros. Escape stops sending. Settings are read with the reflection serializer rather than a generated one: the generated one hands back null for every property the file leaves out instead of the value the property is declared with, which crashed the program the first time a new setting was added. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
54
tests/Nonemm.Session.Tests/MessageExpanderTests.cs
Normal file
54
tests/Nonemm.Session.Tests/MessageExpanderTests.cs
Normal file
@@ -0,0 +1,54 @@
|
||||
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()));
|
||||
}
|
||||
Reference in New Issue
Block a user