use super::*;
#[test]
fn xxh3_matches_the_reference_vectors() {
let ramp: Vec<u8> = (0..=255u8).collect();
assert_eq!(checksum(b""), 0x2D06_8005_38D3_94C2);
assert_eq!(checksum(&ramp), 0x9408_A443_3B95_2D71);
assert_eq!(global_group_key(), 0x99AA_06D3_0147_98D8_6001_C324_468D_497F);
assert_eq!(checksum_128(&ramp), 0xF1F8_A93F_5084_9AC3_9408_A443_3B95_2D71);
}
#[test]
fn digest_with_hole_equals_checksum_over_the_spliced_bytes() {
let buf: Vec<u8> = (0..600u32).map(|i| (i * 31 + 7) as u8).collect();
for &len in &[8usize, 64, 239, 240, 241, 600] {
for &hole in [0usize, 24, len - 8].iter().filter(|&&h| h + 8 <= len) {
for seed in [b"".as_slice(), b"shard_7_1.db".as_slice()] {
let mut spliced = seed.to_vec();
spliced.extend_from_slice(&buf[..hole]);
spliced.extend_from_slice(&buf[hole + 8..len]);
assert_eq!(
digest_with_hole(seed, &buf[..len], hole),
checksum(&spliced),
"len={len} hole={hole} seed={}",
seed.len()
);
}
}
}
}
#[test]
fn layout_digest_separates_every_layout_axis() {
use crate::TypeCode::{String as Str, I64, U64};
let base = layout_digest(&[0], [U64, I64]);
assert_ne!(base, layout_digest(&[0], [U64, I64, I64]), "column count");
assert_ne!(base, layout_digest(&[0], [U64]), "column count");
assert_ne!(base, layout_digest(&[1], [U64, I64]), "PK index");
assert_ne!(base, layout_digest(&[0, 1], [U64, I64]), "PK arity");
assert_ne!(base, layout_digest(&[0], [U64, Str]), "type code");
}