foundation_core 0.0.5

Central crate for all foundation crates for the ewe-platform project
Documentation
use foundation_core::retries::{
    RetryDecider, RetryState, SameBackoffDecider, DEFAULT_MIN_DURATION,
};

#[test]
fn can_generate_exponential_backoff() {
    let decider = SameBackoffDecider::default();

    let base = RetryState {
        total_allowed: 2,
        attempt: 0,
        wait: None,
    };

    let reconnection_state = decider.decide(base.clone()).expect("should get returned");
    assert!(matches!(
        reconnection_state.wait,
        Some(DEFAULT_MIN_DURATION)
    ));
    assert_eq!(reconnection_state.attempt, 1);

    let reconnection_state2 = decider
        .decide(reconnection_state.clone())
        .expect("should get returned");

    assert!(matches!(
        reconnection_state2.wait,
        Some(DEFAULT_MIN_DURATION)
    ));
    assert_eq!(reconnection_state2.attempt, 2);

    let reconnection_state3 = decider.decide(reconnection_state2.clone());
    assert!(reconnection_state3.is_none());
}