mirror of
https://gitlab.steamos.cloud/holo/steamos-manager.git
synced 2025-07-14 10:21:57 -04:00
cec: Add enum round-trip tests
This commit is contained in:
parent
8769298416
commit
32d31e9d27
1 changed files with 40 additions and 3 deletions
43
src/cec.rs
43
src/cec.rs
|
@ -35,10 +35,10 @@ impl TryFrom<u32> for HdmiCecState {
|
||||||
impl FromStr for HdmiCecState {
|
impl FromStr for HdmiCecState {
|
||||||
type Err = Error;
|
type Err = Error;
|
||||||
fn from_str(input: &str) -> Result<HdmiCecState, Self::Err> {
|
fn from_str(input: &str) -> Result<HdmiCecState, Self::Err> {
|
||||||
Ok(match input {
|
Ok(match input.to_lowercase().as_str() {
|
||||||
"disable" | "disabled" | "off" => HdmiCecState::Disabled,
|
"disable" | "disabled" | "off" => HdmiCecState::Disabled,
|
||||||
"control-only" | "ControlOnly" => HdmiCecState::ControlOnly,
|
"control-only" | "controlonly" => HdmiCecState::ControlOnly,
|
||||||
"control-wake" | "control-and-wake" | "ControlAndWake" => HdmiCecState::ControlAndWake,
|
"control-wake" | "control-and-wake" | "controlandwake" => HdmiCecState::ControlAndWake,
|
||||||
v => bail!("No enum match for value {v}"),
|
v => bail!("No enum match for value {v}"),
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
@ -123,3 +123,40 @@ impl<'dbus> HdmiCecControl<'dbus> {
|
||||||
Ok(())
|
Ok(())
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[cfg(test)]
|
||||||
|
mod test {
|
||||||
|
use super::*;
|
||||||
|
use crate::enum_roundtrip;
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn hdmi_cec_state_roundtrip() {
|
||||||
|
enum_roundtrip!(HdmiCecState {
|
||||||
|
0: u32 = Disabled,
|
||||||
|
1: u32 = ControlOnly,
|
||||||
|
2: u32 = ControlAndWake,
|
||||||
|
"Disabled": str = Disabled,
|
||||||
|
"ControlOnly": str = ControlOnly,
|
||||||
|
"ControlAndWake": str = ControlAndWake,
|
||||||
|
});
|
||||||
|
assert_eq!(
|
||||||
|
HdmiCecState::from_str("control-only").unwrap(),
|
||||||
|
HdmiCecState::ControlOnly
|
||||||
|
);
|
||||||
|
assert_eq!(
|
||||||
|
HdmiCecState::from_str("control-and-wake").unwrap(),
|
||||||
|
HdmiCecState::ControlAndWake
|
||||||
|
);
|
||||||
|
assert_eq!(HdmiCecState::Disabled.to_human_readable(), "disabled");
|
||||||
|
assert_eq!(
|
||||||
|
HdmiCecState::ControlOnly.to_human_readable(),
|
||||||
|
"control-only"
|
||||||
|
);
|
||||||
|
assert_eq!(
|
||||||
|
HdmiCecState::ControlAndWake.to_human_readable(),
|
||||||
|
"control-and-wake"
|
||||||
|
);
|
||||||
|
assert!(HdmiCecState::try_from(3).is_err());
|
||||||
|
assert!(HdmiCecState::from_str("working").is_err());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue