wifi: Add enum round-trip tests

This commit is contained in:
Vicki Pfau 2024-05-23 19:35:18 -07:00
parent b7b09e6c17
commit 89a757b7fc
2 changed files with 73 additions and 3 deletions

View file

@ -9,6 +9,38 @@ thread_local! {
static TEST: RefCell<Option<Rc<Test>>> = RefCell::new(None);
}
#[macro_export]
macro_rules! enum_roundtrip {
($enum:ident => $value:literal : str = $variant:ident) => {
assert_eq!($enum::$variant.to_string(), $value);
assert_eq!($enum::from_str($value).unwrap(), $enum::$variant);
};
($enum:ident => $value:literal : $ty:ty = $variant:ident) => {
assert_eq!($enum::$variant as $ty, $value);
assert_eq!($enum::try_from($value), Ok($enum::$variant));
};
($enum:ident { $($value:literal : $ty:ident = $variant:ident,)+ }) => {
$(enum_roundtrip!($enum => $value : $ty = $variant);)+
};
}
#[macro_export]
macro_rules! enum_on_off {
($enum:ident => ($on:ident, $off:ident)) => {
assert_eq!($enum::from_str("on").unwrap(), $enum::$on);
assert_eq!($enum::from_str("On").unwrap(), $enum::$on);
assert_eq!($enum::from_str("enable").unwrap(), $enum::$on);
assert_eq!($enum::from_str("enabled").unwrap(), $enum::$on);
assert_eq!($enum::from_str("1").unwrap(), $enum::$on);
assert_eq!($enum::from_str("off").unwrap(), $enum::$off);
assert_eq!($enum::from_str("Off").unwrap(), $enum::$off);
assert_eq!($enum::from_str("disable").unwrap(), $enum::$off);
assert_eq!($enum::from_str("disabled").unwrap(), $enum::$off);
assert_eq!($enum::from_str("0").unwrap(), $enum::$off);
}
}
pub fn start() -> TestHandle {
TEST.with(|lock| {
assert!(lock.borrow().as_ref().is_none());