50 lines
1.3 KiB
Rust
50 lines
1.3 KiB
Rust
use super::*;
|
|
use itertools::Itertools;
|
|
use warpui::keymap::BindingId;
|
|
|
|
#[test]
|
|
fn test_enqueue_new_item() {
|
|
let mut selected_items = SelectedItems::new();
|
|
|
|
let summary_1 = ItemSummary::Action {
|
|
binding_id: BindingId::new(),
|
|
};
|
|
let summary_2 = ItemSummary::Action {
|
|
binding_id: BindingId::new(),
|
|
};
|
|
|
|
// Enqueue two items.
|
|
selected_items.enqueue(summary_1.clone());
|
|
selected_items.enqueue(summary_2.clone());
|
|
|
|
// Items should be returned in reverse order of they were enqueued.
|
|
assert_eq!(
|
|
selected_items.iter().collect_vec(),
|
|
vec![&summary_2, &summary_1]
|
|
);
|
|
}
|
|
|
|
#[test]
|
|
fn test_enqueue_existing_item() {
|
|
let mut selected_items = SelectedItems::new();
|
|
|
|
let summary_1 = ItemSummary::Action {
|
|
binding_id: BindingId::new(),
|
|
};
|
|
let summary_2 = ItemSummary::Action {
|
|
binding_id: BindingId::new(),
|
|
};
|
|
|
|
// Enqueue `summary_1` twice.
|
|
selected_items.enqueue(summary_1.clone());
|
|
selected_items.enqueue(summary_2.clone());
|
|
selected_items.enqueue(summary_1.clone());
|
|
|
|
// Ensure `summary_1` is returned first since it was enqueued more recently and that it isn't
|
|
// included in the selected items list twice.
|
|
assert_eq!(
|
|
selected_items.iter().collect_vec(),
|
|
vec![&summary_1, &summary_2]
|
|
);
|
|
}
|