///|
fn point(longitude : Double, second : String, source : Int) -> @nmea.TrackPoint {
let date = @nmea.UtcDate::new(2026, 8, 7, @nmea.SourceRef::sentence(source)).unwrap()
let time = @nmea.UtcTime::parse(second, @nmea.SourceRef::sentence(source)).unwrap()
@nmea.TrackPoint::new(
0.0,
longitude,
datetime=Some(@nmea.UtcDateTime::new(date, time)),
quality=Some(@nmea.GpsFix),
satellites=Some(8),
source_record_indexes=[source],
).unwrap()
}
///|
fn main {
let track = @nmea.Track::from_points([
point(0.0, "000000", 0),
point(0.01, "000001", 1),
]).unwrap()
let thresholds = @nmea.QualityThresholds::new(
max_segment_distance_meters=500.0,
max_speed_mps=100.0,
).unwrap()
let report = @nmea.analyze_track_quality(track, thresholds)
guard report.findings().length() == 2 else {
abort("expected jump and excessive-speed findings")
}
println(@nmea.render_track_quality_json(report))
}