use futures::future; use std::error::Error; use std::time::Duration; use tokio::runtime::{Builder, Runtime}; use tokio::time::{self, interval, interval_at, timeout, Instant};
mod support { pubmod panic;
} use support::panic::test_panic;
#[test] fn pause_panic_caller() -> Result<(), Box<dyn Error>> { let panic_location_file = test_panic(|| { let rt = current_thread();
// The panic location should be in this file
assert_eq!(&panic_location_file.unwrap(), file!());
Ok(())
}
#[test] fn resume_panic_caller() -> Result<(), Box<dyn Error>> { let panic_location_file = test_panic(|| { let rt = current_thread();
rt.block_on(async {
time::resume();
});
});
// The panic location should be in this file
assert_eq!(&panic_location_file.unwrap(), file!());
Ok(())
}
#[test] fn interval_panic_caller() -> Result<(), Box<dyn Error>> { let panic_location_file = test_panic(|| { let _ = interval(Duration::from_millis(0));
});
// The panic location should be in this file
assert_eq!(&panic_location_file.unwrap(), file!());
Ok(())
}
#[test] fn interval_at_panic_caller() -> Result<(), Box<dyn Error>> { let panic_location_file = test_panic(|| { let _ = interval_at(Instant::now(), Duration::from_millis(0));
});
// The panic location should be in this file
assert_eq!(&panic_location_file.unwrap(), file!());
Ok(())
}
#[test] fn timeout_panic_caller() -> Result<(), Box<dyn Error>> { let panic_location_file = test_panic(|| { // Runtime without `enable_time` so it has no current timer set. let rt = Builder::new_current_thread().build().unwrap();
rt.block_on(async { let _timeout = timeout(Duration::from_millis(5), future::pending::<()>());
});
});
// The panic location should be in this file
assert_eq!(&panic_location_file.unwrap(), file!());
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.