use crossterm::event::{KeyCode, KeyEvent, KeyModifiers};
use tokio::sync::mpsc;
use megane::{
app::App,
event::Event,
handler::{main_event_handler::MainEventHandler, EventHandler},
terminal::setup_terminal,
};
#[tokio::test]
async fn test_run() {
let terminal = setup_terminal().unwrap();
let (mut input_tx, input_rx) = mpsc::channel(1);
let mut main_event_handler = MainEventHandler::new(terminal, App::default(), input_rx);
let handle = tokio::spawn(async move {
main_event_handler.run().await.unwrap();
});
assert!(input_tx.send(Event::Tick).await.is_ok());
assert!(input_tx
.send(Event::Input(KeyEvent::new(
KeyCode::Char('a'),
KeyModifiers::NONE
)))
.await
.is_ok());
assert!(input_tx
.send(Event::Input(KeyEvent::new(
KeyCode::Char('c'),
KeyModifiers::CONTROL
)))
.await
.is_ok());
let _ = handle.await.unwrap();
}