microde_application/
types.rs1#[derive(Debug, Clone, Copy, PartialEq, Eq)]
3pub enum ModuleKind {
4 Passive,
5 Active,
6}
7
8#[derive(Debug, Clone, Copy, PartialEq, Eq)]
10pub enum MicrodeApplicationState {
11 Idle,
12 Installing,
13 Initialization,
14 Setup,
15 Running,
16 TearDown,
17 Shutdown,
18 CleanUp,
19 Finished,
20 Failed,
21}
22
23#[cfg(test)]
24mod tests {
25 use super::*;
26
27 #[test]
28 fn module_kinds_are_distinct_copyable_values() {
29 let passive = ModuleKind::Passive;
30 let copied = passive;
31
32 assert_eq!(passive, copied);
33 assert_ne!(passive, ModuleKind::Active);
34 assert_eq!(format!("{passive:?}"), "Passive");
35 }
36
37 #[test]
38 fn lifecycle_states_preserve_the_runtime_vocabulary() {
39 let states = [
40 MicrodeApplicationState::Idle,
41 MicrodeApplicationState::Installing,
42 MicrodeApplicationState::Initialization,
43 MicrodeApplicationState::Setup,
44 MicrodeApplicationState::Running,
45 MicrodeApplicationState::TearDown,
46 MicrodeApplicationState::Shutdown,
47 MicrodeApplicationState::CleanUp,
48 MicrodeApplicationState::Finished,
49 MicrodeApplicationState::Failed,
50 ];
51
52 assert_eq!(states.len(), 10);
53 assert_eq!(states[0], MicrodeApplicationState::Idle);
54 assert_eq!(states[9], MicrodeApplicationState::Failed);
55 }
56}