|
|
|
@ -111,13 +111,13 @@ fn check_if_header_is_selected_but_should_not_be(items: &ModelRc<MainListModel>,
|
|
|
|
|
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<MainListModel> = ModelRc::new(VecModel::from(vec_items));
|
|
|
|
|
let items: ModelRc<MainListModel> = 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<MainListModel> = 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<MainListModel> = 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<MainListModel> = 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<MainListModel> = 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<MainListModel> = 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<MainListModel> = 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<MainListModel> = 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<String> {
|
|
|
|
|
let mut d = model.iter().map(|item| item.data.iter().next().unwrap().to_string()).collect::<Vec<_>>();
|
|
|
|
|
let mut d = model.iter().map(|item| item.val.iter().next().unwrap().to_string()).collect::<Vec<_>>();
|
|
|
|
|
d.sort();
|
|
|
|
|
d
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
fn create_new_model(items: Vec<(bool, bool, bool, Vec<&'static str>)>) -> ModelRc<MainListModel> {
|
|
|
|
|
let model = VecModel::default();
|
|
|
|
|
for item in items {
|
|
|
|
|
let all_items = item.3.iter().map(|item| SharedString::from(*item)).collect::<Vec<_>>();
|
|
|
|
|
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)
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|