Complete rewrite with improved architecture & correctness: - src/runtime.rs: Simplified task scheduling with proper state transitions - src/scheduler.rs: Decoupled from runtime, pure task queue logic - src/io.rs, src/mutex.rs: Refactored for clarity & performance - New actor model framework (src/actor.rs, src/context.rs) - Channel primitives (src/channel.rs) & process IDs (src/pid.rs) - Preemption framework (src/preempt.rs) for fair timeslicing - Expanded benchmarks & tests (multi_scheduler, primes, runtime)
23 lines
484 B
Rust
23 lines
484 B
Rust
use smarm::pid::Pid;
|
|
|
|
#[test]
|
|
fn pid_equality() {
|
|
assert_eq!(Pid::new(0, 0), Pid::new(0, 0));
|
|
assert_ne!(Pid::new(0, 0), Pid::new(0, 1));
|
|
assert_ne!(Pid::new(0, 0), Pid::new(1, 0));
|
|
}
|
|
|
|
#[test]
|
|
fn pid_accessors() {
|
|
let p = Pid::new(42, 7);
|
|
assert_eq!(p.index(), 42);
|
|
assert_eq!(p.generation(), 7);
|
|
}
|
|
|
|
#[test]
|
|
fn pid_debug_is_useful() {
|
|
let p = Pid::new(3, 5);
|
|
let s = format!("{:?}", p);
|
|
assert!(s.contains('3') && s.contains('5'), "got: {}", s);
|
|
}
|