#[test]
fn fractional_clock_precision_keeps_the_same_envelope_width()
-> Result<(), Box<dyn std::error::Error>> {
for (nanos, expected) in [
(0, "7.000000000"),
(1, "7.000000001"),
(10_000, "7.000010000"),
(123_450_000, "7.123450000"),
] {
let value = super::clock_json(std::time::Duration::new(7, nanos))?;
assert_eq!(value.get(), expected);
assert_eq!(value.get().len(), 11);
}
Ok(())
}
#[test]
fn nonzero_budget_readback() -> Result<(), Box<dyn std::error::Error>> {
let maximum = u64::try_from(usize::MAX)?;
let cases = [
(7, None, 7),
(7, Some(3), 3),
(3, Some(7), 3),
(7, Some(7), 7),
(1, Some(1), 1),
(maximum, Some(usize::MAX), usize::MAX),
];
for (request, transport, expected) in cases {
let request = std::num::NonZeroU64::new(request).ok_or("zero request")?;
let transport = transport
.map(|value| std::num::NonZeroUsize::new(value).ok_or("zero transport"))
.transpose()?;
let actual = super::budget(
std::hint::black_box(request),
std::hint::black_box(transport),
)?;
assert_eq!(actual.get(), expected);
}
Ok(())
}