crux_core 0.18.0

Cross-platform app development in Rust
Documentation
//! Test for the testing APIs
#[expect(deprecated)]
use crux_core::testing::AppTester;

mod app {
    use crux_core::{
        App, Command,
        render::{RenderOperation, render},
    };
    use crux_macros::effect;
    use serde::{Deserialize, Serialize};

    #[derive(Debug, Serialize, Deserialize)]
    pub enum Event {
        Hello,
    }

    #[effect]
    pub enum Effect {
        Render(RenderOperation),
    }

    #[derive(Default)]
    pub struct MyApp;

    impl App for MyApp {
        type Event = Event;
        type Model = String;
        type ViewModel = String;
        type Effect = Effect;

        fn update(&self, _event: Self::Event, _model: &mut Self::Model) -> Command<Effect, Event> {
            render()
        }

        fn view(&self, model: &Self::Model) -> Self::ViewModel {
            model.clone()
        }
    }
}

#[test]
fn app_tester_new() {
    let app = app::MyApp;

    #[expect(deprecated)]
    let tester = AppTester::new(app);

    let mut model = "Hello".to_string();

    let update = tester.update(app::Event::Hello, &mut model);

    let effects = update.into_effects();

    assert_eq!(effects.count(), 1);
}