use par_term::config::TriggerRateLimiter;
#[test]
fn test_rate_limiter_allows_first_call() {
let mut limiter = TriggerRateLimiter::default();
assert!(limiter.check_and_update(1), "First call should be allowed");
}
#[test]
fn test_rate_limiter_blocks_immediate_second_call() {
let mut limiter = TriggerRateLimiter::default();
limiter.check_and_update(1);
assert!(
!limiter.check_and_update(1),
"Immediate second call should be blocked"
);
}
#[test]
fn test_rate_limiter_allows_different_trigger_ids() {
let mut limiter = TriggerRateLimiter::default();
assert!(limiter.check_and_update(1), "Trigger 1 first call");
assert!(
limiter.check_and_update(2),
"Trigger 2 should be independent"
);
}
#[test]
fn test_rate_limiter_custom_interval() {
let mut limiter = TriggerRateLimiter::new(1);
limiter.check_and_update(1);
std::thread::sleep(std::time::Duration::from_millis(5));
assert!(
limiter.check_and_update(1),
"Should be allowed after interval passes"
);
}
#[test]
fn test_rate_limiter_cleanup() {
let mut limiter = TriggerRateLimiter::new(1);
limiter.check_and_update(1);
limiter.check_and_update(2);
std::thread::sleep(std::time::Duration::from_millis(5));
limiter.cleanup(0);
assert!(
limiter.check_and_update(1),
"Should be allowed after cleanup"
);
assert!(
limiter.check_and_update(2),
"Should be allowed after cleanup"
);
}