From f4d3969021f09b32d92a41b6ae450b27ece60012 Mon Sep 17 00:00:00 2001 From: Fabian Kaczmarczyck Date: Thu, 5 Sep 2024 14:53:27 +0200 Subject: [PATCH] Better TestClock API --- libraries/opensk/src/ctap/mod.rs | 5 ++--- libraries/opensk/src/env/test/mod.rs | 18 +++++++++--------- 2 files changed, 11 insertions(+), 12 deletions(-) diff --git a/libraries/opensk/src/ctap/mod.rs b/libraries/opensk/src/ctap/mod.rs index 6146e542..8ef166ad 100644 --- a/libraries/opensk/src/ctap/mod.rs +++ b/libraries/opensk/src/ctap/mod.rs @@ -3367,10 +3367,9 @@ mod test { #[test] fn test_check_user_presence_timeout() { let mut env = TestEnv::default(); - let now_ms = env.clock().access(); + let clock = env.clock().clone(); env.user_presence().set(move || { - let mut locked_now_ms = now_ms.lock().unwrap(); - *locked_now_ms += 100; + clock.advance(100); Err(UserPresenceError::Timeout) }); let response = check_user_presence(&mut env, DUMMY_CHANNEL); diff --git a/libraries/opensk/src/env/test/mod.rs b/libraries/opensk/src/env/test/mod.rs index 33bc9763..75b072db 100644 --- a/libraries/opensk/src/env/test/mod.rs +++ b/libraries/opensk/src/env/test/mod.rs @@ -48,20 +48,20 @@ pub struct TestTimer { end_ms: usize, } -#[derive(Debug, Default)] +#[derive(Clone, Debug, Default)] pub struct TestClock { /// The current time, as advanced, in milliseconds. now_ms: Arc>, } impl TestClock { - pub fn advance(&mut self, milliseconds: usize) { - let mut locked_now_ms = self.now_ms.lock().unwrap(); - *locked_now_ms += milliseconds; + pub fn now(&self) -> usize { + *self.now_ms.lock().unwrap() } - pub fn access(&self) -> Arc> { - self.now_ms.clone() + pub fn advance(&self, milliseconds: usize) { + let mut locked_now_ms = self.now_ms.lock().unwrap(); + *locked_now_ms += milliseconds; } } @@ -70,18 +70,18 @@ impl Clock for TestClock { fn make_timer(&mut self, milliseconds: usize) -> Self::Timer { TestTimer { - end_ms: *self.now_ms.lock().unwrap() + milliseconds, + end_ms: self.now() + milliseconds, } } fn is_elapsed(&mut self, timer: &Self::Timer) -> bool { - *self.now_ms.lock().unwrap() >= timer.end_ms + self.now() >= timer.end_ms } #[cfg(feature = "debug_ctap")] fn timestamp_us(&mut self) -> usize { // Unused, but let's implement something because it's easy. - *self.now_ms.lock().unwrap() * 1000 + self.now() * 1000 } }