Add test scenario
This commit is contained in:
@ -378,6 +378,7 @@ mod test {
|
||||
use crate::energy::consumption::EnergyConsumption;
|
||||
use crate::energy::engine::EnergyEngine;
|
||||
use crate::utils::time_utils::time_secs;
|
||||
use rust_embed::Embed;
|
||||
|
||||
#[derive(serde::Deserialize)]
|
||||
struct TestRelayState {
|
||||
@ -442,22 +443,38 @@ mod test {
|
||||
)
|
||||
}
|
||||
|
||||
fn run_test(conf: &str) {
|
||||
fn run_test(name: &str, conf: &str) {
|
||||
let (devices, mut energy_engine, consumption, states) = parse_test_config(conf);
|
||||
|
||||
energy_engine.refresh(consumption, &devices);
|
||||
|
||||
for d in states {
|
||||
for r in d.relays {
|
||||
assert_eq!(energy_engine.relay_state(r.id).on, r.should_be_on);
|
||||
for (device_s, device) in states.iter().zip(&devices) {
|
||||
for (relay_s, relay) in device_s.relays.iter().zip(&device.relays) {
|
||||
let is_on = energy_engine.relay_state(relay_s.id).on;
|
||||
|
||||
assert_eq!(
|
||||
energy_engine.relay_state(relay_s.id).on,
|
||||
relay_s.should_be_on,
|
||||
"For test {name} on relay {} got state {is_on} instead of {}",
|
||||
relay.name,
|
||||
relay_s.should_be_on
|
||||
);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn test_basic_conf() {
|
||||
run_test(include_str!("../../engine_test/test_basic_conf.yaml"))
|
||||
}
|
||||
#[derive(Embed)]
|
||||
#[folder = "engine_test/"]
|
||||
struct Asset;
|
||||
|
||||
// TODO : test more scenarios
|
||||
#[test]
|
||||
fn test_confs() {
|
||||
for file in Asset::iter() {
|
||||
let content = Asset::get(&file).unwrap();
|
||||
|
||||
log::info!("Testing {file}");
|
||||
|
||||
run_test(&file, &String::from_utf8(content.data.to_vec()).unwrap())
|
||||
}
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user