Refactored table sorting into the ManagarrTable widget and StatefulTable so any and all tables created can support sorting with minimal UI changes and thus only need to focus on the handlers. I'm going to continue this effort tomorrow and look at what other widgets can be created to simplify things. Most likely, prompt boxes.
This commit is contained in:
@@ -0,0 +1,111 @@
|
||||
#[cfg(test)]
|
||||
mod tests {
|
||||
use crate::models::stateful_list::StatefulList;
|
||||
use crate::models::Scrollable;
|
||||
use pretty_assertions::{assert_eq, assert_str_eq};
|
||||
|
||||
#[test]
|
||||
fn test_stateful_list_scrolling_on_empty_list_performs_no_op() {
|
||||
let mut stateful_list: StatefulList<String> = StatefulList::default();
|
||||
|
||||
assert_eq!(stateful_list.state.selected(), None);
|
||||
|
||||
stateful_list.scroll_up();
|
||||
|
||||
assert_eq!(stateful_list.state.selected(), None);
|
||||
|
||||
stateful_list.scroll_down();
|
||||
|
||||
assert_eq!(stateful_list.state.selected(), None);
|
||||
|
||||
stateful_list.scroll_to_top();
|
||||
|
||||
assert_eq!(stateful_list.state.selected(), None);
|
||||
|
||||
stateful_list.scroll_to_bottom();
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn test_stateful_list_scroll() {
|
||||
let mut stateful_list = create_test_stateful_list();
|
||||
|
||||
assert_eq!(stateful_list.state.selected(), Some(0));
|
||||
|
||||
stateful_list.scroll_down();
|
||||
|
||||
assert_eq!(stateful_list.state.selected(), Some(1));
|
||||
|
||||
stateful_list.scroll_down();
|
||||
|
||||
assert_eq!(stateful_list.state.selected(), Some(0));
|
||||
|
||||
stateful_list.scroll_up();
|
||||
|
||||
assert_eq!(stateful_list.state.selected(), Some(1));
|
||||
|
||||
stateful_list.scroll_up();
|
||||
|
||||
assert_eq!(stateful_list.state.selected(), Some(0));
|
||||
|
||||
stateful_list.scroll_to_bottom();
|
||||
|
||||
assert_eq!(stateful_list.state.selected(), Some(1));
|
||||
|
||||
stateful_list.scroll_to_top();
|
||||
|
||||
assert_eq!(stateful_list.state.selected(), Some(0));
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn test_stateful_list_set_items() {
|
||||
let items_vec = vec!["Test 1", "Test 2", "Test 3"];
|
||||
let mut stateful_list: StatefulList<&str> = StatefulList::default();
|
||||
|
||||
stateful_list.set_items(items_vec.clone());
|
||||
|
||||
assert_eq!(stateful_list.state.selected(), Some(0));
|
||||
|
||||
stateful_list.state.select(Some(1));
|
||||
stateful_list.set_items(items_vec.clone());
|
||||
|
||||
assert_eq!(stateful_list.state.selected(), Some(1));
|
||||
|
||||
stateful_list.state.select(Some(3));
|
||||
stateful_list.set_items(items_vec);
|
||||
|
||||
assert_eq!(stateful_list.state.selected(), Some(2));
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn test_stateful_list_current_selection() {
|
||||
let mut stateful_list = create_test_stateful_list();
|
||||
|
||||
assert_str_eq!(stateful_list.current_selection(), &stateful_list.items[0]);
|
||||
|
||||
stateful_list.state.select(Some(1));
|
||||
|
||||
assert_str_eq!(stateful_list.current_selection(), &stateful_list.items[1]);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn test_stateful_list_scroll_up() {
|
||||
let mut stateful_list = create_test_stateful_list();
|
||||
|
||||
assert_eq!(stateful_list.state.selected(), Some(0));
|
||||
|
||||
stateful_list.scroll_up();
|
||||
|
||||
assert_eq!(stateful_list.state.selected(), Some(1));
|
||||
|
||||
stateful_list.scroll_up();
|
||||
|
||||
assert_eq!(stateful_list.state.selected(), Some(0));
|
||||
}
|
||||
|
||||
fn create_test_stateful_list() -> StatefulList<&'static str> {
|
||||
let mut stateful_list = StatefulList::default();
|
||||
stateful_list.set_items(vec!["Test 1", "Test 2"]);
|
||||
|
||||
stateful_list
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user