statum-graph 0.7.0

Static graph export for Statum machine introspection
Documentation
#![allow(dead_code)]

use statum_graph::{CodebaseDoc, CodebaseDocError};

mod alpha {
    pub mod shared {
        use statum::{machine, state};

        #[state]
        pub enum State {
            Running,
        }

        #[machine]
        pub struct Machine<State> {}
    }
}

mod beta {
    pub mod shared {
        use statum::{machine, state};

        #[state]
        pub enum State {
            Running,
        }

        #[machine]
        pub struct Machine<State> {}
    }
}

mod holder {
    use super::alpha::shared;
    use statum::{machine, state};

    #[state]
    pub enum State {
        Uses(shared::Machine<shared::Running>),
    }

    #[machine]
    pub struct Machine<State> {}
}

#[test]
fn ambiguous_static_links_fail_closed() {
    let err = CodebaseDoc::linked().expect_err("ambiguous link should fail");

    assert_eq!(
        err,
        CodebaseDocError::AmbiguousStaticLink {
            machine: "codebase_ambiguity::holder::Machine",
            state: "Uses",
            field_name: None,
            target_machine_path: "shared::Machine".to_owned(),
            target_state: "Running",
        }
    );
}