diff options
Diffstat (limited to 'vendor/gix-utils/tests')
-rw-r--r-- | vendor/gix-utils/tests/backoff/mod.rs | 56 | ||||
-rw-r--r-- | vendor/gix-utils/tests/utils.rs | 1 |
2 files changed, 57 insertions, 0 deletions
diff --git a/vendor/gix-utils/tests/backoff/mod.rs b/vendor/gix-utils/tests/backoff/mod.rs new file mode 100644 index 000000000..a84ed7543 --- /dev/null +++ b/vendor/gix-utils/tests/backoff/mod.rs @@ -0,0 +1,56 @@ +use std::{convert::TryInto, time::Duration}; + +use gix_utils::backoff::Exponential; + +const EXPECTED_TILL_SECOND: &[usize] = &[ + 1usize, 4, 9, 16, 25, 36, 49, 64, 81, 100, 121, 144, 169, 196, 225, 256, 289, 324, 361, 400, 441, 484, 529, 576, + 625, 676, 729, 784, 841, 900, 961, 1000, 1000, +]; + +#[test] +fn random_exponential_produces_values_in_the_correct_range() { + let mut num_identities = 0; + for (actual, expected) in Exponential::default_with_random().zip(EXPECTED_TILL_SECOND) { + let actual: usize = actual.as_millis().try_into().unwrap(); + if actual == *expected { + num_identities += 1; + } + assert!( + actual * 1000 >= (expected - 1) * 750, + "value too small: {actual} < {expected}" + ); + assert!( + actual * 1000 <= (expected + 1) * 1250, + "value too big: {actual} > {expected}" + ); + } + assert!( + num_identities < EXPECTED_TILL_SECOND.len(), + "too many untransformed values: {num_identities}" + ); +} + +#[test] +fn how_many_iterations_for_a_second_of_waittime() { + let max = Duration::from_millis(1000); + assert_eq!(Exponential::default().until_no_remaining(max).count(), 14); + assert_eq!( + Exponential::default() + .until_no_remaining(max) + .reduce(|acc, n| acc + n) + .unwrap(), + Duration::from_millis(1015), + "a little overshoot" + ); +} + +#[test] +fn output_with_default_settings() { + assert_eq!( + Exponential::default().take(33).collect::<Vec<_>>(), + EXPECTED_TILL_SECOND + .iter() + .map(|n| Duration::from_millis(*n as u64)) + .collect::<Vec<_>>() + ); +} diff --git a/vendor/gix-utils/tests/utils.rs b/vendor/gix-utils/tests/utils.rs new file mode 100644 index 000000000..ed38d3e98 --- /dev/null +++ b/vendor/gix-utils/tests/utils.rs @@ -0,0 +1 @@ +mod backoff; |