feat: Implement filter_tags function with comprehensive unit tests
This commit is contained in:
parent
64d3761de9
commit
cd27308cfa
1 changed files with 30 additions and 0 deletions
|
|
@ -92,6 +92,12 @@ pub fn parse_tags(filename: &str) -> Result<(String, Vec<String>, String), Parse
|
|||
Ok((base_name, tags, extension))
|
||||
}
|
||||
|
||||
pub fn filter_tags(current: Vec<String>, remove: &[String]) -> Vec<String> {
|
||||
current.into_iter()
|
||||
.filter(|tag| !remove.contains(tag))
|
||||
.collect()
|
||||
}
|
||||
|
||||
pub fn add_tags(current: Vec<String>, new: Vec<String>) -> Vec<String> {
|
||||
let mut result = current;
|
||||
|
||||
|
|
@ -257,4 +263,28 @@ mod tests {
|
|||
assert_eq!(tags, vec!["tag1"]);
|
||||
assert_eq!(ext, ".txt");
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn test_filter_tags_multi_remove() {
|
||||
let current = vec!["tag1".to_string(), "tag2".to_string(), "tag3".to_string()];
|
||||
let remove = vec!["tag1".to_string(), "tag3".to_string()];
|
||||
let result = filter_tags(current, &remove);
|
||||
assert_eq!(result, vec!["tag2"]);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn test_filter_tags_non_existent() {
|
||||
let current = vec!["tag1".to_string(), "tag2".to_string()];
|
||||
let remove = vec!["tag3".to_string()];
|
||||
let result = filter_tags(current, &remove);
|
||||
assert_eq!(result, vec!["tag1", "tag2"]);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn test_filter_tags_empty_result() {
|
||||
let current = vec!["tag1".to_string(), "tag2".to_string()];
|
||||
let remove = vec!["tag1".to_string(), "tag2".to_string()];
|
||||
let result = filter_tags(current, &remove);
|
||||
assert!(result.is_empty());
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue