in src/storage/seg/src/tests.rs [413:449]
fn wrapping_add() {
let ttl = Duration::ZERO;
let segment_size = 4096;
let segments = 64;
let heap_size = segments * segment_size as usize;
let mut cache = Seg::builder()
.segment_size(segment_size)
.heap_size(heap_size)
.build()
.expect("failed to create cache");
assert_eq!(cache.items(), 0);
assert_eq!(cache.segments.free(), 64);
assert!(cache.insert(b"coffee", 0, None, ttl).is_ok());
assert_eq!(cache.segments.free(), 63);
assert_eq!(cache.items(), 1);
assert!(cache.get(b"coffee").is_some());
let item = cache.get(b"coffee").unwrap();
assert_eq!(item.value(), 0, "item is: {:?}", item);
cache
.wrapping_add(b"coffee", 1)
.expect("failed to increment");
assert_eq!(item.value(), 1, "item is: {:?}", item);
cache
.wrapping_add(b"coffee", u64::MAX - 1)
.expect("failed to increment");
assert_eq!(item.value(), u64::MAX, "item is: {:?}", item);
cache
.wrapping_add(b"coffee", 1)
.expect("failed to increment");
assert_eq!(item.value(), 0, "item is: {:?}", item);
cache
.wrapping_add(b"coffee", 2)
.expect("failed to increment");
assert_eq!(item.value(), 2, "item is: {:?}", item);
}