1 use super::BorrowedBuf;
2 use crate::mem::MaybeUninit;
4 /// Test that BorrowedBuf has the correct numbers when created with new
7 let buf: &mut [_] = &mut [0; 16];
8 let mut rbuf: BorrowedBuf<'_> = buf.into();
10 assert_eq!(rbuf.filled().len(), 0);
11 assert_eq!(rbuf.init_len(), 16);
12 assert_eq!(rbuf.capacity(), 16);
13 assert_eq!(rbuf.unfilled().capacity(), 16);
16 /// Test that BorrowedBuf has the correct numbers when created with uninit
19 let buf: &mut [_] = &mut [MaybeUninit::uninit(); 16];
20 let mut rbuf: BorrowedBuf<'_> = buf.into();
22 assert_eq!(rbuf.filled().len(), 0);
23 assert_eq!(rbuf.init_len(), 0);
24 assert_eq!(rbuf.capacity(), 16);
25 assert_eq!(rbuf.unfilled().capacity(), 16);
29 fn initialize_unfilled() {
30 let buf: &mut [_] = &mut [MaybeUninit::uninit(); 16];
31 let mut rbuf: BorrowedBuf<'_> = buf.into();
33 rbuf.unfilled().ensure_init();
35 assert_eq!(rbuf.init_len(), 16);
39 fn addvance_filled() {
40 let buf: &mut [_] = &mut [0; 16];
41 let mut rbuf: BorrowedBuf<'_> = buf.into();
44 rbuf.unfilled().advance(1);
47 assert_eq!(rbuf.filled().len(), 1);
48 assert_eq!(rbuf.unfilled().capacity(), 15);
53 let buf: &mut [_] = &mut [255; 16];
54 let mut rbuf: BorrowedBuf<'_> = buf.into();
57 rbuf.unfilled().advance(16);
60 assert_eq!(rbuf.filled().len(), 16);
61 assert_eq!(rbuf.unfilled().capacity(), 0);
65 assert_eq!(rbuf.filled().len(), 0);
66 assert_eq!(rbuf.unfilled().capacity(), 16);
68 assert_eq!(rbuf.unfilled().init_ref(), [255; 16]);
73 let buf: &mut [_] = &mut [MaybeUninit::uninit(); 16];
74 let mut rbuf: BorrowedBuf<'_> = buf.into();
80 assert_eq!(rbuf.init_len(), 8);
83 rbuf.unfilled().advance(4);
90 assert_eq!(rbuf.init_len(), 8);
96 assert_eq!(rbuf.init_len(), 8);
101 let buf: &mut [_] = &mut [MaybeUninit::new(255); 16];
102 let mut rbuf: BorrowedBuf<'_> = buf.into();
104 rbuf.unfilled().append(&[0; 8]);
106 assert_eq!(rbuf.init_len(), 8);
107 assert_eq!(rbuf.filled().len(), 8);
108 assert_eq!(rbuf.filled(), [0; 8]);
112 rbuf.unfilled().append(&[1; 16]);
114 assert_eq!(rbuf.init_len(), 16);
115 assert_eq!(rbuf.filled().len(), 16);
116 assert_eq!(rbuf.filled(), [1; 16]);
120 fn reborrow_written() {
121 let buf: &mut [_] = &mut [MaybeUninit::new(0); 32];
122 let mut buf: BorrowedBuf<'_> = buf.into();
124 let mut cursor = buf.unfilled();
125 cursor.append(&[1; 16]);
127 let mut cursor2 = cursor.reborrow();
128 cursor2.append(&[2; 16]);
130 assert_eq!(cursor2.written(), 32);
131 assert_eq!(cursor.written(), 32);
133 assert_eq!(buf.unfilled().written(), 0);
134 assert_eq!(buf.init_len(), 32);
135 assert_eq!(buf.filled().len(), 32);
136 let filled = buf.filled();
137 assert_eq!(&filled[..16], [1; 16]);
138 assert_eq!(&filled[16..], [2; 16]);
142 fn cursor_set_init() {
143 let buf: &mut [_] = &mut [MaybeUninit::uninit(); 16];
144 let mut rbuf: BorrowedBuf<'_> = buf.into();
147 rbuf.unfilled().set_init(8);
150 assert_eq!(rbuf.init_len(), 8);
151 assert_eq!(rbuf.unfilled().init_ref().len(), 8);
152 assert_eq!(rbuf.unfilled().init_mut().len(), 8);
153 assert_eq!(rbuf.unfilled().uninit_mut().len(), 8);
154 assert_eq!(unsafe { rbuf.unfilled().as_mut() }.len(), 16);
157 rbuf.unfilled().advance(4);
161 rbuf.unfilled().set_init(2);
164 assert_eq!(rbuf.init_len(), 8);
167 rbuf.unfilled().set_init(8);
170 assert_eq!(rbuf.init_len(), 12);
171 assert_eq!(rbuf.unfilled().init_ref().len(), 8);
172 assert_eq!(rbuf.unfilled().init_mut().len(), 8);
173 assert_eq!(rbuf.unfilled().uninit_mut().len(), 4);
174 assert_eq!(unsafe { rbuf.unfilled().as_mut() }.len(), 12);