ratatui-reactive 0.2.0

A minimalistic framework for building TUI applications using fine-grained reactivity.
Documentation
use crate::ReactiveApp;
use ratatui::Frame;
use ratatui::Terminal;
use ratatui::backend::TestBackend;
use ratatui::buffer::Buffer;
use ratatui::layout::Rect;
use std::time::Duration;
use tokio::select;
use tokio::time::sleep;

#[tokio::test(flavor = "local")]
async fn first_draw() {
    let app = ReactiveApp::new(move || |_: &mut Frame| ());
    assert!(app.draw_requested().await);
    let backend = TestBackend::new(10, 3);
    let mut terminal = Terminal::new(backend).unwrap();
    terminal.draw(|frame| app.draw(frame)).unwrap();
    terminal
        .backend()
        .assert_buffer(&Buffer::empty(Rect::new(0, 0, 10, 3)));
    select! {
        _ = app.draw_requested() => panic!("shouldn't request redraw"),
        _= sleep(Duration::from_millis(10)) => (),
    }
}