test(ui): move and enter folders
This commit is contained in:
13
src/main.rs
13
src/main.rs
@@ -6,8 +6,8 @@ mod tests;
|
||||
|
||||
use std::env;
|
||||
use std::io;
|
||||
use ::std::{thread, time};
|
||||
use ::std::thread::park_timeout;
|
||||
use ::std::thread;
|
||||
use ::std::thread::park;
|
||||
|
||||
use ::std::io::stdin;
|
||||
use ::termion::input::TermRead;
|
||||
@@ -33,7 +33,7 @@ mod filesystem;
|
||||
mod display;
|
||||
|
||||
use filesystem::scan_folder;
|
||||
use display::state::{State, calculate_percentages};
|
||||
use display::state::State;
|
||||
use display::RectangleGrid;
|
||||
|
||||
fn main() {
|
||||
@@ -89,6 +89,7 @@ where
|
||||
let running = running.clone();
|
||||
let state = state.clone();
|
||||
move || {
|
||||
park();
|
||||
while running.load(Ordering::Acquire) {
|
||||
terminal.draw(|mut f| {
|
||||
let mut full_screen = f.size();
|
||||
@@ -97,7 +98,7 @@ where
|
||||
state.lock().unwrap().set_tiles(full_screen);
|
||||
RectangleGrid::new((*state.lock().unwrap().tiles).to_vec()).render(&mut f, full_screen);
|
||||
}).expect("failed to draw");
|
||||
park_timeout(time::Duration::from_millis(1000)); // TODO: we might not need this... we can trigger the display on events
|
||||
park();
|
||||
}
|
||||
terminal.clear().unwrap();
|
||||
}
|
||||
@@ -137,6 +138,8 @@ where
|
||||
}
|
||||
Event::Key(Key::Char('\n')) => {
|
||||
state.lock().unwrap().enter_selected();
|
||||
// TODO: do not unpark display_handler if the state did not change
|
||||
// eg. we tried to enter a file
|
||||
display_handler.unpark();
|
||||
}
|
||||
Event::Key(Key::Esc) => {
|
||||
@@ -150,10 +153,12 @@ where
|
||||
})
|
||||
.unwrap(),
|
||||
);
|
||||
let display_handler_thread = display_handler.thread().clone(); // TODO: better
|
||||
active_threads.push(display_handler);
|
||||
|
||||
let file_sizes = scan_folder(path);
|
||||
state.lock().unwrap().set_base_folder(file_sizes);
|
||||
display_handler_thread.unpark();
|
||||
for thread_handler in active_threads {
|
||||
thread_handler.join().unwrap()
|
||||
}
|
||||
|
||||
55
src/tests/cases/snapshots/ui__esc_to_go_up-2.snap
Normal file
55
src/tests/cases/snapshots/ui__esc_to_go_up-2.snap
Normal file
@@ -0,0 +1,55 @@
|
||||
---
|
||||
source: src/tests/cases/ui.rs
|
||||
expression: "&terminal_draw_events_mirror[1]"
|
||||
---
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
file2 4.1K (33%)
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
=> subfolder1/ 4.1K (33%) <=
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
55
src/tests/cases/snapshots/ui__esc_to_go_up-3.snap
Normal file
55
src/tests/cases/snapshots/ui__esc_to_go_up-3.snap
Normal file
@@ -0,0 +1,55 @@
|
||||
---
|
||||
source: src/tests/cases/ui.rs
|
||||
expression: "&terminal_draw_events_mirror[2]"
|
||||
---
|
||||
─
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
│ => file1 4.1K (100%) <=
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
─
|
||||
|
||||
55
src/tests/cases/snapshots/ui__esc_to_go_up-4.snap
Normal file
55
src/tests/cases/snapshots/ui__esc_to_go_up-4.snap
Normal file
@@ -0,0 +1,55 @@
|
||||
---
|
||||
source: src/tests/cases/ui.rs
|
||||
expression: "&terminal_draw_events_mirror[3]"
|
||||
---
|
||||
┬
|
||||
│
|
||||
│
|
||||
│
|
||||
│
|
||||
│
|
||||
│
|
||||
│
|
||||
│
|
||||
│
|
||||
│
|
||||
│
|
||||
=> file2 4.1K (33%) <= │
|
||||
│
|
||||
│
|
||||
│
|
||||
│
|
||||
│
|
||||
│
|
||||
│
|
||||
│
|
||||
│
|
||||
│
|
||||
│
|
||||
├─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────│ subfolder1/ 4.1K (33%)
|
||||
│
|
||||
│
|
||||
│
|
||||
│
|
||||
│
|
||||
│
|
||||
│
|
||||
│
|
||||
│
|
||||
│
|
||||
│
|
||||
file3 4.1K (33%) │
|
||||
│
|
||||
│
|
||||
│
|
||||
│
|
||||
│
|
||||
│
|
||||
│
|
||||
│
|
||||
│
|
||||
│
|
||||
│
|
||||
│
|
||||
┴
|
||||
|
||||
55
src/tests/cases/snapshots/ui__esc_to_go_up.snap
Normal file
55
src/tests/cases/snapshots/ui__esc_to_go_up.snap
Normal file
@@ -0,0 +1,55 @@
|
||||
---
|
||||
source: src/tests/cases/ui.rs
|
||||
expression: "&terminal_draw_events_mirror[0]"
|
||||
---
|
||||
┌─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┬──────────────────────────────────────────────────────────────┐
|
||||
│ │ │
|
||||
│ │ │
|
||||
│ │ │
|
||||
│ │ │
|
||||
│ │ │
|
||||
│ │ │
|
||||
│ │ │
|
||||
│ │ │
|
||||
│ │ │
|
||||
│ │ │
|
||||
│ │ │
|
||||
│ => file2 4.1K (33%) <= │ │
|
||||
│ │ │
|
||||
│ │ │
|
||||
│ │ │
|
||||
│ │ │
|
||||
│ │ │
|
||||
│ │ │
|
||||
│ │ │
|
||||
│ │ │
|
||||
│ │ │
|
||||
│ │ │
|
||||
│ │ │
|
||||
├─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────│ subfolder1/ 4.1K (33%) │
|
||||
│ │ │
|
||||
│ │ │
|
||||
│ │ │
|
||||
│ │ │
|
||||
│ │ │
|
||||
│ │ │
|
||||
│ │ │
|
||||
│ │ │
|
||||
│ │ │
|
||||
│ │ │
|
||||
│ │ │
|
||||
│ file3 4.1K (33%) │ │
|
||||
│ │ │
|
||||
│ │ │
|
||||
│ │ │
|
||||
│ │ │
|
||||
│ │ │
|
||||
│ │ │
|
||||
│ │ │
|
||||
│ │ │
|
||||
│ │ │
|
||||
│ │ │
|
||||
│ │ │
|
||||
│ │ │
|
||||
└─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┴──────────────────────────────────────────────────────────────┘
|
||||
|
||||
@@ -0,0 +1,55 @@
|
||||
---
|
||||
source: src/tests/cases/ui.rs
|
||||
expression: "&terminal_draw_events_mirror[2]"
|
||||
---
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
file2 8.2K (40%)
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
=> subfolder1/ 8.2K (40%) <=
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -0,0 +1,55 @@
|
||||
---
|
||||
source: src/tests/cases/ui.rs
|
||||
expression: "&terminal_draw_events_mirror[3]"
|
||||
---
|
||||
─
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
│ => file3 8.2K (100%) <=
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
─
|
||||
|
||||
@@ -0,0 +1,55 @@
|
||||
---
|
||||
source: src/tests/cases/ui.rs
|
||||
expression: "&terminal_draw_events_mirror[1]"
|
||||
---
|
||||
┌──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┬─────────────────────────────────────┐
|
||||
│ │ │
|
||||
│ │ │
|
||||
│ │ │
|
||||
│ │ │
|
||||
│ │ │
|
||||
│ │ │
|
||||
│ │ │
|
||||
│ │ │
|
||||
│ │ │
|
||||
│ │ │
|
||||
│ │ │
|
||||
│ => file2 8.2K (40%) <= │ │
|
||||
│ │ │
|
||||
│ │ │
|
||||
│ │ │
|
||||
│ │ │
|
||||
│ │ │
|
||||
│ │ │
|
||||
│ │ │
|
||||
│ │ │
|
||||
│ │ │
|
||||
│ │ │
|
||||
│ │ │
|
||||
├──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────│ file1 4.1K (20%) │
|
||||
│ │ │
|
||||
│ │ │
|
||||
│ │ │
|
||||
│ │ │
|
||||
│ │ │
|
||||
│ │ │
|
||||
│ │ │
|
||||
│ │ │
|
||||
│ │ │
|
||||
│ │ │
|
||||
│ │ │
|
||||
│ subfolder1/ 8.2K (40%) │ │
|
||||
│ │ │
|
||||
│ │ │
|
||||
│ │ │
|
||||
│ │ │
|
||||
│ │ │
|
||||
│ │ │
|
||||
│ │ │
|
||||
│ │ │
|
||||
│ │ │
|
||||
│ │ │
|
||||
│ │ │
|
||||
│ │ │
|
||||
└──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┴─────────────────────────────────────┘
|
||||
|
||||
@@ -0,0 +1,55 @@
|
||||
---
|
||||
source: src/tests/cases/ui.rs
|
||||
expression: "&terminal_draw_events_mirror[1]"
|
||||
---
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
file2 4.1K (33%)
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
=> subfolder1/ 4.1K (33%) <=
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -0,0 +1,55 @@
|
||||
---
|
||||
source: src/tests/cases/ui.rs
|
||||
expression: "&terminal_draw_events_mirror[2]"
|
||||
---
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
=> file2 4.1K (33%) <=
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
subfolder1/ 4.1K (33%)
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -0,0 +1,55 @@
|
||||
---
|
||||
source: src/tests/cases/ui.rs
|
||||
expression: "&terminal_draw_events_mirror[3]"
|
||||
---
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
file2 4.1K (33%)
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
=> subfolder1/ 4.1K (33%) <=
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -0,0 +1,55 @@
|
||||
---
|
||||
source: src/tests/cases/ui.rs
|
||||
expression: "&terminal_draw_events_mirror[4]"
|
||||
---
|
||||
─
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
│ => file1 4.1K (100%) <=
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
─
|
||||
|
||||
@@ -0,0 +1,55 @@
|
||||
---
|
||||
source: src/tests/cases/ui.rs
|
||||
expression: "&terminal_draw_events_mirror[0]"
|
||||
---
|
||||
┌─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┬──────────────────────────────────────────────────────────────┐
|
||||
│ │ │
|
||||
│ │ │
|
||||
│ │ │
|
||||
│ │ │
|
||||
│ │ │
|
||||
│ │ │
|
||||
│ │ │
|
||||
│ │ │
|
||||
│ │ │
|
||||
│ │ │
|
||||
│ │ │
|
||||
│ => file2 4.1K (33%) <= │ │
|
||||
│ │ │
|
||||
│ │ │
|
||||
│ │ │
|
||||
│ │ │
|
||||
│ │ │
|
||||
│ │ │
|
||||
│ │ │
|
||||
│ │ │
|
||||
│ │ │
|
||||
│ │ │
|
||||
│ │ │
|
||||
├─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────│ subfolder1/ 4.1K (33%) │
|
||||
│ │ │
|
||||
│ │ │
|
||||
│ │ │
|
||||
│ │ │
|
||||
│ │ │
|
||||
│ │ │
|
||||
│ │ │
|
||||
│ │ │
|
||||
│ │ │
|
||||
│ │ │
|
||||
│ │ │
|
||||
│ file3 4.1K (33%) │ │
|
||||
│ │ │
|
||||
│ │ │
|
||||
│ │ │
|
||||
│ │ │
|
||||
│ │ │
|
||||
│ │ │
|
||||
│ │ │
|
||||
│ │ │
|
||||
│ │ │
|
||||
│ │ │
|
||||
│ │ │
|
||||
│ │ │
|
||||
└─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┴──────────────────────────────────────────────────────────────┘
|
||||
|
||||
@@ -0,0 +1,55 @@
|
||||
---
|
||||
source: src/tests/cases/ui.rs
|
||||
expression: "&terminal_draw_events_mirror[1]"
|
||||
---
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
file2 4.1K (33%)
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
=> subfolder1/ 4.1K (33%) <=
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -0,0 +1,55 @@
|
||||
---
|
||||
source: src/tests/cases/ui.rs
|
||||
expression: "&terminal_draw_events_mirror[2]"
|
||||
---
|
||||
─
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
│ => file1 4.1K (100%) <=
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
─
|
||||
|
||||
@@ -0,0 +1,55 @@
|
||||
---
|
||||
source: src/tests/cases/ui.rs
|
||||
expression: "&terminal_draw_events_mirror[0]"
|
||||
---
|
||||
┌─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┬──────────────────────────────────────────────────────────────┐
|
||||
│ │ │
|
||||
│ │ │
|
||||
│ │ │
|
||||
│ │ │
|
||||
│ │ │
|
||||
│ │ │
|
||||
│ │ │
|
||||
│ │ │
|
||||
│ │ │
|
||||
│ │ │
|
||||
│ │ │
|
||||
│ => file2 4.1K (33%) <= │ │
|
||||
│ │ │
|
||||
│ │ │
|
||||
│ │ │
|
||||
│ │ │
|
||||
│ │ │
|
||||
│ │ │
|
||||
│ │ │
|
||||
│ │ │
|
||||
│ │ │
|
||||
│ │ │
|
||||
│ │ │
|
||||
├─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────│ subfolder1/ 4.1K (33%) │
|
||||
│ │ │
|
||||
│ │ │
|
||||
│ │ │
|
||||
│ │ │
|
||||
│ │ │
|
||||
│ │ │
|
||||
│ │ │
|
||||
│ │ │
|
||||
│ │ │
|
||||
│ │ │
|
||||
│ │ │
|
||||
│ file3 4.1K (33%) │ │
|
||||
│ │ │
|
||||
│ │ │
|
||||
│ │ │
|
||||
│ │ │
|
||||
│ │ │
|
||||
│ │ │
|
||||
│ │ │
|
||||
│ │ │
|
||||
│ │ │
|
||||
│ │ │
|
||||
│ │ │
|
||||
│ │ │
|
||||
└─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┴──────────────────────────────────────────────────────────────┘
|
||||
|
||||
@@ -0,0 +1,55 @@
|
||||
---
|
||||
source: src/tests/cases/ui.rs
|
||||
expression: "&terminal_draw_events_mirror[1]"
|
||||
---
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
subfolder1/ 12.3K (50%)
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
=> file3 8.2K (33%) <=
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -0,0 +1,55 @@
|
||||
---
|
||||
source: src/tests/cases/ui.rs
|
||||
expression: "&terminal_draw_events_mirror[2]"
|
||||
---
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
=> subfolder1/ 12.3K (50%) <=
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
file3 8.2K (33%)
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -0,0 +1,55 @@
|
||||
---
|
||||
source: src/tests/cases/ui.rs
|
||||
expression: "&terminal_draw_events_mirror[3]"
|
||||
---
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
│ => file1 12.3K (100%) <= │
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
─
|
||||
|
||||
55
src/tests/cases/snapshots/ui__move_up_and_enter_folder.snap
Normal file
55
src/tests/cases/snapshots/ui__move_up_and_enter_folder.snap
Normal file
@@ -0,0 +1,55 @@
|
||||
---
|
||||
source: src/tests/cases/ui.rs
|
||||
expression: "&terminal_draw_events_mirror[0]"
|
||||
---
|
||||
┌────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┐
|
||||
│ │
|
||||
│ │
|
||||
│ │
|
||||
│ │
|
||||
│ │
|
||||
│ │
|
||||
│ │
|
||||
│ │
|
||||
│ │
|
||||
│ │
|
||||
│ │
|
||||
│ => subfolder1/ 12.3K (50%) <= │
|
||||
│ │
|
||||
│ │
|
||||
│ │
|
||||
│ │
|
||||
│ │
|
||||
│ │
|
||||
│ │
|
||||
│ │
|
||||
│ │
|
||||
│ │
|
||||
│ │
|
||||
├─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┬──────────────────────────────────────────────────────────────┤
|
||||
│ │ │
|
||||
│ │ │
|
||||
│ │ │
|
||||
│ │ │
|
||||
│ │ │
|
||||
│ │ │
|
||||
│ │ │
|
||||
│ │ │
|
||||
│ │ │
|
||||
│ │ │
|
||||
│ │ │
|
||||
│ file3 8.2K (33%) │ file2 4.1K (17%) │
|
||||
│ │ │
|
||||
│ │ │
|
||||
│ │ │
|
||||
│ │ │
|
||||
│ │ │
|
||||
│ │ │
|
||||
│ │ │
|
||||
│ │ │
|
||||
│ │ │
|
||||
│ │ │
|
||||
│ │ │
|
||||
│ │ │
|
||||
└─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┴──────────────────────────────────────────────────────────────┘
|
||||
|
||||
55
src/tests/cases/snapshots/ui__noop_when_entering_file-2.snap
Normal file
55
src/tests/cases/snapshots/ui__noop_when_entering_file-2.snap
Normal file
@@ -0,0 +1,55 @@
|
||||
---
|
||||
source: src/tests/cases/ui.rs
|
||||
expression: "&terminal_draw_events_mirror[1]"
|
||||
---
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
file2 8.2K (40%)
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
=> file3 8.2K (40%) <=
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
55
src/tests/cases/snapshots/ui__noop_when_entering_file-3.snap
Normal file
55
src/tests/cases/snapshots/ui__noop_when_entering_file-3.snap
Normal file
@@ -0,0 +1,55 @@
|
||||
---
|
||||
source: src/tests/cases/ui.rs
|
||||
expression: "&terminal_draw_events_mirror[2]"
|
||||
---
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
55
src/tests/cases/snapshots/ui__noop_when_entering_file.snap
Normal file
55
src/tests/cases/snapshots/ui__noop_when_entering_file.snap
Normal file
@@ -0,0 +1,55 @@
|
||||
---
|
||||
source: src/tests/cases/ui.rs
|
||||
expression: "&terminal_draw_events_mirror[0]"
|
||||
---
|
||||
┌──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┬─────────────────────────────────────┐
|
||||
│ │ │
|
||||
│ │ │
|
||||
│ │ │
|
||||
│ │ │
|
||||
│ │ │
|
||||
│ │ │
|
||||
│ │ │
|
||||
│ │ │
|
||||
│ │ │
|
||||
│ │ │
|
||||
│ │ │
|
||||
│ => file2 8.2K (40%) <= │ │
|
||||
│ │ │
|
||||
│ │ │
|
||||
│ │ │
|
||||
│ │ │
|
||||
│ │ │
|
||||
│ │ │
|
||||
│ │ │
|
||||
│ │ │
|
||||
│ │ │
|
||||
│ │ │
|
||||
│ │ │
|
||||
├──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────│ file1 4.1K (20%) │
|
||||
│ │ │
|
||||
│ │ │
|
||||
│ │ │
|
||||
│ │ │
|
||||
│ │ │
|
||||
│ │ │
|
||||
│ │ │
|
||||
│ │ │
|
||||
│ │ │
|
||||
│ │ │
|
||||
│ │ │
|
||||
│ file3 8.2K (40%) │ │
|
||||
│ │ │
|
||||
│ │ │
|
||||
│ │ │
|
||||
│ │ │
|
||||
│ │ │
|
||||
│ │ │
|
||||
│ │ │
|
||||
│ │ │
|
||||
│ │ │
|
||||
│ │ │
|
||||
│ │ │
|
||||
│ │ │
|
||||
└──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┴─────────────────────────────────────┘
|
||||
|
||||
@@ -0,0 +1,55 @@
|
||||
---
|
||||
source: src/tests/cases/ui.rs
|
||||
expression: "&terminal_draw_events_mirror[1]"
|
||||
---
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
file1 4.1K (33%)
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
=> file3 4.1K (33%) <=
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -0,0 +1,55 @@
|
||||
---
|
||||
source: src/tests/cases/ui.rs
|
||||
expression: "&terminal_draw_events_mirror[2]"
|
||||
---
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -0,0 +1,55 @@
|
||||
---
|
||||
source: src/tests/cases/ui.rs
|
||||
expression: "&terminal_draw_events_mirror[0]"
|
||||
---
|
||||
┌─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┬──────────────────────────────────────────────────────────────┐
|
||||
│ │ │
|
||||
│ │ │
|
||||
│ │ │
|
||||
│ │ │
|
||||
│ │ │
|
||||
│ │ │
|
||||
│ │ │
|
||||
│ │ │
|
||||
│ │ │
|
||||
│ │ │
|
||||
│ │ │
|
||||
│ => file1 4.1K (33%) <= │ │
|
||||
│ │ │
|
||||
│ │ │
|
||||
│ │ │
|
||||
│ │ │
|
||||
│ │ │
|
||||
│ │ │
|
||||
│ │ │
|
||||
│ │ │
|
||||
│ │ │
|
||||
│ │ │
|
||||
│ │ │
|
||||
├─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────│ file3 4.1K (33%) │
|
||||
│ │ │
|
||||
│ │ │
|
||||
│ │ │
|
||||
│ │ │
|
||||
│ │ │
|
||||
│ │ │
|
||||
│ │ │
|
||||
│ │ │
|
||||
│ │ │
|
||||
│ │ │
|
||||
│ │ │
|
||||
│ file2 4.1K (33%) │ │
|
||||
│ │ │
|
||||
│ │ │
|
||||
│ │ │
|
||||
│ │ │
|
||||
│ │ │
|
||||
│ │ │
|
||||
│ │ │
|
||||
│ │ │
|
||||
│ │ │
|
||||
│ │ │
|
||||
│ │ │
|
||||
│ │ │
|
||||
└─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┴──────────────────────────────────────────────────────────────┘
|
||||
|
||||
@@ -0,0 +1,55 @@
|
||||
---
|
||||
source: src/tests/cases/ui.rs
|
||||
expression: "&terminal_draw_events_mirror[1]"
|
||||
---
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
file2 4.1K (33%)
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
=> subfolder1/ 4.1K (33%) <=
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -0,0 +1,55 @@
|
||||
---
|
||||
source: src/tests/cases/ui.rs
|
||||
expression: "&terminal_draw_events_mirror[2]"
|
||||
---
|
||||
─
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
│ => file1 4.1K (100%) <=
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
─
|
||||
|
||||
@@ -0,0 +1,55 @@
|
||||
---
|
||||
source: src/tests/cases/ui.rs
|
||||
expression: "&terminal_draw_events_mirror[3]"
|
||||
---
|
||||
┬
|
||||
│
|
||||
│
|
||||
│
|
||||
│
|
||||
│
|
||||
│
|
||||
│
|
||||
│
|
||||
│
|
||||
│
|
||||
│
|
||||
=> file2 4.1K (33%) <= │
|
||||
│
|
||||
│
|
||||
│
|
||||
│
|
||||
│
|
||||
│
|
||||
│
|
||||
│
|
||||
│
|
||||
│
|
||||
│
|
||||
├─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────│ subfolder1/ 4.1K (33%)
|
||||
│
|
||||
│
|
||||
│
|
||||
│
|
||||
│
|
||||
│
|
||||
│
|
||||
│
|
||||
│
|
||||
│
|
||||
│
|
||||
file3 4.1K (33%) │
|
||||
│
|
||||
│
|
||||
│
|
||||
│
|
||||
│
|
||||
│
|
||||
│
|
||||
│
|
||||
│
|
||||
│
|
||||
│
|
||||
│
|
||||
┴
|
||||
|
||||
@@ -0,0 +1,55 @@
|
||||
---
|
||||
source: src/tests/cases/ui.rs
|
||||
expression: "&terminal_draw_events_mirror[4]"
|
||||
---
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -0,0 +1,55 @@
|
||||
---
|
||||
source: src/tests/cases/ui.rs
|
||||
expression: "&terminal_draw_events_mirror[0]"
|
||||
---
|
||||
┌─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┬──────────────────────────────────────────────────────────────┐
|
||||
│ │ │
|
||||
│ │ │
|
||||
│ │ │
|
||||
│ │ │
|
||||
│ │ │
|
||||
│ │ │
|
||||
│ │ │
|
||||
│ │ │
|
||||
│ │ │
|
||||
│ │ │
|
||||
│ │ │
|
||||
│ => file2 4.1K (33%) <= │ │
|
||||
│ │ │
|
||||
│ │ │
|
||||
│ │ │
|
||||
│ │ │
|
||||
│ │ │
|
||||
│ │ │
|
||||
│ │ │
|
||||
│ │ │
|
||||
│ │ │
|
||||
│ │ │
|
||||
│ │ │
|
||||
├─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────│ subfolder1/ 4.1K (33%) │
|
||||
│ │ │
|
||||
│ │ │
|
||||
│ │ │
|
||||
│ │ │
|
||||
│ │ │
|
||||
│ │ │
|
||||
│ │ │
|
||||
│ │ │
|
||||
│ │ │
|
||||
│ │ │
|
||||
│ │ │
|
||||
│ file3 4.1K (33%) │ │
|
||||
│ │ │
|
||||
│ │ │
|
||||
│ │ │
|
||||
│ │ │
|
||||
│ │ │
|
||||
│ │ │
|
||||
│ │ │
|
||||
│ │ │
|
||||
│ │ │
|
||||
│ │ │
|
||||
│ │ │
|
||||
│ │ │
|
||||
└─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┴──────────────────────────────────────────────────────────────┘
|
||||
|
||||
@@ -11,7 +11,11 @@ use std::fs::{File, create_dir};
|
||||
use std::io::prelude::*;
|
||||
use uuid::Uuid;
|
||||
|
||||
fn create_temp_dir () -> Result<PathBuf, failure::Error> {
|
||||
use std::iter;
|
||||
use ::termion::event::{Event, Key};
|
||||
use crate::tests::fakes::{KeyboardEvents};
|
||||
|
||||
fn create_root_temp_dir () -> Result<PathBuf, failure::Error> {
|
||||
let mut dir = env::temp_dir();
|
||||
let temp_dir_name = Uuid::new_v4();
|
||||
dir.push(temp_dir_name.to_string());
|
||||
@@ -30,12 +34,15 @@ fn create_temp_file (path: PathBuf, size: usize) -> Result<(), failure::Error> {
|
||||
Ok(())
|
||||
}
|
||||
|
||||
// TODO: also test with immediately pressing j after start without sleep to make sure we do not
|
||||
// panic
|
||||
|
||||
#[test]
|
||||
fn two_large_files_one_small_file () {
|
||||
|
||||
let (terminal_events, terminal_draw_events, backend) = test_backend_factory(190, 50);
|
||||
let keyboard_events = sleep_and_quit_events(2);
|
||||
let temp_dir_path = create_temp_dir().expect("failed to create temp dir");
|
||||
let keyboard_events = sleep_and_quit_events(1);
|
||||
let temp_dir_path = create_root_temp_dir().expect("failed to create temp dir");
|
||||
|
||||
let mut file_1_path = PathBuf::from(&temp_dir_path);
|
||||
file_1_path.push("file1");
|
||||
@@ -52,24 +59,25 @@ fn two_large_files_one_small_file () {
|
||||
start(backend, keyboard_events, temp_dir_path.clone());
|
||||
std::fs::remove_dir_all(temp_dir_path).expect("failed to remove temporary folder");
|
||||
let terminal_draw_events_mirror = terminal_draw_events.lock().unwrap();
|
||||
println!("terminal_draw_events_mirror[0] {:?}", terminal_draw_events_mirror[0]);
|
||||
|
||||
let expected_terminal_events = vec![Clear, HideCursor, Draw, Flush, Draw, Flush, Clear, ShowCursor];
|
||||
let expected_terminal_events = vec![Clear, HideCursor, Draw, Flush, Clear, ShowCursor];
|
||||
|
||||
assert_eq!(
|
||||
&terminal_events.lock().unwrap()[..],
|
||||
&expected_terminal_events[..]
|
||||
);
|
||||
|
||||
assert_eq!(terminal_draw_events_mirror.len(), 2);
|
||||
assert_snapshot!(&terminal_draw_events_mirror[1]);
|
||||
assert_eq!(terminal_draw_events_mirror.len(), 1);
|
||||
assert_snapshot!(&terminal_draw_events_mirror[0]);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn eleven_files () {
|
||||
|
||||
let (terminal_events, terminal_draw_events, backend) = test_backend_factory(190, 50);
|
||||
let keyboard_events = sleep_and_quit_events(2);
|
||||
let temp_dir_path = create_temp_dir().expect("failed to create temp dir");
|
||||
let keyboard_events = sleep_and_quit_events(1);
|
||||
let temp_dir_path = create_root_temp_dir().expect("failed to create temp dir");
|
||||
|
||||
let mut file_1_path = PathBuf::from(&temp_dir_path);
|
||||
file_1_path.push("file1");
|
||||
@@ -119,12 +127,406 @@ fn eleven_files () {
|
||||
std::fs::remove_dir_all(temp_dir_path).expect("failed to remove temporary folder");
|
||||
let terminal_draw_events_mirror = terminal_draw_events.lock().unwrap();
|
||||
|
||||
let expected_terminal_events = vec![Clear, HideCursor, Draw, Flush, Draw, Flush, Clear, ShowCursor];
|
||||
// let expected_terminal_events = vec![Clear, HideCursor, Draw, Flush, Draw, Flush, Clear, ShowCursor];
|
||||
let expected_terminal_events = vec![Clear, HideCursor, Draw, Flush, Clear, ShowCursor];
|
||||
assert_eq!(
|
||||
&terminal_events.lock().unwrap()[..],
|
||||
&expected_terminal_events[..]
|
||||
);
|
||||
|
||||
assert_eq!(terminal_draw_events_mirror.len(), 2);
|
||||
assert_snapshot!(&terminal_draw_events_mirror[1]);
|
||||
assert_eq!(terminal_draw_events_mirror.len(), 1);
|
||||
assert_snapshot!(&terminal_draw_events_mirror[0]);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn move_down_and_enter_folder() {
|
||||
|
||||
let (terminal_events, terminal_draw_events, backend) = test_backend_factory(190, 50);
|
||||
|
||||
let mut events: Vec<Option<Event>> = iter::repeat(None).take(1).collect();
|
||||
events.push(Some(Event::Key(Key::Char('j'))));
|
||||
events.push(None);
|
||||
events.push(Some(Event::Key(Key::Char('\n'))));
|
||||
events.push(None);
|
||||
events.push(Some(Event::Key(Key::Ctrl('c'))));
|
||||
let keyboard_events = Box::new(KeyboardEvents::new(events));
|
||||
|
||||
let temp_dir_path = create_root_temp_dir().expect("failed to create temp dir");
|
||||
|
||||
let mut file_1_path = PathBuf::from(&temp_dir_path);
|
||||
file_1_path.push("file1");
|
||||
create_temp_file(file_1_path, 4000).expect("failed to create temp file");
|
||||
|
||||
let mut file_2_path = PathBuf::from(&temp_dir_path);
|
||||
file_2_path.push("file2");
|
||||
create_temp_file(file_2_path, 5000).expect("failed to create temp file");
|
||||
|
||||
let mut subfolder_1_path = PathBuf::from(&temp_dir_path);
|
||||
subfolder_1_path.push("subfolder1");
|
||||
create_dir(subfolder_1_path).expect("failed to create temporary directory");
|
||||
|
||||
let mut file_3_path = PathBuf::from(&temp_dir_path);
|
||||
file_3_path.push("subfolder1");
|
||||
file_3_path.push("file3");
|
||||
create_temp_file(file_3_path, 5000).expect("failed to create temp file");
|
||||
|
||||
start(backend, keyboard_events, temp_dir_path.clone());
|
||||
std::fs::remove_dir_all(temp_dir_path).expect("failed to remove temporary folder");
|
||||
let terminal_draw_events_mirror = terminal_draw_events.lock().expect("could not acquire lock on terminal events");
|
||||
|
||||
let expected_terminal_events = vec![Clear, HideCursor, Draw, Flush, Draw, Flush, Draw, Flush, Clear, ShowCursor];
|
||||
|
||||
assert_eq!(
|
||||
&terminal_events.lock().expect("could not acquire lock on terminal_events")[..],
|
||||
&expected_terminal_events[..]
|
||||
);
|
||||
|
||||
assert_eq!(terminal_draw_events_mirror.len(), 3);
|
||||
assert_snapshot!(&terminal_draw_events_mirror[0]);
|
||||
assert_snapshot!(&terminal_draw_events_mirror[1]);
|
||||
assert_snapshot!(&terminal_draw_events_mirror[2]);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn noop_when_entering_file() {
|
||||
let (terminal_events, terminal_draw_events, backend) = test_backend_factory(190, 50);
|
||||
|
||||
let mut events: Vec<Option<Event>> = iter::repeat(None).take(1).collect();
|
||||
events.push(Some(Event::Key(Key::Char('j'))));
|
||||
events.push(None);
|
||||
events.push(Some(Event::Key(Key::Char('\n'))));
|
||||
events.push(None);
|
||||
events.push(Some(Event::Key(Key::Ctrl('c'))));
|
||||
let keyboard_events = Box::new(KeyboardEvents::new(events));
|
||||
|
||||
let temp_dir_path = create_root_temp_dir().expect("failed to create temp dir");
|
||||
|
||||
let mut file_1_path = PathBuf::from(&temp_dir_path);
|
||||
file_1_path.push("file1");
|
||||
create_temp_file(file_1_path, 4000).expect("failed to create temp file");
|
||||
|
||||
let mut file_2_path = PathBuf::from(&temp_dir_path);
|
||||
file_2_path.push("file2");
|
||||
create_temp_file(file_2_path, 5000).expect("failed to create temp file");
|
||||
|
||||
let mut file_3_path = PathBuf::from(&temp_dir_path);
|
||||
file_3_path.push("file3");
|
||||
create_temp_file(file_3_path, 5000).expect("failed to create temp file");
|
||||
|
||||
start(backend, keyboard_events, temp_dir_path.clone());
|
||||
std::fs::remove_dir_all(temp_dir_path).expect("failed to remove temporary folder");
|
||||
let terminal_draw_events_mirror = terminal_draw_events.lock().expect("could not acquire lock on terminal events");
|
||||
|
||||
let expected_terminal_events = vec![Clear, HideCursor, Draw, Flush, Draw, Flush, Draw, Flush, Clear, ShowCursor];
|
||||
|
||||
assert_eq!(
|
||||
&terminal_events.lock().expect("could not acquire lock on terminal_events")[..],
|
||||
&expected_terminal_events[..]
|
||||
);
|
||||
|
||||
assert_eq!(terminal_draw_events_mirror.len(), 3);
|
||||
assert_snapshot!(&terminal_draw_events_mirror[0]);
|
||||
assert_snapshot!(&terminal_draw_events_mirror[1]);
|
||||
assert_snapshot!(&terminal_draw_events_mirror[2]);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn move_up_and_enter_folder() {
|
||||
let (terminal_events, terminal_draw_events, backend) = test_backend_factory(190, 50);
|
||||
|
||||
let mut events: Vec<Option<Event>> = iter::repeat(None).take(1).collect();
|
||||
events.push(Some(Event::Key(Key::Char('j'))));
|
||||
events.push(None);
|
||||
events.push(Some(Event::Key(Key::Char('k'))));
|
||||
events.push(None);
|
||||
events.push(Some(Event::Key(Key::Char('\n'))));
|
||||
events.push(None);
|
||||
events.push(Some(Event::Key(Key::Ctrl('c'))));
|
||||
let keyboard_events = Box::new(KeyboardEvents::new(events));
|
||||
|
||||
let temp_dir_path = create_root_temp_dir().expect("failed to create temp dir");
|
||||
|
||||
let mut subfolder_1_path = PathBuf::from(&temp_dir_path);
|
||||
subfolder_1_path.push("subfolder1");
|
||||
create_dir(subfolder_1_path).expect("failed to create temporary directory");
|
||||
|
||||
let mut file_1_path = PathBuf::from(&temp_dir_path);
|
||||
file_1_path.push("subfolder1");
|
||||
file_1_path.push("file1");
|
||||
create_temp_file(file_1_path, 10000).expect("failed to create temp file");
|
||||
|
||||
let mut file_2_path = PathBuf::from(&temp_dir_path);
|
||||
file_2_path.push("file2");
|
||||
create_temp_file(file_2_path, 4000).expect("failed to create temp file");
|
||||
|
||||
let mut file_3_path = PathBuf::from(&temp_dir_path);
|
||||
file_3_path.push("file3");
|
||||
create_temp_file(file_3_path, 5000).expect("failed to create temp file");
|
||||
|
||||
start(backend, keyboard_events, temp_dir_path.clone());
|
||||
std::fs::remove_dir_all(temp_dir_path).expect("failed to remove temporary folder");
|
||||
let terminal_draw_events_mirror = terminal_draw_events.lock().expect("could not acquire lock on terminal events");
|
||||
|
||||
let expected_terminal_events = vec![Clear, HideCursor, Draw, Flush, Draw, Flush, Draw, Flush, Draw, Flush, Clear, ShowCursor];
|
||||
|
||||
assert_eq!(
|
||||
&terminal_events.lock().expect("could not acquire lock on terminal_events")[..],
|
||||
&expected_terminal_events[..]
|
||||
);
|
||||
|
||||
assert_eq!(terminal_draw_events_mirror.len(), 4);
|
||||
assert_snapshot!(&terminal_draw_events_mirror[0]);
|
||||
assert_snapshot!(&terminal_draw_events_mirror[1]);
|
||||
assert_snapshot!(&terminal_draw_events_mirror[2]);
|
||||
assert_snapshot!(&terminal_draw_events_mirror[3]);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn move_right_and_enter_folder() {
|
||||
let (terminal_events, terminal_draw_events, backend) = test_backend_factory(190, 50);
|
||||
|
||||
let mut events: Vec<Option<Event>> = iter::repeat(None).take(1).collect();
|
||||
events.push(Some(Event::Key(Key::Char('l'))));
|
||||
events.push(None);
|
||||
events.push(Some(Event::Key(Key::Char('\n'))));
|
||||
events.push(None);
|
||||
events.push(Some(Event::Key(Key::Ctrl('c'))));
|
||||
let keyboard_events = Box::new(KeyboardEvents::new(events));
|
||||
|
||||
let temp_dir_path = create_root_temp_dir().expect("failed to create temp dir");
|
||||
|
||||
let mut subfolder_1_path = PathBuf::from(&temp_dir_path);
|
||||
subfolder_1_path.push("subfolder1");
|
||||
create_dir(subfolder_1_path).expect("failed to create temporary directory");
|
||||
|
||||
let mut file_1_path = PathBuf::from(&temp_dir_path);
|
||||
file_1_path.push("subfolder1");
|
||||
file_1_path.push("file1");
|
||||
create_temp_file(file_1_path, 4000).expect("failed to create temp file");
|
||||
|
||||
let mut file_2_path = PathBuf::from(&temp_dir_path);
|
||||
file_2_path.push("file2");
|
||||
create_temp_file(file_2_path, 4000).expect("failed to create temp file");
|
||||
|
||||
let mut file_3_path = PathBuf::from(&temp_dir_path);
|
||||
file_3_path.push("file3");
|
||||
create_temp_file(file_3_path, 4000).expect("failed to create temp file");
|
||||
|
||||
start(backend, keyboard_events, temp_dir_path.clone());
|
||||
std::fs::remove_dir_all(temp_dir_path).expect("failed to remove temporary folder");
|
||||
let terminal_draw_events_mirror = terminal_draw_events.lock().expect("could not acquire lock on terminal events");
|
||||
|
||||
let expected_terminal_events = vec![Clear, HideCursor, Draw, Flush, Draw, Flush, Draw, Flush, Clear, ShowCursor];
|
||||
|
||||
assert_eq!(
|
||||
&terminal_events.lock().expect("could not acquire lock on terminal_events")[..],
|
||||
&expected_terminal_events[..]
|
||||
);
|
||||
|
||||
assert_eq!(terminal_draw_events_mirror.len(), 3);
|
||||
assert_snapshot!(&terminal_draw_events_mirror[0]);
|
||||
assert_snapshot!(&terminal_draw_events_mirror[1]);
|
||||
assert_snapshot!(&terminal_draw_events_mirror[2]);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn move_left_and_enter_folder() {
|
||||
let (terminal_events, terminal_draw_events, backend) = test_backend_factory(190, 50);
|
||||
|
||||
let mut events: Vec<Option<Event>> = iter::repeat(None).take(1).collect();
|
||||
events.push(Some(Event::Key(Key::Char('l'))));
|
||||
events.push(None);
|
||||
events.push(Some(Event::Key(Key::Char('h'))));
|
||||
events.push(None);
|
||||
events.push(Some(Event::Key(Key::Char('l'))));
|
||||
events.push(None);
|
||||
events.push(Some(Event::Key(Key::Char('\n'))));
|
||||
events.push(None);
|
||||
events.push(Some(Event::Key(Key::Ctrl('c'))));
|
||||
let keyboard_events = Box::new(KeyboardEvents::new(events));
|
||||
|
||||
let temp_dir_path = create_root_temp_dir().expect("failed to create temp dir");
|
||||
|
||||
let mut subfolder_1_path = PathBuf::from(&temp_dir_path);
|
||||
subfolder_1_path.push("subfolder1");
|
||||
create_dir(subfolder_1_path).expect("failed to create temporary directory");
|
||||
|
||||
let mut file_1_path = PathBuf::from(&temp_dir_path);
|
||||
file_1_path.push("subfolder1");
|
||||
file_1_path.push("file1");
|
||||
create_temp_file(file_1_path, 4000).expect("failed to create temp file");
|
||||
|
||||
let mut file_2_path = PathBuf::from(&temp_dir_path);
|
||||
file_2_path.push("file2");
|
||||
create_temp_file(file_2_path, 4000).expect("failed to create temp file");
|
||||
|
||||
let mut file_3_path = PathBuf::from(&temp_dir_path);
|
||||
file_3_path.push("file3");
|
||||
create_temp_file(file_3_path, 4000).expect("failed to create temp file");
|
||||
|
||||
start(backend, keyboard_events, temp_dir_path.clone());
|
||||
std::fs::remove_dir_all(temp_dir_path).expect("failed to remove temporary folder");
|
||||
let terminal_draw_events_mirror = terminal_draw_events.lock().expect("could not acquire lock on terminal events");
|
||||
|
||||
let expected_terminal_events = vec![Clear, HideCursor, Draw, Flush, Draw, Flush, Draw, Flush, Draw, Flush, Draw, Flush, Clear, ShowCursor];
|
||||
|
||||
assert_eq!(
|
||||
&terminal_events.lock().expect("could not acquire lock on terminal_events")[..],
|
||||
&expected_terminal_events[..]
|
||||
);
|
||||
|
||||
assert_eq!(terminal_draw_events_mirror.len(), 5);
|
||||
assert_snapshot!(&terminal_draw_events_mirror[0]);
|
||||
assert_snapshot!(&terminal_draw_events_mirror[1]);
|
||||
assert_snapshot!(&terminal_draw_events_mirror[2]);
|
||||
assert_snapshot!(&terminal_draw_events_mirror[3]);
|
||||
assert_snapshot!(&terminal_draw_events_mirror[4]);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn noop_when_moving_off_screen_edges() {
|
||||
let (terminal_events, terminal_draw_events, backend) = test_backend_factory(190, 50);
|
||||
|
||||
let mut events: Vec<Option<Event>> = iter::repeat(None).take(1).collect();
|
||||
events.push(Some(Event::Key(Key::Char('l'))));
|
||||
events.push(None);
|
||||
events.push(Some(Event::Key(Key::Char('l'))));
|
||||
events.push(None);
|
||||
events.push(Some(Event::Key(Key::Ctrl('c'))));
|
||||
let keyboard_events = Box::new(KeyboardEvents::new(events));
|
||||
|
||||
let temp_dir_path = create_root_temp_dir().expect("failed to create temp dir");
|
||||
|
||||
let mut file_1_path = PathBuf::from(&temp_dir_path);
|
||||
file_1_path.push("file1");
|
||||
create_temp_file(file_1_path, 4000).expect("failed to create temp file");
|
||||
|
||||
let mut file_2_path = PathBuf::from(&temp_dir_path);
|
||||
file_2_path.push("file2");
|
||||
create_temp_file(file_2_path, 4000).expect("failed to create temp file");
|
||||
|
||||
let mut file_3_path = PathBuf::from(&temp_dir_path);
|
||||
file_3_path.push("file3");
|
||||
create_temp_file(file_3_path, 4000).expect("failed to create temp file");
|
||||
|
||||
start(backend, keyboard_events, temp_dir_path.clone());
|
||||
std::fs::remove_dir_all(temp_dir_path).expect("failed to remove temporary folder");
|
||||
let terminal_draw_events_mirror = terminal_draw_events.lock().expect("could not acquire lock on terminal events");
|
||||
|
||||
let expected_terminal_events = vec![Clear, HideCursor, Draw, Flush, Draw, Flush, Draw, Flush, Clear, ShowCursor];
|
||||
|
||||
assert_eq!(
|
||||
&terminal_events.lock().expect("could not acquire lock on terminal_events")[..],
|
||||
&expected_terminal_events[..]
|
||||
);
|
||||
|
||||
assert_eq!(terminal_draw_events_mirror.len(), 3);
|
||||
assert_snapshot!(&terminal_draw_events_mirror[0]);
|
||||
assert_snapshot!(&terminal_draw_events_mirror[1]);
|
||||
assert_snapshot!(&terminal_draw_events_mirror[2]);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn esc_to_go_up() {
|
||||
let (terminal_events, terminal_draw_events, backend) = test_backend_factory(190, 50);
|
||||
|
||||
let mut events: Vec<Option<Event>> = iter::repeat(None).take(1).collect();
|
||||
events.push(Some(Event::Key(Key::Char('l'))));
|
||||
events.push(None);
|
||||
events.push(Some(Event::Key(Key::Char('\n'))));
|
||||
events.push(None);
|
||||
events.push(Some(Event::Key(Key::Esc)));
|
||||
events.push(None);
|
||||
events.push(Some(Event::Key(Key::Ctrl('c'))));
|
||||
let keyboard_events = Box::new(KeyboardEvents::new(events));
|
||||
|
||||
let temp_dir_path = create_root_temp_dir().expect("failed to create temp dir");
|
||||
|
||||
let mut subfolder_1_path = PathBuf::from(&temp_dir_path);
|
||||
subfolder_1_path.push("subfolder1");
|
||||
create_dir(subfolder_1_path).expect("failed to create temporary directory");
|
||||
|
||||
let mut file_1_path = PathBuf::from(&temp_dir_path);
|
||||
file_1_path.push("subfolder1");
|
||||
file_1_path.push("file1");
|
||||
create_temp_file(file_1_path, 4000).expect("failed to create temp file");
|
||||
|
||||
let mut file_2_path = PathBuf::from(&temp_dir_path);
|
||||
file_2_path.push("file2");
|
||||
create_temp_file(file_2_path, 4000).expect("failed to create temp file");
|
||||
|
||||
let mut file_3_path = PathBuf::from(&temp_dir_path);
|
||||
file_3_path.push("file3");
|
||||
create_temp_file(file_3_path, 4000).expect("failed to create temp file");
|
||||
|
||||
start(backend, keyboard_events, temp_dir_path.clone());
|
||||
std::fs::remove_dir_all(temp_dir_path).expect("failed to remove temporary folder");
|
||||
let terminal_draw_events_mirror = terminal_draw_events.lock().expect("could not acquire lock on terminal events");
|
||||
|
||||
let expected_terminal_events = vec![Clear, HideCursor, Draw, Flush, Draw, Flush, Draw, Flush, Draw, Flush, Clear, ShowCursor];
|
||||
|
||||
assert_eq!(
|
||||
&terminal_events.lock().expect("could not acquire lock on terminal_events")[..],
|
||||
&expected_terminal_events[..]
|
||||
);
|
||||
|
||||
assert_eq!(terminal_draw_events_mirror.len(), 4);
|
||||
assert_snapshot!(&terminal_draw_events_mirror[0]);
|
||||
assert_snapshot!(&terminal_draw_events_mirror[1]);
|
||||
assert_snapshot!(&terminal_draw_events_mirror[2]);
|
||||
assert_snapshot!(&terminal_draw_events_mirror[3]);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn noop_when_pressing_esc_at_base_folder() {
|
||||
let (terminal_events, terminal_draw_events, backend) = test_backend_factory(190, 50);
|
||||
|
||||
let mut events: Vec<Option<Event>> = iter::repeat(None).take(1).collect();
|
||||
events.push(Some(Event::Key(Key::Char('l'))));
|
||||
events.push(None);
|
||||
events.push(Some(Event::Key(Key::Char('\n'))));
|
||||
events.push(None);
|
||||
events.push(Some(Event::Key(Key::Esc)));
|
||||
events.push(None);
|
||||
events.push(Some(Event::Key(Key::Esc)));
|
||||
events.push(None);
|
||||
events.push(Some(Event::Key(Key::Ctrl('c'))));
|
||||
let keyboard_events = Box::new(KeyboardEvents::new(events));
|
||||
|
||||
let temp_dir_path = create_root_temp_dir().expect("failed to create temp dir");
|
||||
|
||||
let mut subfolder_1_path = PathBuf::from(&temp_dir_path);
|
||||
subfolder_1_path.push("subfolder1");
|
||||
create_dir(subfolder_1_path).expect("failed to create temporary directory");
|
||||
|
||||
let mut file_1_path = PathBuf::from(&temp_dir_path);
|
||||
file_1_path.push("subfolder1");
|
||||
file_1_path.push("file1");
|
||||
create_temp_file(file_1_path, 4000).expect("failed to create temp file");
|
||||
|
||||
let mut file_2_path = PathBuf::from(&temp_dir_path);
|
||||
file_2_path.push("file2");
|
||||
create_temp_file(file_2_path, 4000).expect("failed to create temp file");
|
||||
|
||||
let mut file_3_path = PathBuf::from(&temp_dir_path);
|
||||
file_3_path.push("file3");
|
||||
create_temp_file(file_3_path, 4000).expect("failed to create temp file");
|
||||
|
||||
start(backend, keyboard_events, temp_dir_path.clone());
|
||||
std::fs::remove_dir_all(temp_dir_path).expect("failed to remove temporary folder");
|
||||
let terminal_draw_events_mirror = terminal_draw_events.lock().expect("could not acquire lock on terminal events");
|
||||
|
||||
let expected_terminal_events = vec![Clear, HideCursor, Draw, Flush, Draw, Flush, Draw, Flush, Draw, Flush, Draw, Flush, Clear, ShowCursor];
|
||||
|
||||
assert_eq!(
|
||||
&terminal_events.lock().expect("could not acquire lock on terminal_events")[..],
|
||||
&expected_terminal_events[..]
|
||||
);
|
||||
|
||||
assert_eq!(terminal_draw_events_mirror.len(), 5);
|
||||
assert_snapshot!(&terminal_draw_events_mirror[0]);
|
||||
assert_snapshot!(&terminal_draw_events_mirror[1]);
|
||||
assert_snapshot!(&terminal_draw_events_mirror[2]);
|
||||
assert_snapshot!(&terminal_draw_events_mirror[3]);
|
||||
assert_snapshot!(&terminal_draw_events_mirror[4]);
|
||||
}
|
||||
|
||||
@@ -18,7 +18,7 @@ impl Iterator for KeyboardEvents {
|
||||
Some(ev) => match ev {
|
||||
Some(ev) => Some(ev),
|
||||
None => {
|
||||
thread::sleep(time::Duration::from_millis(900));
|
||||
thread::sleep(time::Duration::from_millis(100));
|
||||
self.next()
|
||||
}
|
||||
},
|
||||
|
||||
Reference in New Issue
Block a user