use serde::{de::DeserializeOwned, Deserialize};
use std::fmt::Debug;
use std::fs::File;
use std::{env, io::BufReader};
#[derive(Deserialize, Debug)]
pub struct TestData<T> {
pub input: T,
}
impl<T: DeserializeOwned> TestData<T> {
pub fn new(default_input: T) -> Self {
if let Ok(path) = env::var("TEST_DATA_PATH") {
let Ok(file) = File::open(path) else {
return TestData {
input: default_input,
};
};
let reader = BufReader::new(file);
let Ok(ret) = serde_json::from_reader(reader) else {
return TestData {
input: default_input,
};
};
ret
} else {
TestData {
input: default_input,
}
}
}
}