use std::time::{Duration, SystemTime};
use crate::State;
const FIDELITY: Duration = Duration::from_nanos(256);
impl State {
pub fn next_v7(&mut self, timestamp: SystemTime) -> SystemTime {
let timestamp = timestamp.max(self.last_ts + FIDELITY);
self.last_ts = timestamp;
timestamp
}
}
#[cfg(test)]
mod tests {
use std::time::SystemTime;
use crate::STATE;
#[test]
fn always_increments() {
let mut guard = STATE.lock_arc();
let mut previous = guard.next_v7(SystemTime::now());
for _ in 0..99999 {
let next = guard.next_v7(SystemTime::now());
assert!(next > previous, "Next timestamp must be greater.");
previous = next;
}
drop(guard);
}
}