Skip to content

Commit 7c59655

Browse files
committed
test(net): add tests for control message helpers
1 parent 840f237 commit 7c59655

File tree

1 file changed

+50
-0
lines changed

1 file changed

+50
-0
lines changed

compio-net/tests/cmsg.rs

Lines changed: 50 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,50 @@
1+
use compio_buf::IoBuf;
2+
use compio_net::{CMsgBuilder, CMsgIter};
3+
4+
#[test]
5+
fn test_cmsg() {
6+
let buf = vec![0u8; 64];
7+
let mut builder = CMsgBuilder::new(buf);
8+
9+
unsafe {
10+
builder.try_push(0, 0, ()).unwrap(); // 16 / 12
11+
builder.try_push(1, 1, u32::MAX).unwrap(); // 16 + 4 + 4 / 12 + 4
12+
builder.try_push(2, 2, i64::MIN).unwrap(); // 16 + 8 / 12 + 8
13+
}
14+
let (buf, len) = builder.build();
15+
assert!(len == 64 || len == 48);
16+
17+
let buf = buf.slice(..len);
18+
let mut iter = unsafe { CMsgIter::new(&buf) };
19+
20+
let cmsg = iter.next().unwrap();
21+
assert_eq!(
22+
(cmsg.level(), cmsg.ty(), unsafe { cmsg.data::<()>() }),
23+
(0, 0, &())
24+
);
25+
let cmsg = iter.next().unwrap();
26+
assert_eq!(
27+
(cmsg.level(), cmsg.ty(), unsafe { cmsg.data::<u32>() }),
28+
(1, 1, &u32::MAX)
29+
);
30+
let cmsg = iter.next().unwrap();
31+
assert_eq!(
32+
(cmsg.level(), cmsg.ty(), unsafe { cmsg.data::<i64>() }),
33+
(2, 2, &i64::MIN)
34+
);
35+
assert!(iter.next().is_none());
36+
}
37+
38+
#[test]
39+
#[should_panic]
40+
fn invalid_buffer_length() {
41+
let buf = vec![0u8; 1];
42+
CMsgBuilder::new(buf);
43+
}
44+
45+
#[test]
46+
#[should_panic]
47+
fn invalid_buffer_alignment() {
48+
let buf = vec![0u8; 64];
49+
CMsgBuilder::new(buf.slice(1..));
50+
}

0 commit comments

Comments
 (0)