]> git.lizzy.rs Git - rust.git/blob - library/std/src/io/readbuf/tests.rs
Auto merge of #107187 - matthiaskrgr:rollup-lvwzlg2, r=matthiaskrgr
[rust.git] / library / std / src / io / readbuf / tests.rs
1 use super::BorrowedBuf;
2 use crate::mem::MaybeUninit;
3
4 /// Test that BorrowedBuf has the correct numbers when created with new
5 #[test]
6 fn new() {
7     let buf: &mut [_] = &mut [0; 16];
8     let mut rbuf: BorrowedBuf<'_> = buf.into();
9
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);
14 }
15
16 /// Test that BorrowedBuf has the correct numbers when created with uninit
17 #[test]
18 fn uninit() {
19     let buf: &mut [_] = &mut [MaybeUninit::uninit(); 16];
20     let mut rbuf: BorrowedBuf<'_> = buf.into();
21
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);
26 }
27
28 #[test]
29 fn initialize_unfilled() {
30     let buf: &mut [_] = &mut [MaybeUninit::uninit(); 16];
31     let mut rbuf: BorrowedBuf<'_> = buf.into();
32
33     rbuf.unfilled().ensure_init();
34
35     assert_eq!(rbuf.init_len(), 16);
36 }
37
38 #[test]
39 fn addvance_filled() {
40     let buf: &mut [_] = &mut [0; 16];
41     let mut rbuf: BorrowedBuf<'_> = buf.into();
42
43     unsafe {
44         rbuf.unfilled().advance(1);
45     }
46
47     assert_eq!(rbuf.filled().len(), 1);
48     assert_eq!(rbuf.unfilled().capacity(), 15);
49 }
50
51 #[test]
52 fn clear() {
53     let buf: &mut [_] = &mut [255; 16];
54     let mut rbuf: BorrowedBuf<'_> = buf.into();
55
56     unsafe {
57         rbuf.unfilled().advance(16);
58     }
59
60     assert_eq!(rbuf.filled().len(), 16);
61     assert_eq!(rbuf.unfilled().capacity(), 0);
62
63     rbuf.clear();
64
65     assert_eq!(rbuf.filled().len(), 0);
66     assert_eq!(rbuf.unfilled().capacity(), 16);
67
68     assert_eq!(rbuf.unfilled().init_ref(), [255; 16]);
69 }
70
71 #[test]
72 fn set_init() {
73     let buf: &mut [_] = &mut [MaybeUninit::uninit(); 16];
74     let mut rbuf: BorrowedBuf<'_> = buf.into();
75
76     unsafe {
77         rbuf.set_init(8);
78     }
79
80     assert_eq!(rbuf.init_len(), 8);
81
82     unsafe {
83         rbuf.unfilled().advance(4);
84     }
85
86     unsafe {
87         rbuf.set_init(2);
88     }
89
90     assert_eq!(rbuf.init_len(), 8);
91
92     unsafe {
93         rbuf.set_init(8);
94     }
95
96     assert_eq!(rbuf.init_len(), 8);
97 }
98
99 #[test]
100 fn append() {
101     let buf: &mut [_] = &mut [MaybeUninit::new(255); 16];
102     let mut rbuf: BorrowedBuf<'_> = buf.into();
103
104     rbuf.unfilled().append(&[0; 8]);
105
106     assert_eq!(rbuf.init_len(), 8);
107     assert_eq!(rbuf.filled().len(), 8);
108     assert_eq!(rbuf.filled(), [0; 8]);
109
110     rbuf.clear();
111
112     rbuf.unfilled().append(&[1; 16]);
113
114     assert_eq!(rbuf.init_len(), 16);
115     assert_eq!(rbuf.filled().len(), 16);
116     assert_eq!(rbuf.filled(), [1; 16]);
117 }
118
119 #[test]
120 fn reborrow_written() {
121     let buf: &mut [_] = &mut [MaybeUninit::new(0); 32];
122     let mut buf: BorrowedBuf<'_> = buf.into();
123
124     let mut cursor = buf.unfilled();
125     cursor.append(&[1; 16]);
126
127     let mut cursor2 = cursor.reborrow();
128     cursor2.append(&[2; 16]);
129
130     assert_eq!(cursor2.written(), 32);
131     assert_eq!(cursor.written(), 32);
132
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]);
139 }
140
141 #[test]
142 fn cursor_set_init() {
143     let buf: &mut [_] = &mut [MaybeUninit::uninit(); 16];
144     let mut rbuf: BorrowedBuf<'_> = buf.into();
145
146     unsafe {
147         rbuf.unfilled().set_init(8);
148     }
149
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);
155
156     unsafe {
157         rbuf.unfilled().advance(4);
158     }
159
160     unsafe {
161         rbuf.unfilled().set_init(2);
162     }
163
164     assert_eq!(rbuf.init_len(), 8);
165
166     unsafe {
167         rbuf.unfilled().set_init(8);
168     }
169
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);
175 }