use rat_salsa::event::RenderedEvent;
use ratatui_crossterm::crossterm::event::Event;
#[derive(Debug, PartialEq)]
pub(crate) enum AppEvent {
Terminal(Event),
Rendered(RenderedEvent),
}
impl From<Event> for AppEvent {
fn from(event: Event) -> Self {
Self::Terminal(event)
}
}
impl From<RenderedEvent> for AppEvent {
fn from(event: RenderedEvent) -> Self {
Self::Rendered(event)
}
}
#[cfg(test)]
mod tests {
use super::*;
use ratatui_crossterm::crossterm::event::{
KeyCode, KeyEvent, KeyModifiers, MouseButton, MouseEvent, MouseEventKind,
};
#[test]
fn everything_the_terminal_says_travels_whole() {
for event in [
Event::Key(KeyEvent::new(
KeyCode::Char('Q'),
KeyModifiers::CONTROL | KeyModifiers::SHIFT,
)),
Event::Resize(80, 24),
Event::Paste("pasted".to_string()),
Event::FocusGained,
Event::Mouse(MouseEvent {
kind: MouseEventKind::Down(MouseButton::Left),
column: 4,
row: 2,
modifiers: KeyModifiers::NONE,
}),
] {
assert_eq!(
AppEvent::from(event.clone()),
AppEvent::Terminal(event.clone()),
"not carried as it arrived: {event:?}"
);
}
}
#[test]
fn the_loops_report_carries_its_own() {
assert_eq!(
AppEvent::from(RenderedEvent),
AppEvent::Rendered(RenderedEvent)
);
}
}