use std::time::{Duration, SystemTime, UNIX_EPOCH};
use chrono::{DateTime, Utc};
use crate::device::clock::{Clock, SystemClock};
#[derive(Debug)]
pub struct TestClock {
pub now: DateTime<Utc>,
}
impl Clock for TestClock {
fn now(&self) -> Duration {
let nanos = (self.now - DateTime::UNIX_EPOCH).num_nanoseconds().unwrap();
Duration::from_nanos(nanos as u64)
}
}
impl TestClock {
pub fn tick(&mut self) {
self.now += Duration::from_secs(1);
}
}
#[test]
fn test_system_clock() {
let now = SystemClock.now();
let sys_now = SystemTime::now().duration_since(UNIX_EPOCH).unwrap();
let diff = sys_now - now;
assert!(diff.as_secs() < 1);
}