test: make keybind order not matter for config test

main
Angelo Fallaria 2 years ago
parent 3b0edf53e4
commit 49fd6268a5

@ -476,23 +476,39 @@ mod tests {
fn eval_config_test(contents: &str, expected_hotkeys: Vec<Hotkey>) -> std::io::Result<()> {
let result = parse_contents(contents.to_string());
let mut expected_hotkeys_mut = expected_hotkeys;
if result.is_err() {
panic!("Expected Ok config, found Err {:?}", result.unwrap_err());
}
let actual_hotkeys = result.unwrap();
assert_eq!(actual_hotkeys.len(), expected_hotkeys.len());
for i in 0..actual_hotkeys.len() {
assert_eq!(actual_hotkeys[i].keysym, expected_hotkeys[i].keysym);
assert_eq!(actual_hotkeys[i].modifiers.len(), expected_hotkeys[i].modifiers.len());
for j in 0..expected_hotkeys[i].modifiers.len() {
assert!(actual_hotkeys[i].modifiers.contains(&expected_hotkeys[i].modifiers[j]));
assert_eq!(actual_hotkeys.len(), expected_hotkeys_mut.len());
// Go through each actual hotkey, and pop a corresponding
// hotkey from the expected hotkeys
// to make sure that order does not matter
for hotkey in actual_hotkeys {
if let Some(index) = expected_hotkeys_mut.iter().position(|key| {
key.keysym == hotkey.keysym
&& key.command == hotkey.command
&& key.modifiers == key.modifiers
}) {
expected_hotkeys_mut.remove(index);
} else {
panic!(
"unexpected hotkey {:#?} found in result\nExpected result:\n{:#?}",
hotkey, expected_hotkeys_mut
);
}
}
assert_eq!(actual_hotkeys[i].command, expected_hotkeys[i].command);
if expected_hotkeys_mut.len() != 0 {
panic!(
"Some hotkeys were not returned by the actual result:\n{:#?}",
expected_hotkeys_mut
);
}
Ok(())

Loading…
Cancel
Save