cranpose-ui-graphics 0.22.2

Geometry, units, paths and render data for Cranpose UI
Documentation
use super::*;

#[test]
fn vector_mask_cache_accounts_for_stored_bytes_on_insert_and_eviction() {
    let mut cache = VectorPathMaskCache::new();
    for key in 0..128 {
        let image = if key % 2 == 0 {
            ImageBitmap::from_alpha8(2, 2, [31, 116, 201], vec![127; 4])
        } else {
            ImageBitmap::from_rgba8(2, 2, vec![127; 16])
        }
        .expect("cache image");
        cache.put(key, image);
        assert_eq!(
            cache.bytes,
            cache
                .entries
                .iter()
                .map(|(_, image)| image.pixels().len())
                .sum::<usize>()
        );
    }
    assert_eq!(cache.entries.len(), VECTOR_PATH_MASK_CACHE_ENTRIES);
    assert_eq!(cache.bytes, 48 * (4 + 16));
    assert!(cache.get(0).is_none());
    assert!(cache.get(127).is_some());
}