use std::env;
use std::fs::read_dir;
use std::fs::DirEntry;
use std::fs::File;
use std::io::Write;
use std::path::Path;
fn main() {
gen_tests();
}
fn gen_tests() {
let out_dir = env::var("OUT_DIR").unwrap();
let destination = Path::new(&out_dir).join("tests.rs");
let mut test_file = File::create(destination).unwrap();
if let Ok(test_data_directory) = read_dir("../res/adf-instances/instances/") {
write_header(&mut test_file);
for file in test_data_directory {
write_test(&mut test_file, &file.unwrap());
}
}
}
fn write_test(test_file: &mut File, file: &DirEntry) {
let file = file.path().canonicalize().unwrap();
let path = file.display();
let test_name = format!("{}", file.file_name().unwrap().to_string_lossy())
.replace('.', "_")
.replace('-', "_")
.replace('@', "at")
.to_lowercase();
let grounded_name = format!(
"{}-grounded.txt",
file.as_path().as_os_str().to_string_lossy()
)
.replace(
"adf-instances/instances",
"adf-instances/grounded-interpretations",
);
write!(
test_file,
include_str!("./tests/test_template"),
name = test_name,
path = path,
grounded = grounded_name
)
.unwrap();
}
fn write_header(test_file: &mut File) {
write!(
test_file,
r#"
use adf_bdd::adfbiodivine::Adf;
use adf_bdd::parser::AdfParser;
use test_log::test;
"#
)
.unwrap();
}