chunk-diff 0.2.0

A fast and memory-efficient library for computing the difference between two frames of rect.
Documentation
use crate::{
    hasher::{xxhash::XxHasher, Hasher},
    util::rect::Rect,
};

#[test]
fn hash_rect_eq() {
    let data = vec![0; 9 * 8];
    let rect = Rect::new(3, 2);
    let full = Rect::new(9, 8);
    let chunks = full.divide(&rect);
    let hasher = XxHasher::default();
    let hashes = chunks
        .iter()
        .map(|chunk| hasher.hash_rect(&data, &chunk, &full))
        .collect::<Box<_>>();

    assert_eq!(hashes.len(), 12);

    assert_eq!(hashes[0], hashes[1]);
    assert_eq!(hashes[1], hashes[2]);
    assert_eq!(hashes[2], hashes[3]);
}

#[test]
fn hash_rect_ne() {
    let data = vec![0, 0, 1, 1];
    let rect = Rect::new(2, 1);
    let full = Rect::new(4, 1);
    let chunks = full.divide(&rect);
    let hasher = XxHasher::default();
    let hashes = chunks
        .iter()
        .map(|chunk| hasher.hash_rect(&data, &chunk, &full))
        .collect::<Box<_>>();

    assert_eq!(hashes.len(), 2);

    assert_ne!(hashes[0], hashes[1]);
}