use crate::runtime::cache::lru::IntrusiveLru;
#[test]
#[inline]
fn touch_present_and_missing_keys() {
let mut lru = IntrusiveLru::<u32, u32>::new();
lru.ensure(1);
lru.ensure(2);
lru.touch(1);
assert_eq!(lru.hottest(2), vec![1, 2]);
lru.touch(99);
assert_eq!(lru.hottest(2), vec![1, 2]);
}
#[test]
#[inline]
fn capacity_evicts_coldest_without_growing_live_set() {
let mut lru = IntrusiveLru::<u32, u32>::with_capacity(2);
*lru.ensure(1) = 10;
*lru.ensure(2) = 20;
lru.touch(1);
*lru.ensure(3) = 30;
assert_eq!(lru.get(&1), Some(&10));
assert_eq!(lru.get(&2), None);
assert_eq!(lru.get(&3), Some(&30));
assert_eq!(lru.hottest(3), vec![3, 1]);
}