64 lines
1.9 KiB
Rust
64 lines
1.9 KiB
Rust
|
|
//! Relay entity representing a relay aggregate in the domain model.
|
||
|
|
|
||
|
|
use super::types::{RelayId, RelayState};
|
||
|
|
|
||
|
|
#[cfg(test)]
|
||
|
|
mod tests {
|
||
|
|
use super::*;
|
||
|
|
use crate::domain::relay::controler::ControllerError;
|
||
|
|
|
||
|
|
#[test]
|
||
|
|
fn test_relay_new_creates_relay() {
|
||
|
|
// Test: Relay::new(RelayId(1), RelayState::Off, None) creates relay
|
||
|
|
let relay_id = RelayId::new(1).unwrap();
|
||
|
|
let relay = Relay::new(relay_id, RelayState::Off, None);
|
||
|
|
|
||
|
|
assert_eq!(relay.id(), relay_id);
|
||
|
|
assert_eq!(relay.state(), RelayState::Off);
|
||
|
|
assert_eq!(relay.label(), None);
|
||
|
|
}
|
||
|
|
|
||
|
|
#[test]
|
||
|
|
fn test_relay_toggle_flips_state() {
|
||
|
|
// Test: relay.toggle() flips state
|
||
|
|
let relay_id = RelayId::new(1).unwrap();
|
||
|
|
let mut relay = Relay::new(relay_id, RelayState::Off, None);
|
||
|
|
|
||
|
|
// Toggle from Off to On
|
||
|
|
relay.toggle();
|
||
|
|
assert_eq!(relay.state(), RelayState::On);
|
||
|
|
|
||
|
|
// Toggle from On to Off
|
||
|
|
relay.toggle();
|
||
|
|
assert_eq!(relay.state(), RelayState::Off);
|
||
|
|
}
|
||
|
|
|
||
|
|
#[test]
|
||
|
|
fn test_relay_turn_on_sets_state_to_on() {
|
||
|
|
// Test: relay.turn_on() sets state to On
|
||
|
|
let relay_id = RelayId::new(1).unwrap();
|
||
|
|
let mut relay = Relay::new(relay_id, RelayState::Off, None);
|
||
|
|
|
||
|
|
relay.turn_on();
|
||
|
|
assert_eq!(relay.state(), RelayState::On);
|
||
|
|
|
||
|
|
// Calling turn_on when already on should keep it on
|
||
|
|
relay.turn_on();
|
||
|
|
assert_eq!(relay.state(), RelayState::On);
|
||
|
|
}
|
||
|
|
|
||
|
|
#[test]
|
||
|
|
fn test_relay_turn_off_sets_state_to_off() {
|
||
|
|
// Test: relay.turn_off() sets state to Off
|
||
|
|
let relay_id = RelayId::new(1).unwrap();
|
||
|
|
let mut relay = Relay::new(relay_id, RelayState::On, None);
|
||
|
|
|
||
|
|
relay.turn_off();
|
||
|
|
assert_eq!(relay.state(), RelayState::Off);
|
||
|
|
|
||
|
|
// Calling turn_off when already off should keep it off
|
||
|
|
relay.turn_off();
|
||
|
|
assert_eq!(relay.state(), RelayState::Off);
|
||
|
|
}
|
||
|
|
}
|