pub mod magic {
pub const WAL: &[u8; 4] = b"WLOG";
pub const VECTOR_STORAGE: &[u8; 4] = b"VSTR";
pub const POSTING_STORAGE: &[u8; 4] = b"PSTR";
pub const TEXT_INDEX: &[u8; 4] = b"TIDX";
pub const TEXT_DATA: &[u8; 4] = b"TDAT";
#[cfg(test)]
pub const TEST_GENERIC: &[u8; 4] = b"TEST";
#[cfg(test)]
pub const TEST_SHARD: &[u8; 4] = b"SHRD";
#[cfg(test)]
pub const TEST_CORRUPTION: &[u8; 4] = b"XXXX";
#[cfg(test)]
pub const TEST_FAILURE: &[u8; 4] = b"FAIL";
}
#[cfg(test)]
mod tests {
use super::magic;
#[test]
fn test_magic_constants_are_correct() {
assert_eq!(magic::WAL, b"WLOG");
assert_eq!(magic::VECTOR_STORAGE, b"VSTR");
assert_eq!(magic::POSTING_STORAGE, b"PSTR");
assert_eq!(magic::TEXT_INDEX, b"TIDX");
assert_eq!(magic::TEXT_DATA, b"TDAT");
assert_eq!(magic::TEST_GENERIC, b"TEST");
assert_eq!(magic::TEST_SHARD, b"SHRD");
assert_eq!(magic::TEST_CORRUPTION, b"XXXX");
assert_eq!(magic::TEST_FAILURE, b"FAIL");
}
#[test]
fn test_magic_constants_are_unique() {
let production_constants = [
magic::WAL,
magic::VECTOR_STORAGE,
magic::POSTING_STORAGE,
magic::TEXT_INDEX,
magic::TEXT_DATA,
];
for (i, &constant1) in production_constants.iter().enumerate() {
for &constant2 in production_constants.iter().skip(i + 1) {
assert_ne!(constant1, constant2, "Magic constants must be unique");
}
}
}
#[test]
fn test_magic_constants_are_four_bytes() {
assert_eq!(magic::WAL.len(), 4);
assert_eq!(magic::VECTOR_STORAGE.len(), 4);
assert_eq!(magic::POSTING_STORAGE.len(), 4);
assert_eq!(magic::TEXT_INDEX.len(), 4);
assert_eq!(magic::TEXT_DATA.len(), 4);
assert_eq!(magic::TEST_GENERIC.len(), 4);
assert_eq!(magic::TEST_SHARD.len(), 4);
assert_eq!(magic::TEST_CORRUPTION.len(), 4);
assert_eq!(magic::TEST_FAILURE.len(), 4);
}
}