Add tests for #153

This commit is contained in:
Federico Terzi 2020-01-21 23:11:14 +01:00
parent 73c8f5be86
commit 67e8ece408

View File

@ -409,6 +409,7 @@ impl ConfigSet {
let mut specific_triggers : Vec<String> = s.matches.iter().map(|t| { let mut specific_triggers : Vec<String> = s.matches.iter().map(|t| {
t.trigger.clone() t.trigger.clone()
}).collect(); }).collect();
specific_triggers.sort();
has_conflicts |= Self::list_has_conflicts(&specific_triggers); has_conflicts |= Self::list_has_conflicts(&specific_triggers);
} }
@ -1056,4 +1057,113 @@ mod tests {
assert!(config_set.specific[0].matches.iter().any(|m| m.trigger == "harry")); assert!(config_set.specific[0].matches.iter().any(|m| m.trigger == "harry"));
assert!(config_set.specific[0].matches.iter().any(|m| m.trigger == "ron")); assert!(config_set.specific[0].matches.iter().any(|m| m.trigger == "ron"));
} }
#[test]
fn test_list_has_conflict_no_conflict() {
assert_eq!(ConfigSet::list_has_conflicts(&vec!(":ab".to_owned(), ":bc".to_owned())), false);
}
#[test]
fn test_list_has_conflict_conflict() {
let mut list = vec!("ac".to_owned(), "ab".to_owned(), "abc".to_owned());
list.sort();
assert_eq!(ConfigSet::list_has_conflicts(&list), true);
}
#[test]
fn test_has_conflict_no_conflict() {
let (data_dir, package_dir) = create_temp_espanso_directories_with_default_content(r###"
matches:
- trigger: ac
replace: Hasta la vista
- trigger: bc
replace: Jon
"###);
let user_defined_path = create_user_config_file(data_dir.path(), "specific.yml", r###"
name: specific1
matches:
- trigger: "hello"
replace: "world"
"###);
let config_set = ConfigSet::load(data_dir.path(), package_dir.path()).unwrap();
assert_eq!(ConfigSet::has_conflicts(&config_set.default, &config_set.specific), false);
}
#[test]
fn test_has_conflict_conflict_in_default() {
let (data_dir, package_dir) = create_temp_espanso_directories_with_default_content(r###"
matches:
- trigger: ac
replace: Hasta la vista
- trigger: bc
replace: Jon
- trigger: acb
replace: Error
"###);
let user_defined_path = create_user_config_file(data_dir.path(), "specific.yml", r###"
name: specific1
matches:
- trigger: "hello"
replace: "world"
"###);
let config_set = ConfigSet::load(data_dir.path(), package_dir.path()).unwrap();
assert_eq!(ConfigSet::has_conflicts(&config_set.default, &config_set.specific), true);
}
#[test]
fn test_has_conflict_conflict_in_specific_and_default() {
let (data_dir, package_dir) = create_temp_espanso_directories_with_default_content(r###"
matches:
- trigger: ac
replace: Hasta la vista
- trigger: bc
replace: Jon
"###);
let user_defined_path = create_user_config_file(data_dir.path(), "specific.yml", r###"
name: specific1
matches:
- trigger: "bcd"
replace: "Conflict"
"###);
let config_set = ConfigSet::load(data_dir.path(), package_dir.path()).unwrap();
assert_eq!(ConfigSet::has_conflicts(&config_set.default, &config_set.specific), true);
}
#[test]
fn test_has_conflict_no_conflict_in_specific_and_specific() {
let (data_dir, package_dir) = create_temp_espanso_directories_with_default_content(r###"
matches:
- trigger: ac
replace: Hasta la vista
- trigger: bc
replace: Jon
"###);
let user_defined_path = create_user_config_file(data_dir.path(), "specific.yml", r###"
name: specific1
matches:
- trigger: "bad"
replace: "Conflict"
"###);
let user_defined_path2 = create_user_config_file(data_dir.path(), "specific2.yml", r###"
name: specific2
matches:
- trigger: "badass"
replace: "Conflict"
"###);
let config_set = ConfigSet::load(data_dir.path(), package_dir.path()).unwrap();
assert_eq!(ConfigSet::has_conflicts(&config_set.default, &config_set.specific), false);
}
} }