use crate::module::ModuleLifecycle;
pub fn modentry(boot: i32, module: &mut dyn ModuleLifecycle) -> i32 {
match boot {
0 => module.setup(), 1 => module.boot(), 2 => module.cleanup(), 3 => module.finish(), 4 | 5 => 0, _ => 1, }
}
#[cfg(test)]
mod tests {
use super::*;
struct TestModule {
booted: bool,
}
impl ModuleLifecycle for TestModule {
fn boot(&mut self) -> i32 {
self.booted = true;
0
}
}
#[test]
fn modentry_dispatches_setup_and_boot() {
let _g = crate::test_util::global_state_lock();
let mut m = TestModule { booted: false };
assert_eq!(modentry(0, &mut m), 0); assert!(!m.booted);
assert_eq!(modentry(1, &mut m), 0); assert!(m.booted);
}
#[test]
fn modentry_unknown_op_returns_one() {
let _g = crate::test_util::global_state_lock();
let mut m = TestModule { booted: false };
assert_eq!(modentry(6, &mut m), 1); assert_eq!(modentry(-1, &mut m), 1);
}
#[test]
fn modentry_cleanup_op_returns_zero() {
let _g = crate::test_util::global_state_lock();
let mut m = TestModule { booted: false };
assert_eq!(modentry(2, &mut m), 0);
}
#[test]
fn modentry_finish_op_returns_zero() {
let _g = crate::test_util::global_state_lock();
let mut m = TestModule { booted: false };
assert_eq!(modentry(3, &mut m), 0);
}
#[test]
fn modentry_features_enables_short_circuit_zero() {
let _g = crate::test_util::global_state_lock();
let mut m = TestModule { booted: false };
assert_eq!(modentry(4, &mut m), 0); assert_eq!(modentry(5, &mut m), 0); assert!(!m.booted);
}
#[test]
fn modentry_far_out_of_range_returns_one() {
let _g = crate::test_util::global_state_lock();
let mut m = TestModule { booted: false };
for op in [-100, -50, 7, 10, 100, i32::MAX, i32::MIN] {
assert_eq!(modentry(op, &mut m), 1, "op {} must return 1", op);
}
}
#[test]
fn modentry_setup_does_not_invoke_boot() {
let _g = crate::test_util::global_state_lock();
let mut m = TestModule { booted: false };
assert_eq!(modentry(0, &mut m), 0);
assert!(!m.booted, "setup must NOT trigger boot side effect");
}
#[test]
fn modentry_boot_triggers_module_boot() {
let _g = crate::test_util::global_state_lock();
let mut m = TestModule { booted: false };
assert_eq!(modentry(1, &mut m), 0);
assert!(m.booted, "boot op must invoke module.boot()");
}
#[test]
fn modentry_is_deterministic_for_known_ops() {
let _g = crate::test_util::global_state_lock();
for op in [0, 2, 3, 4, 5, 6, -1] {
let mut m = TestModule { booted: false };
let first = modentry(op, &mut m);
let mut m2 = TestModule { booted: false };
let second = modentry(op, &mut m2);
assert_eq!(first, second, "op {} must be pure", op);
}
}
#[test]
fn modentry_known_ops_return_zero() {
let _g = crate::test_util::global_state_lock();
for op in 0..=5 {
let mut m = TestModule { booted: false };
assert_eq!(modentry(op, &mut m), 0, "op {} must succeed", op);
}
}
#[test]
fn modentry_boundary_op_6_returns_one() {
let _g = crate::test_util::global_state_lock();
let mut m = TestModule { booted: false };
assert_eq!(modentry(6, &mut m), 1, "op=6 just past valid range → 1");
}
#[test]
fn modentry_module_isolation() {
let _g = crate::test_util::global_state_lock();
let mut a = TestModule { booted: false };
assert_eq!(modentry(1, &mut a), 0); assert!(a.booted);
let mut b = TestModule { booted: false };
assert_eq!(modentry(0, &mut b), 0); assert!(!b.booted, "B must NOT be booted via A's modentry");
}
#[test]
fn modentry_setup_idempotent() {
let _g = crate::test_util::global_state_lock();
let mut m = TestModule { booted: false };
for _ in 0..10 {
assert_eq!(modentry(0, &mut m), 0);
}
assert!(!m.booted);
}
#[test]
fn modentry_cleanup_idempotent() {
let _g = crate::test_util::global_state_lock();
let mut m = TestModule { booted: false };
for _ in 0..10 {
assert_eq!(modentry(2, &mut m), 0);
}
}
#[test]
fn modentry_return_value_in_0_or_1_for_all_inputs() {
let _g = crate::test_util::global_state_lock();
for op in -5..=15 {
let mut m = TestModule { booted: false };
let r = modentry(op, &mut m);
assert!(r == 0 || r == 1, "modentry({}) = {} not in {{0,1}}", op, r);
}
}
#[test]
fn modentry_canonical_lifecycle_sequence_all_zero() {
let _g = crate::test_util::global_state_lock();
let mut m = TestModule { booted: false };
assert_eq!(modentry(0, &mut m), 0); assert_eq!(modentry(1, &mut m), 0); assert_eq!(modentry(2, &mut m), 0); assert_eq!(modentry(3, &mut m), 0); assert!(m.booted, "boot side effect must survive cleanup/finish");
}
#[test]
fn modentry_features_op_does_not_call_module_boot() {
let _g = crate::test_util::global_state_lock();
let mut m = TestModule { booted: false };
assert_eq!(modentry(4, &mut m), 0);
assert!(!m.booted, "features_ op MUST NOT side-effect boot");
assert_eq!(modentry(5, &mut m), 0);
assert!(!m.booted, "enables_ op MUST NOT side-effect boot");
}
#[test]
fn modentry_unknown_op_does_not_invoke_trait() {
let _g = crate::test_util::global_state_lock();
let mut m = TestModule { booted: false };
for op in [99, 1000, -42] {
assert_eq!(modentry(op, &mut m), 1);
assert!(!m.booted, "op {} must NOT trigger boot", op);
}
}
#[test]
fn modentry_returns_i32_type() {
let _g = crate::test_util::global_state_lock();
let mut m = TestModule { booted: false };
let _: i32 = modentry(0, &mut m);
}
#[test]
fn modentry_setup_op_always_returns_zero() {
let _g = crate::test_util::global_state_lock();
for _ in 0..10 {
let mut m = TestModule { booted: false };
assert_eq!(modentry(0, &mut m), 0, "op=0 (setup) → 0");
}
}
#[test]
fn modentry_finish_op_always_returns_zero() {
let _g = crate::test_util::global_state_lock();
for _ in 0..10 {
let mut m = TestModule { booted: false };
assert_eq!(modentry(3, &mut m), 0, "op=3 (finish) → 0");
}
}
#[test]
fn modentry_features_op_returns_zero_no_side_effect() {
let _g = crate::test_util::global_state_lock();
for _ in 0..10 {
let mut m = TestModule { booted: false };
assert_eq!(modentry(4, &mut m), 0);
assert!(!m.booted, "features op (4) must NOT trigger boot");
}
}
#[test]
fn modentry_enables_op_returns_zero_no_side_effect() {
let _g = crate::test_util::global_state_lock();
for _ in 0..10 {
let mut m = TestModule { booted: false };
assert_eq!(modentry(5, &mut m), 0);
assert!(!m.booted, "enables op (5) must NOT trigger boot");
}
}
#[test]
fn modentry_boot_side_effect_persists() {
let _g = crate::test_util::global_state_lock();
let mut m = TestModule { booted: false };
modentry(1, &mut m); assert!(m.booted, "boot triggered");
modentry(2, &mut m); assert!(m.booted, "boot side-effect persists past cleanup");
modentry(3, &mut m); assert!(m.booted, "boot side-effect persists past finish");
}
#[test]
fn modentry_boot_sticky_true_across_calls() {
let _g = crate::test_util::global_state_lock();
let mut m = TestModule { booted: false };
for _ in 0..5 {
modentry(1, &mut m);
}
assert!(m.booted, "booted stays true across repeated boot calls");
}
#[test]
fn modentry_max_minus_one_unknown_returns_one() {
let _g = crate::test_util::global_state_lock();
let mut m = TestModule { booted: false };
assert_eq!(modentry(i32::MAX - 1, &mut m), 1, "MAX-1 op → 1 (unknown)");
}
#[test]
fn modentry_features_enables_both_zero() {
let _g = crate::test_util::global_state_lock();
for op in [4, 5] {
let mut m = TestModule { booted: false };
assert_eq!(modentry(op, &mut m), 0, "feature-side op {} returns 0", op);
}
}
#[test]
fn modentry_cleanup_without_prior_boot_safe() {
let _g = crate::test_util::global_state_lock();
let mut m = TestModule { booted: false };
assert_eq!(modentry(2, &mut m), 0, "cleanup without boot → 0");
assert!(!m.booted, "boot side-effect not triggered by cleanup");
}
#[test]
fn modentry_returns_i32_pin_alt() {
let _g = crate::test_util::global_state_lock();
let mut m = TestModule { booted: false };
let _: i32 = modentry(0, &mut m);
}
#[test]
fn modentry_known_ops_all_return_zero() {
let _g = crate::test_util::global_state_lock();
for op in 0..=5i32 {
let mut m = TestModule { booted: false };
assert_eq!(modentry(op, &mut m), 0, "op {} must return 0 (success)", op);
}
}
#[test]
fn modentry_negative_op_returns_one() {
let _g = crate::test_util::global_state_lock();
for op in [-1, -100, i32::MIN] {
let mut m = TestModule { booted: false };
assert_eq!(modentry(op, &mut m), 1, "negative op {} → 1", op);
}
}
#[test]
fn modentry_op_ge_six_returns_one() {
let _g = crate::test_util::global_state_lock();
for op in [6, 7, 10, 100, 1000, i32::MAX] {
let mut m = TestModule { booted: false };
assert_eq!(modentry(op, &mut m), 1, "op {} ≥ 6 → 1", op);
}
}
#[test]
fn modentry_setup_op_does_not_trigger_boot() {
let _g = crate::test_util::global_state_lock();
let mut m = TestModule { booted: false };
modentry(0, &mut m);
assert!(!m.booted, "setup must not flip booted=true");
}
#[test]
fn modentry_finish_op_does_not_trigger_boot() {
let _g = crate::test_util::global_state_lock();
let mut m = TestModule { booted: false };
modentry(3, &mut m);
assert!(!m.booted, "finish must not flip booted=true");
}
#[test]
fn modentry_dispatch_is_deterministic_across_ops() {
let _g = crate::test_util::global_state_lock();
for op in -5..=10i32 {
let mut m1 = TestModule { booted: false };
let mut m2 = TestModule { booted: false };
let a = modentry(op, &mut m1);
let b = modentry(op, &mut m2);
assert_eq!(a, b, "op {} must produce deterministic return", op);
}
}
#[test]
fn modentry_return_value_is_boolean() {
let _g = crate::test_util::global_state_lock();
for op in -5..=10i32 {
let mut m = TestModule { booted: false };
let r = modentry(op, &mut m);
assert!(r == 0 || r == 1, "modentry({}) = {} not in 0/1", op, r);
}
}
#[test]
fn modentry_boot_cleanup_finish_sequence_safe() {
let _g = crate::test_util::global_state_lock();
let mut m = TestModule { booted: false };
assert_eq!(modentry(1, &mut m), 0);
assert_eq!(modentry(2, &mut m), 0);
assert_eq!(modentry(3, &mut m), 0);
}
#[test]
fn modentry_repeated_boot_cleanup_cycles_safe() {
let _g = crate::test_util::global_state_lock();
let mut m = TestModule { booted: false };
for _ in 0..10 {
assert_eq!(modentry(1, &mut m), 0, "boot");
assert_eq!(modentry(2, &mut m), 0, "cleanup");
}
}
#[test]
fn modentry_features_enables_dont_affect_other_ops() {
let _g = crate::test_util::global_state_lock();
let mut m = TestModule { booted: false };
assert_eq!(modentry(4, &mut m), 0);
assert_eq!(modentry(0, &mut m), 0, "setup after features still 0");
assert_eq!(modentry(5, &mut m), 0);
assert_eq!(modentry(3, &mut m), 0, "finish after enables still 0");
}
#[test]
fn modentry_i32_min_returns_one() {
let _g = crate::test_util::global_state_lock();
let mut m = TestModule { booted: false };
assert_eq!(modentry(i32::MIN, &mut m), 1);
}
#[test]
fn modentry_i32_max_returns_one() {
let _g = crate::test_util::global_state_lock();
let mut m = TestModule { booted: false };
assert_eq!(modentry(i32::MAX, &mut m), 1);
}
#[test]
fn modentry_exhaustive_sweep_0_to_10() {
let _g = crate::test_util::global_state_lock();
let mut m = TestModule { booted: false };
for op in 0..=5 {
assert_eq!(modentry(op, &mut m), 0, "op {} must return 0 (known)", op);
}
for op in 6..=10 {
assert_eq!(modentry(op, &mut m), 1, "op {} must return 1 (unknown)", op);
}
}
#[test]
fn modentry_deterministic_on_unknown_op() {
let _g = crate::test_util::global_state_lock();
let mut m = TestModule { booted: false };
let first = modentry(99, &mut m);
for _ in 0..10 {
assert_eq!(
modentry(99, &mut m),
first,
"unknown op must always return same value"
);
}
}
#[test]
fn modentry_returns_i32_type_compile_pin() {
let _g = crate::test_util::global_state_lock();
let mut m = TestModule { booted: false };
let _: i32 = modentry(0, &mut m);
}
#[test]
fn modentry_op_zero_does_not_set_booted() {
let _g = crate::test_util::global_state_lock();
let mut m = TestModule { booted: false };
assert_eq!(modentry(0, &mut m), 0);
assert!(!m.booted, "setup must NOT set booted=true");
}
#[test]
fn modentry_op_two_does_not_set_booted() {
let _g = crate::test_util::global_state_lock();
let mut m = TestModule { booted: false };
assert_eq!(modentry(2, &mut m), 0);
assert!(!m.booted, "cleanup must NOT set booted=true");
}
#[test]
fn modentry_unknown_op_sweep_6_to_255() {
let _g = crate::test_util::global_state_lock();
let mut m = TestModule { booted: false };
for op in 6..256 {
assert_eq!(modentry(op, &mut m), 1, "unknown op {} must return 1", op);
}
}
#[test]
fn modentry_negative_op_sweep_minus_1_to_minus_1000() {
let _g = crate::test_util::global_state_lock();
let mut m = TestModule { booted: false };
for op in 1..=1000 {
assert_eq!(
modentry(-op, &mut m),
1,
"negative op -{} must return 1",
op
);
}
}
#[test]
fn modentry_return_only_0_or_1_sweep() {
let _g = crate::test_util::global_state_lock();
let mut m = TestModule { booted: false };
for op in -50..=50 {
let r = modentry(op, &mut m);
assert!(r == 0 || r == 1, "modentry({}) = {} not in {{0,1}}", op, r);
}
}
#[test]
fn modentry_repeated_boot_is_idempotent_on_booted_flag() {
let _g = crate::test_util::global_state_lock();
let mut m = TestModule { booted: false };
for _ in 0..5 {
assert_eq!(modentry(1, &mut m), 0);
assert!(m.booted, "booted must stay true");
}
}
}