use caches::{Cache, SegmentedCache};
fn main() {
let mut cache = SegmentedCache::new(2, 2).unwrap();
cache.put(1, 1);
cache.put(2, 2);
assert_eq!(cache.probationary_len(), 2);
assert_eq!(cache.protected_len(), 0);
assert_eq!(cache.get(&1), Some(&1));
*cache.get_mut(&2).unwrap() = 22;
assert_eq!(cache.probationary_len(), 0);
assert_eq!(cache.protected_len(), 2);
cache.put(3, 3);
cache.put(4, 4);
assert_eq!(cache.probationary_len(), 2);
assert_eq!(cache.protected_len(), 2);
assert_eq!(cache.peek(&3), Some(&3));
assert_eq!(cache.peek_mut(&4), Some(&mut 4));
assert_eq!(cache.probationary_len(), 2);
assert_eq!(cache.protected_len(), 2);
assert_eq!(cache.remove(&2), Some(22));
assert_eq!(cache.len(), 3);
cache.purge();
assert_eq!(cache.len(), 0);
}