Files
flightplanner/crates/core/tests/export.rs
T
Alexandre 2cb633e99d Initial commit: offline flight planner (Rust, PFPX-class)
Clean-room reproduction of PFPX: route generation + IFPS validation + OFP.
Independent design — official ICAO/EUROCONTROL data only (RAD, FRA points,
IFPUV oracle); no community FPL sources.

Workspace crates: core (routing/discover/rad/navdata/perf/export),
cli, server, rad (Annex parser), gui (Tauri v2 + React + MapLibre).
Route discovery: oracle-in-the-loop repair against Eurocontrol IFPUV.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-08-21 11:10:35 +02:00

37 lines
1.3 KiB
Rust

//! Step-5 test: export a fixture route to `.pln`, `.fms` and OFP text.
use std::path::PathBuf;
use flightplanner_core::{db, export, routing};
use rusqlite::Connection;
fn fixtures_db() -> Connection {
let dir = PathBuf::from(env!("CARGO_MANIFEST_DIR")).join("tests/fixtures");
let mut conn = Connection::open_in_memory().unwrap();
db::import_navdata(&mut conn, &dir).unwrap();
conn
}
#[test]
fn exports_pln_fms_and_ofp() {
let conn = fixtures_db();
let route = routing::plan_route(&conn, "LFPG", "EGLL", None).unwrap();
let pln = export::pln::to_pln(&conn, &route, 34000).unwrap();
assert!(pln.contains("<SimBase.Document"));
assert!(pln.contains("<DepartureID>LFPG</DepartureID>"));
assert!(pln.contains("<DestinationID>EGLL</DestinationID>"));
assert!(pln.contains("<ATCWaypointType>Airport</ATCWaypointType>"));
let fms = export::fms::to_fms(&conn, &route, 34000).unwrap();
assert!(fms.starts_with("I\n1100 Version"));
assert!(fms.contains("ADEP LFPG"));
assert!(fms.contains("ADES EGLL"));
assert!(fms.contains("NUMENR "));
let ofp = export::ofp::to_ofp(&route, None, Some("A320"), Some(340));
assert!(ofp.contains("OPERATIONAL FLIGHT PLAN"));
assert!(ofp.contains("LFPG -> EGLL"));
assert!(ofp.contains("FL340"));
}