#![cfg(all(feature = "gguf", feature = "onnx"))]
const LARGE: usize = 64 << 20; const SMALL: usize = 1 << 10;
fn build_gguf(data_len: usize) -> Vec<u8> {
assert_eq!(data_len % 4, 0);
let n_elements = (data_len / 4) as u64; let mut v = Vec::new();
v.extend_from_slice(&0x4655_4747u32.to_le_bytes()); v.extend_from_slice(&3u32.to_le_bytes()); v.extend_from_slice(&1u64.to_le_bytes()); v.extend_from_slice(&0u64.to_le_bytes()); v.extend_from_slice(&1u64.to_le_bytes());
v.push(b'w');
v.extend_from_slice(&1u32.to_le_bytes()); v.extend_from_slice(&n_elements.to_le_bytes()); v.extend_from_slice(&0u32.to_le_bytes()); v.extend_from_slice(&0u64.to_le_bytes()); while v.len() % 32 != 0 {
v.push(0);
}
v.resize(v.len() + data_len, 0xAB);
v
}
fn pb_varint(out: &mut Vec<u8>, mut v: u64) {
while v >= 0x80 {
out.push((v as u8 & 0x7F) | 0x80);
v >>= 7;
}
out.push(v as u8);
}
fn pb_varint_field(out: &mut Vec<u8>, field: u64, v: u64) {
pb_varint(out, field << 3); pb_varint(out, v);
}
fn pb_len_field(out: &mut Vec<u8>, field: u64, bytes: &[u8]) {
pb_varint(out, (field << 3) | 2); pb_varint(out, bytes.len() as u64);
out.extend_from_slice(bytes);
}
fn build_onnx(data_len: usize) -> Vec<u8> {
let raw_data = vec![0xCDu8; data_len];
let mut opset = Vec::new();
pb_varint_field(&mut opset, 2, 13);
let mut tensor = Vec::new();
pb_varint_field(&mut tensor, 1, (data_len / 4) as u64); pb_varint_field(&mut tensor, 2, 1); pb_len_field(&mut tensor, 8, b"w"); pb_len_field(&mut tensor, 9, &raw_data);
let mut graph = Vec::new();
pb_len_field(&mut graph, 2, b"g"); pb_len_field(&mut graph, 5, &tensor);
let mut model = Vec::new();
pb_varint_field(&mut model, 1, 13); pb_len_field(&mut model, 8, &opset);
pb_len_field(&mut model, 7, &graph);
model
}
#[test]
fn gguf_carrier_size_is_independent_of_tensor_data_size() {
let small = uor_addr::gguf::canonicalize(&build_gguf(SMALL)).expect("small");
let large = uor_addr::gguf::canonicalize(&build_gguf(LARGE)).expect("large");
assert_eq!(
small.len(),
large.len(),
"GGUF skeleton size must not grow with tensor-data size"
);
assert!(
small.len() < 256,
"skeleton {} unexpectedly large",
small.len()
);
}
#[test]
fn gguf_every_tensor_byte_binds() {
let model = build_gguf(LARGE);
let base = uor_addr::gguf::address(&model).unwrap().address;
let mut flipped = model.clone();
let mid = flipped.len() / 2;
flipped[mid] ^= 0xFF;
let other = uor_addr::gguf::address(&flipped).unwrap().address;
assert_ne!(base, other, "a deep tensor-data byte must bind into κ");
let mut last = model.clone();
*last.last_mut().unwrap() ^= 0x01;
assert_ne!(base, uor_addr::gguf::address(&last).unwrap().address);
}
#[test]
fn gguf_large_model_is_deterministic() {
let model = build_gguf(LARGE);
assert_eq!(
uor_addr::gguf::address(&model).unwrap().address,
uor_addr::gguf::address(&model).unwrap().address
);
}
#[test]
fn onnx_carrier_size_is_independent_of_tensor_data_size() {
let small = uor_addr::onnx::canonicalize(&build_onnx(SMALL)).expect("small");
let large = uor_addr::onnx::canonicalize(&build_onnx(LARGE)).expect("large");
assert_eq!(
small.len(),
large.len(),
"ONNX skeleton size must not grow with raw_data size"
);
assert!(
small.len() < 512,
"skeleton {} unexpectedly large",
small.len()
);
}
#[test]
fn onnx_every_tensor_byte_binds() {
let model = build_onnx(LARGE);
let base = uor_addr::onnx::address(&model).unwrap().address;
let mut flipped = model.clone();
let mid = flipped.len() / 2;
flipped[mid] ^= 0xFF;
assert_ne!(
base,
uor_addr::onnx::address(&flipped).unwrap().address,
"a deep raw_data byte must bind into κ"
);
}
#[test]
fn onnx_large_model_is_deterministic() {
let model = build_onnx(LARGE);
assert_eq!(
uor_addr::onnx::address(&model).unwrap().address,
uor_addr::onnx::address(&model).unwrap().address
);
}