PkmnLib_rs/tests/main.rs

61 lines
1.6 KiB
Rust

#![feature(custom_test_frameworks)]
#![feature(once_cell)]
#![test_runner(datatest::runner)]
use std::fs::File;
use std::io::Read;
use std::path::Path;
use conquer_once::OnceCell;
use pkmn_lib::dynamic_data::{DynamicLibrary, ScriptCategory};
use crate::common::{library_loader, TestCase};
pub mod common;
static LIBRARY: OnceCell<DynamicLibrary> = OnceCell::uninit();
fn get_library<'a>() -> &'a DynamicLibrary {
LIBRARY.get_or_init(|| {
let start_time = chrono::Utc::now();
let lib = library_loader::load_library();
let end_time = chrono::Utc::now();
println!("Built library in {} ms", (end_time - start_time).num_milliseconds());
lib
})
}
#[test]
#[cfg_attr(miri, ignore)]
fn validate_library_load() {
let start_time = chrono::Utc::now();
library_loader::load_library();
let end_time = chrono::Utc::now();
println!("Built library in {} ms", (end_time - start_time).num_milliseconds());
}
#[datatest::files("tests/test_cases", {
input in r"^(.*)\.yaml"
})]
#[cfg_attr(miri, ignore)]
fn integration_tests(input: &Path) {
let mut str: String = "".to_string();
let mut file = File::open(input).unwrap();
file.read_to_string(&mut str).unwrap();
let test_case = serde_yaml::from_str::<TestCase>(&*str).unwrap();
println!("\tRunning integration test {}", test_case.name);
test_case.run_test(get_library());
}
#[test]
#[cfg_attr(miri, ignore)]
fn validate_script() {
let lib = library_loader::load_library();
let script = lib
.load_script(0 as *const u8, ScriptCategory::Move, &"test".into())
.unwrap()
.unwrap();
script.on_initialize(&[]);
}