///|
fn main {
  let gga = @nmea.parse_gga(
    @nmea.parse_frame(
      "$GPGGA,123519,4807.038,N,01131.000,E,1,08,0.9,545.4,M,46.9,M,,*47\r\n",
    ).unwrap(),
  ).unwrap()
  let rmc = @nmea.parse_rmc(
    @nmea.parse_frame(
      "$GPRMC,123519,A,4807.038,N,01131.000,E,022.4,084.4,230394,003.1,W*6A\r\n",
    ).unwrap(),
  ).unwrap()
  let fusion = @nmea.FixFusion::new()
  fusion.add_gga(gga, record_index=0, date=Some(rmc.date()))
  fusion.add_rmc(rmc, record_index=1)
  let fix = fusion.finish()[0]
  guard fix.usable() && @nmea.validate_fused_fix_integrity(fix).length() == 0 else {
    abort("fused fix is not usable and consistent")
  }
  println(
    "usable=true sources=" + fix.source_record_indexes().length().to_string(),
  )
}