Skip to content

Commit

Permalink
Add switch tab/split unit tests
Browse files Browse the repository at this point in the history
  • Loading branch information
vlabo committed Mar 2, 2025
1 parent 32f2549 commit 6cc0c30
Showing 1 changed file with 188 additions and 0 deletions.
188 changes: 188 additions & 0 deletions frontends/rioterm/src/context/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -1255,6 +1255,194 @@ pub mod test {
assert_eq!(context_manager.current_index, 1);
}

#[test]
fn test_switch_to_next_split_or_tab() {
let window_id: WindowId = WindowId::from(0);

let mut context_manager =
ContextManager::start_with_capacity(5, VoidListener {}, window_id).unwrap();
let should_redirect = true;
let split_down = false;

context_manager.add_context(should_redirect, 0);
context_manager.split(0, split_down);
context_manager.split(0, split_down);
context_manager.add_context(should_redirect, 0);
context_manager.add_context(should_redirect, 0);
context_manager.split(0, split_down);
context_manager.add_context(should_redirect, 0);
context_manager.set_current(0);
assert_eq!(context_manager.len(), 5);
assert_eq!(context_manager.current_index, 0);

let mut current_index;

context_manager.switch_to_next_split_or_tab();
current_index = context_manager.current_index;
assert_eq!(current_index, 1);
assert_eq!(context_manager.contexts[current_index].current, 0);

context_manager.switch_to_next_split_or_tab();
current_index = context_manager.current_index;
assert_eq!(current_index, 1);
assert_eq!(context_manager.contexts[current_index].current, 1);

context_manager.switch_to_next_split_or_tab();
current_index = context_manager.current_index;
assert_eq!(current_index, 1);
assert_eq!(context_manager.contexts[current_index].current, 2);

context_manager.switch_to_next_split_or_tab();
current_index = context_manager.current_index;
assert_eq!(current_index, 2);
assert_eq!(context_manager.contexts[current_index].current, 0);

context_manager.switch_to_next_split_or_tab();
current_index = context_manager.current_index;
assert_eq!(current_index, 3);
assert_eq!(context_manager.contexts[current_index].current, 0);

context_manager.switch_to_next_split_or_tab();
current_index = context_manager.current_index;
assert_eq!(current_index, 3);
assert_eq!(context_manager.contexts[current_index].current, 1);

context_manager.switch_to_next_split_or_tab();
current_index = context_manager.current_index;
assert_eq!(current_index, 4);
assert_eq!(context_manager.contexts[current_index].current, 0);

context_manager.switch_to_next_split_or_tab();
current_index = context_manager.current_index;
assert_eq!(current_index, 0);
assert_eq!(context_manager.contexts[current_index].current, 0);
}

#[test]
fn test_switch_to_prev_split_or_tab() {
let window_id: WindowId = WindowId::from(0);

let mut context_manager =
ContextManager::start_with_capacity(5, VoidListener {}, window_id).unwrap();
let should_redirect = true;
let split_down = false;

context_manager.add_context(should_redirect, 0);
context_manager.split(0, split_down);
context_manager.split(0, split_down);
context_manager.add_context(should_redirect, 0);
context_manager.add_context(should_redirect, 0);
context_manager.split(0, split_down);
context_manager.add_context(should_redirect, 0);
context_manager.set_current(0);
assert_eq!(context_manager.len(), 5);
assert_eq!(context_manager.current_index, 0);

let mut current_index;

context_manager.switch_to_prev_split_or_tab();
current_index = context_manager.current_index;
assert_eq!(current_index, 4);
assert_eq!(context_manager.contexts[current_index].current, 0);

context_manager.switch_to_prev_split_or_tab();
current_index = context_manager.current_index;
assert_eq!(current_index, 3);
assert_eq!(context_manager.contexts[current_index].current, 1);

context_manager.switch_to_prev_split_or_tab();
current_index = context_manager.current_index;
assert_eq!(current_index, 3);
assert_eq!(context_manager.contexts[current_index].current, 0);

context_manager.switch_to_prev_split_or_tab();
current_index = context_manager.current_index;
assert_eq!(current_index, 2);
assert_eq!(context_manager.contexts[current_index].current, 0);

context_manager.switch_to_prev_split_or_tab();
current_index = context_manager.current_index;
assert_eq!(current_index, 1);
assert_eq!(context_manager.contexts[current_index].current, 2);

context_manager.switch_to_prev_split_or_tab();
current_index = context_manager.current_index;
assert_eq!(current_index, 1);
assert_eq!(context_manager.contexts[current_index].current, 1);

context_manager.switch_to_prev_split_or_tab();
current_index = context_manager.current_index;
assert_eq!(current_index, 1);
assert_eq!(context_manager.contexts[current_index].current, 0);

context_manager.switch_to_prev_split_or_tab();
current_index = context_manager.current_index;
assert_eq!(current_index, 0);
assert_eq!(context_manager.contexts[current_index].current, 0);
}

#[test]
fn test_switch_to_next_and_prev_split_or_tab() {
let window_id: WindowId = WindowId::from(0);

let mut context_manager =
ContextManager::start_with_capacity(5, VoidListener {}, window_id).unwrap();
let should_redirect = true;
let split_down = false;

context_manager.add_context(should_redirect, 0);
context_manager.split(0, split_down);
context_manager.split(0, split_down);
context_manager.add_context(should_redirect, 0);
context_manager.set_current(0);
assert_eq!(context_manager.len(), 3);
assert_eq!(context_manager.current_index, 0);

let mut current_index;

// Next
context_manager.switch_to_next_split_or_tab();
current_index = context_manager.current_index;
assert_eq!(current_index, 1);
assert_eq!(context_manager.contexts[current_index].current, 0);

context_manager.switch_to_next_split_or_tab();
current_index = context_manager.current_index;
assert_eq!(current_index, 1);
assert_eq!(context_manager.contexts[current_index].current, 1);

context_manager.switch_to_next_split_or_tab();
current_index = context_manager.current_index;
assert_eq!(current_index, 1);
assert_eq!(context_manager.contexts[current_index].current, 2);

context_manager.switch_to_next_split_or_tab();
current_index = context_manager.current_index;
assert_eq!(current_index, 2);
assert_eq!(context_manager.contexts[current_index].current, 0);

// Prev
context_manager.switch_to_prev_split_or_tab();
current_index = context_manager.current_index;
assert_eq!(current_index, 1);
assert_eq!(context_manager.contexts[current_index].current, 2);

context_manager.switch_to_prev_split_or_tab();
current_index = context_manager.current_index;
assert_eq!(current_index, 1);
assert_eq!(context_manager.contexts[current_index].current, 1);

context_manager.switch_to_prev_split_or_tab();
current_index = context_manager.current_index;
assert_eq!(current_index, 1);
assert_eq!(context_manager.contexts[current_index].current, 0);

context_manager.switch_to_prev_split_or_tab();
current_index = context_manager.current_index;
assert_eq!(current_index, 0);
assert_eq!(context_manager.contexts[current_index].current, 0);
}

#[test]
fn test_move_current_to_next() {
let window_id = WindowId::from(0);
Expand Down

0 comments on commit 6cc0c30

Please sign in to comment.