use crate::kairos::{TimeSource, VirtualTimeSource};
#[test]
fn test_virtual_time_source_is_caller_advanced_and_shared() {
let source = VirtualTimeSource::new(10);
let driver = source.clone();
// Reading does not advance the source (the contrast with TickCounter).
assert_eq!(source.now(), 10);
assert_eq!(source.now(), 10);
// A clone shares one clock: the driver moves what the source reads.
driver.advance(5);
assert_eq!(source.now(), 15);
// set moves in either direction (the skew-replay capability).
driver.set(3);
assert_eq!(source.now(), 3);
// advance saturates rather than wrapping past the ceiling.
driver.set(u64::MAX);
driver.advance(1);
assert_eq!(source.now(), u64::MAX);
}