Handle empty GGA message

Fixes #105
This commit is contained in:
Morten 2022-08-03 13:55:04 -07:00
parent e2ffb55d6d
commit 91d0a73cd2
2 changed files with 24 additions and 1 deletions

View file

@ -40,7 +40,8 @@ namespace NmeaParser.Messages
FixTime = StringToTimeSpan(message[0]);
Latitude = NmeaMessage.StringToLatitude(message[1], message[2]);
Longitude = NmeaMessage.StringToLongitude(message[3], message[4]);
Quality = (Gga.FixQuality)int.Parse(message[5], CultureInfo.InvariantCulture);
if (!string.IsNullOrEmpty(message[5]))
Quality = (Gga.FixQuality)int.Parse(message[5], CultureInfo.InvariantCulture);
if (!string.IsNullOrEmpty(message[6]))
NumberOfSatellites = int.Parse(message[6], CultureInfo.InvariantCulture);
Hdop = NmeaMessage.StringToDouble(message[7]);

View file

@ -261,6 +261,28 @@ namespace NmeaParser.Tests
Assert.AreEqual(0, gga.NumberOfSatellites);
}
[TestMethod]
public void TestGPGGA_Empty()
{
string input = "$GPGGA,,,,,,,,,,,,,,*56";
var msg = NmeaMessage.Parse(input);
Assert.IsInstanceOfType(msg, typeof(Gga));
Gga gga = (Gga)msg;
Assert.AreEqual(0, gga.NumberOfSatellites);
Assert.AreEqual(Gga.FixQuality.Invalid, gga.Quality);
Assert.IsTrue(double.IsNaN(gga.GeoidalSeparation));
Assert.AreEqual(string.Empty, gga.GeoidalSeparationUnits);
Assert.IsTrue(double.IsNaN(gga.Longitude));
Assert.IsTrue(double.IsNaN(gga.Latitude));
Assert.IsTrue(double.IsNaN(gga.Altitude));
Assert.AreEqual(string.Empty, gga.AltitudeUnits);
Assert.IsTrue(double.IsNaN(gga.Hdop));
Assert.IsNull(gga.TimeSinceLastDgpsUpdate);
Assert.AreEqual(TimeSpan.Zero, gga.FixTime);
Assert.AreEqual(-1, gga.DgpsStationId);
}
[TestMethod]
public void TestPtlna()
{