From f34c422b20fd1fc1b4bf71ebf448b3c42f104226 Mon Sep 17 00:00:00 2001 From: Valentin Popov Date: Fri, 3 Jul 2026 21:44:26 +0400 Subject: test: realign stage 2 acceptance coverage --- crates/fparkan-runtime/src/lib.rs | 56 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 56 insertions(+) (limited to 'crates/fparkan-runtime/src') diff --git a/crates/fparkan-runtime/src/lib.rs b/crates/fparkan-runtime/src/lib.rs index d10647d..6a4e478 100644 --- a/crates/fparkan-runtime/src/lib.rs +++ b/crates/fparkan-runtime/src/lib.rs @@ -1114,6 +1114,50 @@ mod tests { } } + #[test] + #[ignore = "requires local testdata corpus"] + fn selected_is_and_is2_missions_preserve_runtime_object_drafts() { + for case in [ + ("IS", "MISSIONS/Autodemo.00/data.tma"), + ("IS2", "MISSIONS/Autodemo.00/data.tma"), + ] { + let root = local_testdata_root(case.0); + let vfs: Arc = Arc::new(DirectoryVfs::new(root)); + let mut engine = create( + EngineConfig { + mode: EngineMode::Headless, + }, + EngineServices::new(vfs), + ) + .expect("engine"); + let loaded = load_mission( + &mut engine, + MissionRequest { + key: case.1.to_string(), + }, + ) + .expect("load mission"); + let drafts = loaded_mission_object_drafts(&engine).expect("object drafts"); + let assets = loaded_mission_assets(&engine).expect("mission assets"); + + assert_eq!(drafts.len(), loaded.object_count); + assert!(drafts.iter().any(|draft| !draft.visual_ids.is_empty())); + for (index, draft) in drafts.iter().enumerate() { + assert_eq!( + draft.original_id, + u32::try_from(index).ok().map(OriginalObjectId) + ); + assert_eq!(draft.visual_ids, assets.visuals_for_object(index)); + assert!(draft.position.iter().all(|component| component.is_finite())); + assert!(draft + .orientation_raw + .iter() + .all(|component| component.is_finite())); + assert!(draft.scale.iter().all(|component| component.is_finite())); + } + } + } + #[test] #[ignore = "requires licensed corpus"] fn licensed_corpora_load_all_mission_foundations() { @@ -1326,6 +1370,18 @@ mod tests { root } + fn local_testdata_root(name: &str) -> PathBuf { + let root = Path::new(env!("CARGO_MANIFEST_DIR")) + .join("../../testdata") + .join(name); + assert!( + root.is_dir(), + "local testdata root is missing: {}", + root.display() + ); + root + } + #[derive(Clone, Copy)] enum DenyRule { Suffix(&'static str), -- cgit v1.2.3