use std::fs::File; use std::io::BufReader; use std::path::Path; use zen_engine::loader::{FilesystemLoader, FilesystemLoaderOptions}; use zen_engine::model::{DecisionContent, GraphContent}; #[allow(dead_code)] pub fn test_data_root() -> String { let cargo_root = Path::new(env!("CARGO_MANIFEST_DIR")); cargo_root .parent() .unwrap() .parent() .unwrap() .join("test-data") .to_string_lossy() .to_string() } pub fn load_raw_test_data(key: &str) -> BufReader { let file = File::open(Path::new(&test_data_root()).join(key)).unwrap(); BufReader::new(file) } #[allow(dead_code)] pub fn load_test_data(key: &str) -> GraphContent { let content: DecisionContent = serde_json::from_reader(load_raw_test_data(key)).unwrap(); match content { DecisionContent::Graph(g) => (*g).clone(), DecisionContent::Policy(_) => { panic!("expected graph test fixture, got policy: {key}") } } } #[allow(dead_code)] pub fn create_fs_loader() -> FilesystemLoader { FilesystemLoader::new(FilesystemLoaderOptions { root: test_data_root(), }) }