1
0
Fork 0
mirror of synced 2024-05-17 19:03:08 +12:00

Tests that needs to be fixed

This commit is contained in:
Rafał Mikrut 2023-06-08 14:57:32 +02:00
parent ae4e64f316
commit eab7024225

View file

@ -638,7 +638,7 @@ impl SimilarImages {
.filter(|e| !is_in_reference_folder(&self.directories.reference_directories, &e.path))
.cloned()
.collect();
for mut fe in &mut vec_fe {
for fe in &mut vec_fe {
fe.similarity = similarity;
}
collected_similar_images.get_mut(&parent_hash).unwrap().append(&mut vec_fe);
@ -1299,3 +1299,87 @@ fn debug_check_for_duplicated_things(
assert!(!found_broken_thing);
}
#[cfg(test)]
mod tests {
use crate::similar_images::{FileEntry, SimilarImages};
use std::path::PathBuf;
#[test]
fn test_compare_no_images() {
let mut similar_images = SimilarImages::default();
similar_images.find_similar_images(None, None);
assert_eq!(similar_images.get_similar_images().len(), 0);
}
#[test]
fn test_compare_tolerance_0_normal_mode() {
let mut similar_images = SimilarImages::default();
similar_images.similarity = 0;
let fe1 = create_random_file_entry(vec![1, 1, 1, 1, 1, 1, 1, 1], "abc.txt");
let fe2 = create_random_file_entry(vec![1, 1, 1, 1, 1, 1, 1, 1], "bcd.txt");
let fe3 = create_random_file_entry(vec![1, 1, 1, 1, 1, 1, 1, 2], "cde.txt");
let fe4 = create_random_file_entry(vec![1, 1, 1, 1, 1, 1, 1, 2], "rrt.txt");
let fe5 = create_random_file_entry(vec![1, 1, 1, 1, 1, 1, 1, 2], "bld.txt");
similar_images.image_hashes.insert(fe1.hash.clone(), vec![fe1.clone(), fe2.clone()]);
similar_images.image_hashes.insert(fe3.hash.clone(), vec![fe3.clone(), fe4.clone(), fe5.clone()]);
similar_images.find_similar_hashes(None, None);
assert_eq!(similar_images.get_similar_images().len(), 2);
let first_group = similar_images.get_similar_images()[0].iter().map(|e| &e.path).collect::<Vec<_>>();
let second_group = similar_images.get_similar_images()[1].iter().map(|e| &e.path).collect::<Vec<_>>();
// Initial order is not guaranteed, so we need to check both options
if similar_images.get_similar_images()[0][0].hash == fe1.hash {
assert_eq!(first_group, vec![&fe1.path, &fe2.path]);
assert_eq!(second_group, vec![&fe3.path, &fe4.path, &fe5.path]);
} else {
assert_eq!(first_group, vec![&fe3.path, &fe4.path, &fe5.path]);
assert_eq!(second_group, vec![&fe1.path, &fe2.path]);
}
}
#[test]
fn test_simple_normal_one_group() {
let mut similar_images = SimilarImages::default();
similar_images.use_reference_folders = false;
similar_images.similarity = 1;
let fe1 = create_random_file_entry(vec![1, 1, 1, 1, 1, 1, 1, 1], "abc.txt");
let fe2 = create_random_file_entry(vec![1, 1, 1, 1, 1, 1, 1, 1], "bcd.txt");
similar_images.image_hashes.insert(fe1.hash.clone(), vec![fe1.clone(), fe2.clone()]);
similar_images.find_similar_hashes(None, None);
assert_eq!(similar_images.get_similar_images().len(), 1);
}
#[test]
fn test_simple_normal_one_group_extended() {
let mut similar_images = SimilarImages::default();
similar_images.use_reference_folders = false;
similar_images.similarity = 2;
let fe1 = create_random_file_entry(vec![1, 1, 1, 1, 1, 1, 1, 1], "abc.txt");
let fe2 = create_random_file_entry(vec![1, 1, 1, 1, 1, 1, 1, 1], "bcd.txt");
let fe3 = create_random_file_entry(vec![1, 1, 1, 1, 1, 1, 1, 2], "rrd.txt");
similar_images.image_hashes.insert(fe1.hash.clone(), vec![fe1.clone(), fe2.clone()]);
similar_images.image_hashes.insert(fe3.hash.clone(), vec![fe3.clone()]);
similar_images.find_similar_hashes(None, None);
assert_eq!(similar_images.get_similar_images().len(), 1);
assert_eq!(similar_images.get_similar_images()[0].len(), 3);
}
fn create_random_file_entry(hash: Vec<u8>, name: &str) -> FileEntry {
FileEntry {
path: PathBuf::from(name.to_string()),
size: 0,
dimensions: "".to_string(),
modified_date: 0,
hash,
similarity: 0,
}
}
}