diff --git a/czkawka_slint_gui/src/connect_delete.rs b/czkawka_slint_gui/src/connect_delete.rs index 23a9b60..c2bfec0 100644 --- a/czkawka_slint_gui/src/connect_delete.rs +++ b/czkawka_slint_gui/src/connect_delete.rs @@ -111,13 +111,13 @@ fn check_if_header_is_selected_but_should_not_be(items: &ModelRc, mod tests { use slint::{Model, ModelRc, SharedString, VecModel}; - use crate::common::MainListModel; use crate::connect_delete::filter_out_checked_items; + use crate::MainListModel; #[test] fn test_filter_out_checked_items_empty() { - let vec_items = Vec::new(); - let items: ModelRc = ModelRc::new(VecModel::from(vec_items)); + let items: ModelRc = create_new_model(vec![]); + let (to_delete, left) = filter_out_checked_items(&items, false); assert!(to_delete.is_empty()); assert!(left.is_empty()); @@ -127,8 +127,7 @@ mod tests { } #[test] fn test_filter_out_checked_items_one_element_valid_normal() { - let vec_items = vec![(false, false, false, ModelRc::new(VecModel::default()))]; - let items: ModelRc = ModelRc::new(VecModel::from(vec_items)); + let items = create_new_model(vec![(false, false, false, vec![])]); let (to_delete, left) = filter_out_checked_items(&items, false); assert!(to_delete.is_empty()); assert_eq!(left.len(), items.iter().count()); @@ -136,8 +135,7 @@ mod tests { #[test] fn test_filter_out_checked_items_one_element_valid_header() { - let vec_items = vec![(false, true, false, ModelRc::new(VecModel::default()))]; - let items: ModelRc = ModelRc::new(VecModel::from(vec_items)); + let items = create_new_model(vec![(false, true, false, vec![])]); let (to_delete, left) = filter_out_checked_items(&items, true); assert!(to_delete.is_empty()); assert!(left.is_empty()); @@ -146,81 +144,91 @@ mod tests { #[test] #[should_panic] fn test_filter_out_checked_items_one_element_invalid_normal() { - let vec_items = vec![(false, true, false, ModelRc::new(VecModel::default()))]; - let items: ModelRc = ModelRc::new(VecModel::from(vec_items)); + let items = create_new_model(vec![(false, true, false, vec![])]); filter_out_checked_items(&items, false); } #[test] #[should_panic] fn test_filter_out_checked_items_one_element_invalid_header() { - let vec_items = vec![(false, false, false, ModelRc::new(VecModel::default()))]; - let items: ModelRc = ModelRc::new(VecModel::from(vec_items)); + let items = create_new_model(vec![(false, false, false, vec![])]); filter_out_checked_items(&items, true); } - // - // #[test] - // fn test_filter_out_checked_items_multiple_element_valid_normal() { - // let vec_items = vec![ - // (false, false, false, ModelRc::new(VecModel::from_slice(&[SharedString::from("1")]))), - // (false, false, false, ModelRc::new(VecModel::from_slice(&[SharedString::from("2")]))), - // (true, false, false, ModelRc::new(VecModel::from_slice(&[SharedString::from("3")]))), - // (true, false, false, ModelRc::new(VecModel::from_slice(&[SharedString::from("4")]))), - // (false, false, false, ModelRc::new(VecModel::from_slice(&[SharedString::from("5")]))), - // ]; - // let items: ModelRc = ModelRc::new(VecModel::from(vec_items)); - // let (to_delete, left) = filter_out_checked_items(&items, false); - // let to_delete_data = get_single_data_from_model(&to_delete); - // let left_data = get_single_data_from_model(&left); - // - // assert_eq!(to_delete_data, vec!["3", "4"]); - // assert_eq!(left_data, vec!["1", "2", "5"]); - // } - // - // #[test] - // fn test_filter_out_checked_items_multiple_element_valid_header() { - // let vec_items = vec![ - // (false, true, false, ModelRc::new(VecModel::from_slice(&[SharedString::from("1")]))), - // (false, false, false, ModelRc::new(VecModel::from_slice(&[SharedString::from("2")]))), - // (true, false, false, ModelRc::new(VecModel::from_slice(&[SharedString::from("3")]))), - // (false, true, false, ModelRc::new(VecModel::from_slice(&[SharedString::from("4")]))), - // (false, false, false, ModelRc::new(VecModel::from_slice(&[SharedString::from("5")]))), - // (false, true, false, ModelRc::new(VecModel::from_slice(&[SharedString::from("6")]))), - // (false, false, false, ModelRc::new(VecModel::from_slice(&[SharedString::from("7")]))), - // (false, false, false, ModelRc::new(VecModel::from_slice(&[SharedString::from("8")]))), - // ]; - // let items: ModelRc = ModelRc::new(VecModel::from(vec_items)); - // let (to_delete, left) = filter_out_checked_items(&items, true); - // let to_delete_data = get_single_data_from_model(&to_delete); - // let left_data = get_single_data_from_model(&left); - // - // assert_eq!(to_delete_data, vec!["3"]); - // assert_eq!(left_data, vec!["6", "7", "8"]); - // } - // - // #[test] - // fn test_filter_out_checked_items_multiple2_element_valid_header() { - // let vec_items = vec![ - // (false, true, false, ModelRc::new(VecModel::from_slice(&[SharedString::from("1")]))), - // (false, false, false, ModelRc::new(VecModel::from_slice(&[SharedString::from("2")]))), - // (true, false, false, ModelRc::new(VecModel::from_slice(&[SharedString::from("3")]))), - // (false, false, false, ModelRc::new(VecModel::from_slice(&[SharedString::from("4")]))), - // (false, false, false, ModelRc::new(VecModel::from_slice(&[SharedString::from("5")]))), - // (false, false, false, ModelRc::new(VecModel::from_slice(&[SharedString::from("6")]))), - // (false, true, false, ModelRc::new(VecModel::from_slice(&[SharedString::from("7")]))), - // (false, false, false, ModelRc::new(VecModel::from_slice(&[SharedString::from("8")]))), - // ]; - // let items: ModelRc = ModelRc::new(VecModel::from(vec_items)); - // let (to_delete, left) = filter_out_checked_items(&items, true); - // let to_delete_data = get_single_data_from_model(&to_delete); - // let left_data = get_single_data_from_model(&left); - // - // assert_eq!(to_delete_data, vec!["3"]); - // assert_eq!(left_data, vec!["1", "2", "4", "5", "6"]); - // } + + #[test] + fn test_filter_out_checked_items_multiple_element_valid_normal() { + let items = create_new_model(vec![ + (false, false, false, vec!["1"]), + (false, false, false, vec!["2"]), + (true, false, false, vec!["3"]), + (true, false, false, vec!["4"]), + (false, false, false, vec!["5"]), + ]); + let (to_delete, left) = filter_out_checked_items(&items, false); + let to_delete_data = get_single_data_from_model(&to_delete); + let left_data = get_single_data_from_model(&left); + + assert_eq!(to_delete_data, vec!["3", "4"]); + assert_eq!(left_data, vec!["1", "2", "5"]); + } + + #[test] + fn test_filter_out_checked_items_multiple_element_valid_header() { + let items = create_new_model(vec![ + (false, true, false, vec!["1"]), + (false, false, false, vec!["2"]), + (true, false, false, vec!["3"]), + (false, true, false, vec!["4"]), + (false, false, false, vec!["5"]), + (false, true, false, vec!["6"]), + (false, false, false, vec!["7"]), + (false, false, false, vec!["8"]), + ]); + let (to_delete, left) = filter_out_checked_items(&items, true); + let to_delete_data = get_single_data_from_model(&to_delete); + let left_data = get_single_data_from_model(&left); + + assert_eq!(to_delete_data, vec!["3"]); + assert_eq!(left_data, vec!["6", "7", "8"]); + } + + #[test] + fn test_filter_out_checked_items_multiple2_element_valid_header() { + let items = create_new_model(vec![ + (false, true, false, vec!["1"]), + (false, false, false, vec!["2"]), + (true, false, false, vec!["3"]), + (false, false, false, vec!["4"]), + (false, false, false, vec!["5"]), + (false, false, false, vec!["6"]), + (false, true, false, vec!["7"]), + (false, false, false, vec!["8"]), + ]); + let (to_delete, left) = filter_out_checked_items(&items, true); + let to_delete_data = get_single_data_from_model(&to_delete); + let left_data = get_single_data_from_model(&left); + + assert_eq!(to_delete_data, vec!["3"]); + assert_eq!(left_data, vec!["1", "2", "4", "5", "6"]); + } fn get_single_data_from_model(model: &[MainListModel]) -> Vec { - let mut d = model.iter().map(|item| item.data.iter().next().unwrap().to_string()).collect::>(); + let mut d = model.iter().map(|item| item.val.iter().next().unwrap().to_string()).collect::>(); d.sort(); d } + + fn create_new_model(items: Vec<(bool, bool, bool, Vec<&'static str>)>) -> ModelRc { + let model = VecModel::default(); + for item in items { + let all_items = item.3.iter().map(|item| SharedString::from(*item)).collect::>(); + let all_items = VecModel::from(all_items); + model.push(MainListModel { + checked: item.0, + header_row: item.1, + selected_row: item.2, + val: ModelRc::new(all_items), + }); + } + ModelRc::new(model) + } }