Compare commits
4 commits
5fb0410eee
...
7410ec5143
| Author | SHA1 | Date | |
|---|---|---|---|
| 7410ec5143 | |||
| f174f364a4 | |||
|
|
3060032a95 | ||
|
|
85dc2f0707 |
1 changed files with 72 additions and 4 deletions
|
|
@ -383,11 +383,12 @@ impl UI {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
KeyEvent { code: KeyCode::Up, .. }
|
KeyEvent { code: KeyCode::Up, .. }
|
||||||
| KeyEvent { code: KeyCode::Char('j'), .. } => {
|
| KeyEvent { code: KeyCode::Char('k'), .. } => {
|
||||||
let index = match self.selection.selected() {
|
let index = match self.selection.selected() {
|
||||||
Some(i) => {
|
Some(i) => {
|
||||||
|
assert!(self.ports.len() > 0, "We must have ports because we have a selection.");
|
||||||
if i == 0 {
|
if i == 0 {
|
||||||
0
|
self.ports.len() - 1
|
||||||
} else {
|
} else {
|
||||||
i - 1
|
i - 1
|
||||||
}
|
}
|
||||||
|
|
@ -397,11 +398,11 @@ impl UI {
|
||||||
self.selection.select(Some(index));
|
self.selection.select(Some(index));
|
||||||
}
|
}
|
||||||
KeyEvent { code: KeyCode::Down, .. }
|
KeyEvent { code: KeyCode::Down, .. }
|
||||||
| KeyEvent { code: KeyCode::Char('k'), .. } => {
|
| KeyEvent { code: KeyCode::Char('j'), .. } => {
|
||||||
let index = match self.selection.selected() {
|
let index = match self.selection.selected() {
|
||||||
Some(i) => {
|
Some(i) => {
|
||||||
assert!(self.ports.len() > 0, "We must have ports because we have a selection.");
|
assert!(self.ports.len() > 0, "We must have ports because we have a selection.");
|
||||||
(i + 1).min(self.ports.len() - 1)
|
(i + 1) % self.ports.len()
|
||||||
}
|
}
|
||||||
None => 0,
|
None => 0,
|
||||||
};
|
};
|
||||||
|
|
@ -572,6 +573,73 @@ mod tests {
|
||||||
assert_eq!(ui.ports.len(), 2);
|
assert_eq!(ui.ports.len(), 2);
|
||||||
assert_matches!(ui.selection.selected(), Some(0));
|
assert_matches!(ui.selection.selected(), Some(0));
|
||||||
|
|
||||||
|
// Move selection up => wraps around the length
|
||||||
|
ui.handle_console_event(Some(Ok(Event::Key(KeyEvent::new(
|
||||||
|
KeyCode::Up,
|
||||||
|
KeyModifiers::empty(),
|
||||||
|
)))));
|
||||||
|
assert_matches!(ui.selection.selected(), Some(1));
|
||||||
|
ui.handle_console_event(Some(Ok(Event::Key(KeyEvent::new(
|
||||||
|
KeyCode::Up,
|
||||||
|
KeyModifiers::empty(),
|
||||||
|
)))));
|
||||||
|
assert_matches!(ui.selection.selected(), Some(0));
|
||||||
|
ui.handle_console_event(Some(Ok(Event::Key(KeyEvent::new(
|
||||||
|
KeyCode::Up,
|
||||||
|
KeyModifiers::empty(),
|
||||||
|
)))));
|
||||||
|
assert_matches!(ui.selection.selected(), Some(1));
|
||||||
|
|
||||||
|
// Move selection down => wraps around the length
|
||||||
|
ui.handle_console_event(Some(Ok(Event::Key(KeyEvent::new(
|
||||||
|
KeyCode::Down,
|
||||||
|
KeyModifiers::empty(),
|
||||||
|
)))));
|
||||||
|
assert_matches!(ui.selection.selected(), Some(0));
|
||||||
|
ui.handle_console_event(Some(Ok(Event::Key(KeyEvent::new(
|
||||||
|
KeyCode::Down,
|
||||||
|
KeyModifiers::empty(),
|
||||||
|
)))));
|
||||||
|
assert_matches!(ui.selection.selected(), Some(1));
|
||||||
|
ui.handle_console_event(Some(Ok(Event::Key(KeyEvent::new(
|
||||||
|
KeyCode::Down,
|
||||||
|
KeyModifiers::empty(),
|
||||||
|
)))));
|
||||||
|
assert_matches!(ui.selection.selected(), Some(0));
|
||||||
|
|
||||||
|
// J and K move the correct direction
|
||||||
|
ui.handle_internal_event(Some(UIEvent::Ports(vec![
|
||||||
|
PortDesc {
|
||||||
|
port: 8080,
|
||||||
|
desc: "my-service".to_string(),
|
||||||
|
},
|
||||||
|
PortDesc {
|
||||||
|
port: 8081,
|
||||||
|
desc: "my-service".to_string(),
|
||||||
|
},
|
||||||
|
PortDesc {
|
||||||
|
port: 8082,
|
||||||
|
desc: "my-service".to_string(),
|
||||||
|
},
|
||||||
|
])));
|
||||||
|
assert_eq!(ui.ports.len(), 3);
|
||||||
|
|
||||||
|
// J is down
|
||||||
|
ui.selection.select(Some(1));
|
||||||
|
ui.handle_console_event(Some(Ok(Event::Key(KeyEvent::new(
|
||||||
|
KeyCode::Char('j'),
|
||||||
|
KeyModifiers::empty(),
|
||||||
|
)))));
|
||||||
|
assert_matches!(ui.selection.selected(), Some(2));
|
||||||
|
|
||||||
|
// K is up
|
||||||
|
ui.selection.select(Some(1));
|
||||||
|
ui.handle_console_event(Some(Ok(Event::Key(KeyEvent::new(
|
||||||
|
KeyCode::Char('k'),
|
||||||
|
KeyModifiers::empty(),
|
||||||
|
)))));
|
||||||
|
assert_matches!(ui.selection.selected(), Some(0));
|
||||||
|
|
||||||
drop(sender);
|
drop(sender);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue