use crate::backoff::*;
use std::time;
#[test]
fn backoff_duration_increases_with_attempt_count() {
let backoff = Backoff::new();
let duration = backoff.duration();
assert_eq!(duration, time::Duration::from_millis(100));
let duration = backoff.duration();
assert_eq!(duration, time::Duration::from_millis(200));
let duration = backoff.duration();
assert_eq!(duration, time::Duration::from_millis(400));
}
#[test]
fn backoff_duration_is_capped_at_max_duration() {
let backoff = Backoff::new().with_max(time::Duration::from_millis(400));
let duration = backoff.duration();
assert_eq!(duration, time::Duration::from_millis(100));
let duration = backoff.duration();
assert_eq!(duration, time::Duration::from_millis(200));
let duration = backoff.duration();
assert_eq!(duration, time::Duration::from_millis(400));
let duration = backoff.duration();
assert_eq!(duration, time::Duration::from_millis(400));
}
#[test]
fn backoff_duration_can_be_jittered() {
let backoff = Backoff::new().with_jitter(true);
let duration = backoff.duration();
assert!(duration >= time::Duration::from_millis(100));
assert!(duration <= time::Duration::from_millis(200));
let duration = backoff.duration();
assert!(duration >= time::Duration::from_millis(200));
assert!(duration <= time::Duration::from_millis(400));
let duration = backoff.duration();
assert!(duration >= time::Duration::from_millis(400));
assert!(duration <= time::Duration::from_secs(1));
}
#[test]
fn backoff_reset_can_be_reseted() {
let backoff = Backoff::new();
let duration = backoff.duration();
backoff.reset();
assert!(duration == time::Duration::from_millis(100));
}