You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
50 lines
1.3 KiB
50 lines
1.3 KiB
4 months ago
|
extern crate wasm_bindgen_test;
|
||
|
|
||
|
use instant::Instant;
|
||
|
use std::time::Duration;
|
||
|
use wasm_bindgen_test::*;
|
||
|
|
||
|
wasm_bindgen_test_configure!(run_in_browser);
|
||
|
// run these tests using: wasm-pack test --chrome --headless -- --features wasm-bindgen
|
||
|
|
||
|
#[wasm_bindgen_test]
|
||
|
fn test_instant_now() {
|
||
|
let now = Instant::now();
|
||
|
#[cfg(feature = "inaccurate")]
|
||
|
while now.elapsed().as_millis() == 0 {}
|
||
|
#[cfg(not(feature = "inaccurate"))]
|
||
|
assert!(now.elapsed().as_nanos() > 0);
|
||
|
}
|
||
|
|
||
|
#[wasm_bindgen_test]
|
||
|
fn test_duration() {
|
||
|
let now = Instant::now();
|
||
|
let one_sec = Duration::from_secs(1);
|
||
|
assert!(now.elapsed() < one_sec);
|
||
|
}
|
||
|
|
||
|
// Duration::new will overflow when you have u64::MAX seconds and one billion nanoseconds.
|
||
|
// <https://doc.rust-lang.org/std/time/struct.Duration.html#method.new>
|
||
|
const ONE_BILLION: u32 = 1_000_000_000;
|
||
|
|
||
|
#[wasm_bindgen_test]
|
||
|
fn test_checked_add() {
|
||
|
let now = Instant::now();
|
||
|
|
||
|
assert!(now.checked_add(Duration::from_millis(1)).is_some());
|
||
|
assert_eq!(
|
||
|
None,
|
||
|
now.checked_add(Duration::new(u64::MAX, ONE_BILLION - 1))
|
||
|
);
|
||
|
}
|
||
|
|
||
|
#[wasm_bindgen_test]
|
||
|
fn test_checked_sub() {
|
||
|
let now = Instant::now();
|
||
|
|
||
|
assert!(now.checked_sub(Duration::from_millis(1)).is_some());
|
||
|
assert!(now
|
||
|
.checked_sub(Duration::new(u64::MAX, ONE_BILLION - 1))
|
||
|
.is_none());
|
||
|
}
|