v0.13.10
This commit is contained in:
@@ -37,6 +37,7 @@ mod tests {
|
||||
..DeviceCommand::default()
|
||||
},
|
||||
false,
|
||||
1,
|
||||
)
|
||||
.expect("thermostat command payload");
|
||||
|
||||
@@ -49,4 +50,65 @@ mod tests {
|
||||
Some(serde_json::json!([19, 1, 1, 1]))
|
||||
);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn quiet_status_accepts_multistate_value_and_remembers_wire_mode() {
|
||||
let client = GreeClient::new(
|
||||
"test-controller".into(),
|
||||
None,
|
||||
None,
|
||||
Arc::new(AtomicBool::new(false)),
|
||||
);
|
||||
let mut device = Device::simulated_default();
|
||||
device.quiet = false;
|
||||
device.quiet_wire_value = None;
|
||||
|
||||
let response = json!({
|
||||
"cols": ["Pow", "Quiet"],
|
||||
"dat": [1, 2]
|
||||
});
|
||||
client.apply_status(&mut device, &response).expect("Quiet=2 status");
|
||||
|
||||
assert!(device.power);
|
||||
assert!(device.quiet);
|
||||
assert_eq!(device.quiet_wire_value, Some(2));
|
||||
assert_eq!(device.supports_quiet, Some(true));
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn quiet_command_can_preserve_learned_wire_mode() {
|
||||
let payload = GreeClient::command_payload(
|
||||
&DeviceCommand {
|
||||
quiet: Some(true),
|
||||
..DeviceCommand::default()
|
||||
},
|
||||
false,
|
||||
2,
|
||||
)
|
||||
.expect("quiet command payload");
|
||||
|
||||
assert_eq!(payload.get("opt").cloned(), Some(serde_json::json!(["Quiet"])));
|
||||
assert_eq!(payload.get("p").cloned(), Some(serde_json::json!([2])));
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn optional_multistate_feature_does_not_reject_whole_status() {
|
||||
let client = GreeClient::new(
|
||||
"test-controller".into(),
|
||||
None,
|
||||
None,
|
||||
Arc::new(AtomicBool::new(false)),
|
||||
);
|
||||
let mut device = Device::simulated_default();
|
||||
|
||||
let response = json!({
|
||||
"cols": ["Pow", "Air"],
|
||||
"dat": [1, 3]
|
||||
});
|
||||
client.apply_status(&mut device, &response).expect("Air=3 status");
|
||||
|
||||
assert!(device.power);
|
||||
assert!(device.air);
|
||||
assert_eq!(device.supports_air, Some(true));
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user