use revue::widget::sortable::{sortable_list, SortableList};
#[test]
fn test_sortable_list_new() {
let list = SortableList::new(["A", "B", "C"]);
assert_eq!(list.items().len(), 3);
assert_eq!(list.items()[0].label, "A");
assert_eq!(list.items()[1].label, "B");
assert_eq!(list.items()[2].label, "C");
}
#[test]
fn test_sortable_list_selection() {
let mut list = SortableList::new(["A", "B", "C"]);
assert!(list.selected().is_none());
list.select_next();
assert_eq!(list.selected(), Some(0));
list.select_next();
assert_eq!(list.selected(), Some(1));
list.select_prev();
assert_eq!(list.selected(), Some(0));
}
#[test]
fn test_sortable_list_move() {
let mut list = SortableList::new(["A", "B", "C"]);
list.set_selected(Some(0));
list.move_down();
assert_eq!(list.items()[0].label, "B");
assert_eq!(list.items()[1].label, "A");
assert_eq!(list.selected(), Some(1));
list.move_up();
assert_eq!(list.items()[0].label, "A");
assert_eq!(list.items()[1].label, "B");
assert_eq!(list.selected(), Some(0));
}
#[test]
fn test_sortable_list_drag() {
let mut list = SortableList::new(["A", "B", "C"]);
list.set_selected(Some(1));
list.start_drag();
assert!(list.is_dragging());
assert!(list.items()[1].dragging);
list.cancel_drag();
assert!(!list.is_dragging());
assert!(!list.items()[1].dragging);
}
#[test]
fn test_sortable_list_order() {
let list = SortableList::new(["A", "B", "C"]);
assert_eq!(list.order(), vec![0, 1, 2]);
}
#[test]
fn test_sortable_list_push_remove() {
let mut list = SortableList::new(["A", "B"]);
assert_eq!(list.items().len(), 2);
list.push("C");
assert_eq!(list.items().len(), 3);
assert_eq!(list.items()[2].label, "C");
let removed = list.remove(1);
assert!(removed.is_some());
assert_eq!(removed.unwrap().label, "B");
assert_eq!(list.items().len(), 2);
}
#[test]
fn test_sortable_list_draggable_trait() {
}
#[test]
fn test_sortable_list_on_reorder() {
}
#[test]
fn test_sortable_list_handles() {
}
#[test]
fn test_sortable_list_colors() {
}
#[test]
fn test_sortable_list_items() {
}
#[test]
fn test_sortable_list_items_mut() {
}
#[test]
fn test_sortable_list_end_drag() {
}
#[test]
fn test_sortable_list_update_drop_target() {
}
#[test]
fn test_sortable_list_remove_updates_selection() {
let mut list = SortableList::new(["A", "B", "C"]);
list.set_selected(Some(2));
list.remove(2);
assert_eq!(list.selected(), Some(1));
}
#[test]
fn test_sortable_list_remove_all() {
let mut list = SortableList::new(["A"]);
list.set_selected(Some(0));
list.remove(0);
assert!(list.items().is_empty());
assert_eq!(list.selected(), None);
}
#[test]
fn test_sortable_list_select_empty() {
let mut list = SortableList::new::<[&str; 0], &str>([]);
list.select_next();
assert!(list.selected().is_none());
list.select_prev();
assert!(list.selected().is_none());
}
#[test]
fn test_sortable_list_render() {
}
#[test]
fn test_sortable_list_render_with_selection() {
}
#[test]
fn test_sortable_list_render_dragging() {
}
#[test]
fn test_sortable_list_handle_key() {
}
#[test]
fn test_sortable_list_handle_key_move() {
}
#[test]
fn test_sortable_list_handle_mouse() {
}
#[test]
fn test_sortable_list_can_drop() {
}
#[test]
fn test_sortable_list_accepted_types() {
}
#[test]
fn test_sortable_list_drag_enter_leave() {
}
#[test]
fn test_sortable_list_helper() {
let list = sortable_list(["A", "B"]);
assert_eq!(list.items().len(), 2);
}
#[test]
fn test_sortable_item_new() {
}
#[test]
fn test_sortable_list_order_after_reorder() {
let mut list = SortableList::new(["A", "B", "C"]);
list.set_selected(Some(0));
list.move_down();
let order = list.order();
assert_eq!(order, vec![1, 0, 2]);
}
#[test]
fn test_sortable_list_cancel_drag_out_of_bounds() {
let mut list = SortableList::new(["A"]);
list.set_selected(Some(0));
list.start_drag();
list.items_mut().clear();
list.cancel_drag();
assert!(!list.is_dragging());
}
#[test]
fn test_sortable_list_end_drag_same_position() {
let mut list = SortableList::new(["A", "B", "C"]);
list.set_selected(Some(1));
list.start_drag();
list.drop_target = Some(1);
list.end_drag();
assert_eq!(list.items()[0].label, "A");
assert_eq!(list.items()[1].label, "B");
}
#[test]
fn test_sortable_list_remove_out_of_bounds() {
let mut list = SortableList::new(["A"]);
let removed = list.remove(10);
assert!(removed.is_none());
}
#[test]
fn test_sortable_list_move_at_boundary() {
let mut list = SortableList::new(["A", "B"]);
list.set_selected(Some(0));
list.move_up();
assert_eq!(list.items()[0].label, "A");
list.set_selected(Some(1));
list.move_down();
assert_eq!(list.items()[1].label, "B"); }