use haz_domain::settings::cache::HashAlgo;
pub const CHAPTER_REVISION: u8 = 0;
#[must_use]
pub fn hash_function_id(algo: HashAlgo) -> u8 {
match algo {
HashAlgo::Blake3 => 0x00,
HashAlgo::Sha256 => 0x01,
}
}
#[must_use]
pub fn schema_version_prefix(algo: HashAlgo) -> [u8; 2] {
[CHAPTER_REVISION, hash_function_id(algo)]
}
#[cfg(test)]
mod tests {
use haz_domain::settings::cache::HashAlgo;
use crate::key::prefix::{CHAPTER_REVISION, hash_function_id, schema_version_prefix};
#[test]
fn cache_003_initial_chapter_revision_is_zero() {
assert_eq!(CHAPTER_REVISION, 0);
}
#[test]
fn cache_002_blake3_hash_function_id_is_zero() {
assert_eq!(hash_function_id(HashAlgo::Blake3), 0x00);
}
#[test]
fn cache_002_sha256_hash_function_id_is_one() {
assert_eq!(hash_function_id(HashAlgo::Sha256), 0x01);
}
#[test]
fn cache_003_prefix_keeps_the_two_bytes_distinct() {
let blake = schema_version_prefix(HashAlgo::Blake3);
let sha = schema_version_prefix(HashAlgo::Sha256);
assert_eq!(blake, [0, 0]);
assert_eq!(sha, [0, 1]);
assert_ne!(blake[1], sha[1]);
assert_eq!(blake[0], sha[0]);
}
}