use crate::lighting::effects::*;
use crate::lighting::engine::tests::common::create_test_fixture;
use crate::lighting::engine::EffectEngine;
use std::collections::HashMap;
use std::time::Duration;
#[test]
fn test_static_effect() {
let mut engine = EffectEngine::new();
let fixture = create_test_fixture("test_fixture", 1, 1);
engine.register_fixture(fixture);
let mut parameters = HashMap::new();
parameters.insert("dimmer".to_string(), 0.5);
parameters.insert("red".to_string(), 1.0);
let effect = EffectInstance::new(
"test_effect".to_string(),
EffectType::Static {
parameters: parameters.clone(),
duration: Duration::from_secs(5),
},
vec!["test_fixture".to_string()],
None,
None,
None,
);
engine.start_effect(effect).unwrap();
let commands = engine.update(Duration::from_millis(16), None).unwrap();
assert_eq!(commands.len(), 2);
let dimmer_cmd = commands.iter().find(|cmd| cmd.channel == 1).unwrap();
assert_eq!(dimmer_cmd.value, 127);
let red_cmd = commands.iter().find(|cmd| cmd.channel == 2).unwrap();
assert_eq!(red_cmd.value, 255);
}