#![allow(dead_code)]
use std::path::PathBuf;
const MANIFEST: &str = include_str!("../data/openrao-fixtures.txt");
pub fn root() -> PathBuf {
PathBuf::from(env!("CARGO_MANIFEST_DIR")).join("tests/data/benchmark-grids/powsybl-open-rao")
}
pub fn path(relative: &str) -> PathBuf {
let path = root().join(relative);
assert!(
path.exists(),
"{} does not exist; run `git submodule update --init tests/data/benchmark-grids`",
path.display()
);
path
}
pub fn fixture(name: &str) -> PathBuf {
let relative = entries()
.find(|(n, _)| *n == name)
.unwrap_or_else(|| panic!("{name} is not listed in tests/data/openrao-fixtures.txt"))
.1;
path(relative)
}
pub fn names_with_extension(extension: &str) -> Vec<&'static str> {
let mut names: Vec<&str> = entries()
.map(|(n, _)| n)
.filter(|n| n.rsplit('.').next() == Some(extension))
.collect();
names.sort();
names
}
fn entries() -> impl Iterator<Item = (&'static str, &'static str)> {
MANIFEST
.lines()
.filter(|l| !l.trim().is_empty() && !l.starts_with('#'))
.map(|l| {
let mut fields = l.split_whitespace();
(
fields.next().unwrap(),
fields.next().expect("a name and a path"),
)
})
}