From 308cab3e5cd5e8d5a8c37498e725f51ab101a908 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bla=C5=BE=20Hrastnik?= Date: Tue, 26 Oct 2021 18:03:03 +0900 Subject: [PATCH] Integration testing harness --- helix-term/src/application.rs | 4 ++-- helix-term/tests/integration.rs | 24 ++++++++++++++++++++++++ 2 files changed, 26 insertions(+), 2 deletions(-) create mode 100644 helix-term/tests/integration.rs diff --git a/helix-term/src/application.rs b/helix-term/src/application.rs index 075b9c355..09b7836fd 100644 --- a/helix-term/src/application.rs +++ b/helix-term/src/application.rs @@ -41,7 +41,7 @@ type Signals = futures_util::stream::Empty<()>; pub struct Application { compositor: Compositor, - editor: Editor, + pub editor: Editor, config: Arc>, @@ -193,7 +193,7 @@ impl Application { scroll: None, }; - self.compositor.render(&mut cx); + // self.compositor.render(&mut cx); } pub async fn event_loop(&mut self) { diff --git a/helix-term/tests/integration.rs b/helix-term/tests/integration.rs new file mode 100644 index 000000000..1ef618f7e --- /dev/null +++ b/helix-term/tests/integration.rs @@ -0,0 +1,24 @@ +use helix_term::{application::Application, args::Args, config::Config}; +use helix_view::current; + +use crossterm::event::{Event, KeyCode, KeyEvent, KeyModifiers}; + +#[tokio::test] +async fn it_works() { + let args = Args::default(); + let config = Config::default(); + let mut app = Application::new(args, config).unwrap(); + + let inputs = &['i', 'h', 'e', 'l', 'l', 'o', ' ', 'w', 'o', 'r', 'l', 'd']; + + for input in inputs { + // TODO: use input.parse:: + app.handle_terminal_events(Ok(Event::Key(KeyEvent { + code: KeyCode::Char(*input), + modifiers: KeyModifiers::NONE, + }))); + } + + let (_, doc) = current!(app.editor); + assert_eq!(doc.text(), "hello world\n"); +}