v0.8.14
This commit is contained in:
@@ -0,0 +1,42 @@
|
||||
#[cfg(test)]
|
||||
mod tests {
|
||||
use super::*;
|
||||
|
||||
#[test]
|
||||
fn invalid_status_frame_does_not_partially_mutate_device() {
|
||||
let client = GreeClient::new(
|
||||
"test-controller".into(),
|
||||
None,
|
||||
None,
|
||||
Arc::new(AtomicBool::new(false)),
|
||||
);
|
||||
let mut device = Device::simulated_default();
|
||||
device.power = true;
|
||||
device.mode = "heat".into();
|
||||
device.target_temperature = 24.0;
|
||||
let before = device.clone();
|
||||
|
||||
let response = json!({
|
||||
"cols": ["Pow", "Mod", "SetTem"],
|
||||
"dat": [0, null, "not-a-number"]
|
||||
});
|
||||
assert!(client.apply_status(&mut device, &response).is_err());
|
||||
assert_eq!(device.power, before.power);
|
||||
assert_eq!(device.mode, before.mode);
|
||||
assert_eq!(device.target_temperature, before.target_temperature);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn thermostat_standby_setpoint_low_fan_quiet_and_sleep_share_one_frame() {
|
||||
let payload = GreeClient::command_payload(&DeviceCommand {
|
||||
target_temperature: Some(19.0),
|
||||
fan_speed: Some(1),
|
||||
quiet: Some(true),
|
||||
sleep: Some(true),
|
||||
..DeviceCommand::default()
|
||||
}, false).expect("thermostat command payload");
|
||||
|
||||
assert_eq!(payload.get("opt").cloned(), Some(serde_json::json!(["SetTem", "WdSpd", "Quiet", "SwhSlp"])));
|
||||
assert_eq!(payload.get("p").cloned(), Some(serde_json::json!([19, 1, 1, 1])));
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user