Completed events unit tests
This commit is contained in:
@@ -14,7 +14,6 @@ pub enum InputEvent<T> {
|
|||||||
}
|
}
|
||||||
|
|
||||||
pub struct Events {
|
pub struct Events {
|
||||||
_tx: Sender<InputEvent<Key>>,
|
|
||||||
rx: Receiver<InputEvent<Key>>,
|
rx: Receiver<InputEvent<Key>>,
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -23,7 +22,6 @@ impl Events {
|
|||||||
let (tx, rx) = mpsc::channel();
|
let (tx, rx) = mpsc::channel();
|
||||||
let tick_rate: Duration = Duration::from_millis(250);
|
let tick_rate: Duration = Duration::from_millis(250);
|
||||||
|
|
||||||
let event_tx = tx.clone();
|
|
||||||
thread::spawn(move || {
|
thread::spawn(move || {
|
||||||
let mut last_tick = Instant::now();
|
let mut last_tick = Instant::now();
|
||||||
loop {
|
loop {
|
||||||
@@ -33,18 +31,18 @@ impl Events {
|
|||||||
if event::poll(timeout).unwrap() {
|
if event::poll(timeout).unwrap() {
|
||||||
if let CrosstermEvent::Key(key_event) = event::read().unwrap() {
|
if let CrosstermEvent::Key(key_event) = event::read().unwrap() {
|
||||||
let key = Key::from(key_event);
|
let key = Key::from(key_event);
|
||||||
event_tx.send(InputEvent::KeyEvent(key)).unwrap();
|
tx.send(InputEvent::KeyEvent(key)).unwrap();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if last_tick.elapsed() >= tick_rate {
|
if last_tick.elapsed() >= tick_rate {
|
||||||
event_tx.send(InputEvent::Tick).unwrap();
|
tx.send(InputEvent::Tick).unwrap();
|
||||||
last_tick = Instant::now();
|
last_tick = Instant::now();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
Events { _tx: tx, rx }
|
Events { rx }
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn next(&self) -> Result<InputEvent<Key>, mpsc::RecvError> {
|
pub fn next(&self) -> Result<InputEvent<Key>, mpsc::RecvError> {
|
||||||
|
|||||||
+64
-1
@@ -85,14 +85,77 @@ mod tests {
|
|||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn test_key_formatter() {
|
fn test_key_formatter() {
|
||||||
|
assert_eq!(format!("{}", Key::Esc), "<Esc>");
|
||||||
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn test_key_formatter_char() {
|
||||||
assert_eq!(format!("{}", Key::Char('q')), "<q>");
|
assert_eq!(format!("{}", Key::Char('q')), "<q>");
|
||||||
}
|
}
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn test_key_from() {
|
fn test_key_from_up() {
|
||||||
|
assert_eq!(Key::from(KeyEvent::from(KeyCode::Up)), Key::Up);
|
||||||
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn test_key_from_down() {
|
||||||
|
assert_eq!(Key::from(KeyEvent::from(KeyCode::Down)), Key::Down);
|
||||||
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn test_key_from_left() {
|
||||||
|
assert_eq!(Key::from(KeyEvent::from(KeyCode::Left)), Key::Left);
|
||||||
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn test_key_from_right() {
|
||||||
|
assert_eq!(Key::from(KeyEvent::from(KeyCode::Right)), Key::Right);
|
||||||
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn test_key_from_backspace() {
|
||||||
|
assert_eq!(
|
||||||
|
Key::from(KeyEvent::from(KeyCode::Backspace)),
|
||||||
|
Key::Backspace
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn test_key_from_home() {
|
||||||
|
assert_eq!(Key::from(KeyEvent::from(KeyCode::Home)), Key::Home);
|
||||||
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn test_key_from_end() {
|
||||||
|
assert_eq!(Key::from(KeyEvent::from(KeyCode::End)), Key::End);
|
||||||
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn test_key_from_delete() {
|
||||||
|
assert_eq!(Key::from(KeyEvent::from(KeyCode::Delete)), Key::Delete);
|
||||||
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn test_key_from_enter() {
|
||||||
|
assert_eq!(Key::from(KeyEvent::from(KeyCode::Enter)), Key::Enter);
|
||||||
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn test_key_from_esc() {
|
||||||
|
assert_eq!(Key::from(KeyEvent::from(KeyCode::Esc)), Key::Esc);
|
||||||
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn test_key_from_char() {
|
||||||
assert_eq!(
|
assert_eq!(
|
||||||
Key::from(KeyEvent::from(KeyCode::Char('q'))),
|
Key::from(KeyEvent::from(KeyCode::Char('q'))),
|
||||||
Key::Char('q')
|
Key::Char('q')
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn test_key_from_unknown() {
|
||||||
|
assert_eq!(Key::from(KeyEvent::from(KeyCode::Pause)), Key::Unknown);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user