namespace Nonemm.Rig.Tests; public class RigctldReplyTests { [Fact] public void FieldsAreReadOffAnExtendedAnswer() { RigctldReply reply = RigctldReply.Parse([ "get_split_vfo:", "Split: 1", "TX VFO: VFOB", "RPRT 0", ]); Assert.True(reply.IsOk); Assert.Equal(1, reply.Number("Split")); Assert.Equal("VFOB", reply.Value("TX VFO")); } /// A radio that cannot do what was asked answers -11. That is an answer, /// not a broken connection. [Fact] public void ARadioThatCannotDoItAnswersWithACode() { RigctldReply reply = RigctldReply.Parse(["RPRT -11"]); Assert.False(reply.IsOk); Assert.Equal(-11, reply.Result); Assert.Null(reply.Number("Split")); } [Fact] public void TheEchoedCommandIsNotAField() { RigctldReply reply = RigctldReply.Parse(["get_freq:", "Frequency: 14025000", "RPRT 0"]); Assert.Equal(14_025_000, reply.Number("Frequency")); Assert.Null(reply.Value("get_freq")); } [Fact] public void ASetCommandEchoesItsArgumentAndReportsSuccess() { RigctldReply reply = RigctldReply.Parse(["set_freq: 14025000", "RPRT 0"]); Assert.True(reply.IsOk); Assert.Equal(14_025_000, reply.Number("set_freq")); } [Fact] public void ATextValueThatIsNotANumberReadsBackAsNull() { RigctldReply reply = RigctldReply.Parse(["get_mode:", "Mode: CW", "Passband: 500", "RPRT 0"]); Assert.Equal("CW", reply.Value("Mode")); Assert.Null(reply.Number("Mode")); Assert.Equal(500, reply.Number("Passband")); } }