sim-host-core 0.1.0

Neutral host-port contracts for SIM domain libraries.
Documentation
use std::sync::Arc;

use sim_host_core::{DeterministicTime, MonotonicTimestamp, PlatformTime, WallClock};

#[test]
fn deterministic_binding_preserves_wall_behavior_and_composes_timer() {
    let time = Arc::new(DeterministicTime::new(1_000, 25));
    let binding = PlatformTime {
        wall: time.clone(),
        monotonic: time.clone(),
        timer: time,
    };
    assert_eq!(binding.wall.now_ms().unwrap(), 1_000);
    assert_eq!(binding.wall.now_ms().unwrap(), 1_025);
    binding
        .timer
        .wait_until(MonotonicTimestamp::from_nanos(50_000_000))
        .unwrap();
    assert_eq!(
        binding.monotonic.now_monotonic().unwrap(),
        MonotonicTimestamp::from_nanos(50_000_000)
    );
}

#[test]
fn deterministic_wall_overflow_remains_fail_closed() {
    let time = DeterministicTime::new(u64::MAX, 1);
    assert!(time.now().is_err());
}