test: proptest property testing + cargo-fuzz fuzzing for donglora-cobs

This commit is contained in:
swaits committed 2026-03-30 10:57:57 -06:00
1 parent 1fbbf110bc
commit d7bb127d92
8 files changed
+567 -9

No files matched your search

@@ -0,0 +1,30 @@
//! Fuzz target: encode then decode arbitrary input. Output must match input.
#![no_main]
use libfuzzer_sys::fuzz_target;
fuzz_target!(|data: &[u8]| {
if data.len() > 1024 {
return; // skip huge inputs to keep fuzzing fast
}
let max_enc = donglora_cobs::max_encoded_len(data.len()) + 1;
let mut enc_buf = vec![0u8; max_enc];
let enc_len = match donglora_cobs::encode(data, &mut enc_buf) {
Some(n) => n,
None => return, // encode failed (buffer too small shouldn't happen, but skip)
};
let encoded = &enc_buf[..enc_len];
// Encoded output must never contain 0x00.
assert!(!encoded.contains(&0x00), "encoded contains sentinel");
let mut dec_buf = vec![0u8; data.len() + 1];
let dec_len = donglora_cobs::decode(encoded, &mut dec_buf)
.expect("decode failed after successful encode");
assert_eq!(
&dec_buf[..dec_len], data,
"round-trip mismatch: encode→decode produced different output"
);
});