Skip to content

Commit 2c01c69

Browse files
authored
Add some unit tests for split_init. (#1190)
1 parent d153046 commit 2c01c69

1 file changed

Lines changed: 49 additions & 0 deletions

File tree

src/buffer.rs

Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,3 +22,52 @@ pub(super) unsafe fn split_init(
2222
let uninit = slice::from_raw_parts_mut(buf_ptr.add(init_len), uninit_len);
2323
(init, uninit)
2424
}
25+
26+
#[cfg(test)]
27+
mod tests {
28+
use super::*;
29+
30+
#[test]
31+
fn test_split_init() {
32+
let mut input_array = [
33+
MaybeUninit::new(0_u8),
34+
MaybeUninit::new(1_u8),
35+
MaybeUninit::new(2_u8),
36+
MaybeUninit::new(3_u8),
37+
];
38+
let input_array_clone = input_array.clone();
39+
let input_array_ptr = input_array.as_ptr();
40+
let output_array = [0_u8, 1_u8, 2_u8, 3_u8];
41+
42+
unsafe {
43+
let (init, uninit) = split_init(&mut input_array, 0);
44+
assert_eq!(init, &[]);
45+
assert_eq!(uninit.len(), input_array_clone.len());
46+
assert_eq!(uninit.as_ptr(), input_array_ptr);
47+
48+
let (init, uninit) = split_init(&mut input_array, input_array_clone.len());
49+
assert_eq!(init, &output_array[..]);
50+
assert_eq!(init.as_ptr(), input_array_ptr.cast());
51+
assert_eq!(uninit.len(), 0);
52+
assert_eq!(
53+
uninit.as_ptr(),
54+
input_array_ptr.add(input_array_clone.len())
55+
);
56+
57+
let (init, uninit) = split_init(&mut input_array, 2);
58+
assert_eq!(init, &output_array[..2]);
59+
assert_eq!(init.as_ptr(), input_array_ptr.cast());
60+
assert_eq!(uninit.len(), 2);
61+
assert_eq!(uninit.as_ptr(), input_array_ptr.add(2));
62+
}
63+
}
64+
65+
#[test]
66+
fn test_split_init_empty() {
67+
unsafe {
68+
let (init, uninit) = split_init(&mut [], 0);
69+
assert!(init.is_empty());
70+
assert!(uninit.is_empty());
71+
}
72+
}
73+
}

0 commit comments

Comments
 (0)