mirror of
https://github.com/hinto-janai/cuprate.git
synced 2024-11-17 08:18:01 +00:00
83b59c557c
This gives us more control than what serde provides. This PR also moves to use `Bytes` where possible to allow zero-copy parsing of network messages.
39 lines
660 B
Rust
39 lines
660 B
Rust
use epee_encoding::{epee_object, from_bytes};
|
|
|
|
struct T {
|
|
a: u8,
|
|
}
|
|
|
|
epee_object!(
|
|
T,
|
|
a: u8,
|
|
);
|
|
|
|
struct TT {
|
|
a: u8,
|
|
}
|
|
|
|
epee_object!(
|
|
TT,
|
|
a: u8 = 0,
|
|
);
|
|
|
|
#[test]
|
|
fn duplicate_key() {
|
|
let data = [
|
|
0x01, 0x11, 0x01, 0x1, 0x01, 0x01, 0x02, 0x1, 0x1, 0x08, 0x01, b'a', 0x0B, 0x00, 0x01,
|
|
b'a', 0x0B, 0x00,
|
|
];
|
|
|
|
assert!(from_bytes::<T, _>(&mut &data[..]).is_err());
|
|
}
|
|
|
|
#[test]
|
|
fn duplicate_key_with_default() {
|
|
let data = [
|
|
0x01, 0x11, 0x01, 0x1, 0x01, 0x01, 0x02, 0x1, 0x1, 0x08, 0x01, b'a', 0x0B, 0x00, 0x01,
|
|
b'a', 0x0B, 0x00,
|
|
];
|
|
|
|
assert!(from_bytes::<TT, _>(&mut &data[..]).is_err());
|
|
}
|