#[cfg(feature = "serde")]
use serde::{Deserialize, Serialize};
#[cfg(feature = "nmea-v2-3")]
use crate::nmea_content::FaaMode;
use crate::{
self as nmea0183_parser, NmeaParse,
nmea_content::{Location, Status, parse::location},
};
#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))]
#[cfg_attr(feature = "serde", serde(rename_all = "camelCase"))]
#[derive(Debug, Default, Clone, PartialEq, NmeaParse)]
pub struct GLL {
#[nmea(parser(location))]
pub location: Option<Location>,
pub fix_time: Option<time::Time>,
pub status: Status,
#[cfg(feature = "nmea-v2-3")]
#[cfg_attr(docsrs, doc(cfg(feature = "nmea-v2-3")))]
pub faa_mode: Option<FaaMode>,
}
#[cfg(test)]
mod tests {
use super::*;
use crate::IResult;
#[test]
fn test_gll_parsing() {
let cases = [",", ",A"];
for &input in &cases {
let i = format!("4404.14012,N,12118.85993,W,001037.00,A{}", input);
let result: IResult<_, _> = GLL::parse(i.as_str());
assert!(result.is_ok(), "Failed: {input:?}\n\t{result:?}");
println!("Parsed GLL: {:?}", result.unwrap());
}
}
#[cfg(feature = "nmea-v2-3")]
#[test]
fn test_gll_parsing_v2_3() {
let cases = ["", "Z", ",Z"];
for &input in &cases {
let i = format!("4404.14012,N,12118.85993,W,001037.00,A{}", input);
let result: IResult<_, _> = GLL::parse(i.as_str());
assert!(result.is_err(), "Failed: {input:?}\n\t{result:?}");
}
}
}