mirror of
https://github.com/dotMorten/NmeaParser.git
synced 2026-04-06 15:04:34 +00:00
Adds ability to register custom messages
This commit is contained in:
parent
231c461129
commit
ea1a45c8ec
2 changed files with 84 additions and 13 deletions
|
|
@ -810,5 +810,36 @@ namespace NmeaParser.Tests
|
|||
var zda = (Zda)msg;
|
||||
Assert.AreEqual(new DateTimeOffset(2015, 09, 21, 22, 56, 27, 00, TimeSpan.Zero), zda.FixDateTime);
|
||||
}
|
||||
|
||||
[TestMethod]
|
||||
public void TestCustomMessageRegistration()
|
||||
{
|
||||
int count = NmeaMessage.RegisterAssembly(typeof(CustomMessage).Assembly, true);
|
||||
Assert.AreEqual(1, count);
|
||||
var input = "$PTEST,TEST*7C";
|
||||
var msg = NmeaMessage.Parse(input);
|
||||
Assert.IsInstanceOfType(msg, typeof(CustomMessage));
|
||||
var cmsg = (CustomMessage)msg;
|
||||
Assert.AreEqual("TEST", cmsg.Value);
|
||||
}
|
||||
|
||||
[TestMethod]
|
||||
[ExpectedException(typeof(InvalidOperationException))]
|
||||
public void TestCustomMessageDuplicateRegistrationFailure()
|
||||
{
|
||||
int count = NmeaMessage.RegisterAssembly(typeof(CustomMessage).Assembly, true);
|
||||
Assert.AreEqual(1, count);
|
||||
count = NmeaMessage.RegisterAssembly(typeof(CustomMessage).Assembly, false); // This will throw
|
||||
}
|
||||
|
||||
[Nmea.NmeaMessageType("PTEST")]
|
||||
private class CustomMessage : NmeaMessage
|
||||
{
|
||||
public CustomMessage(string type, string[] parameters) : base(type, parameters)
|
||||
{
|
||||
Value = parameters[0];
|
||||
}
|
||||
public string Value { get; }
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue