Skip to content

Commit 4038ca0

Browse files
committed
Refactor tests of Write for Cursor<_>
1 parent 5e57faa commit 4038ca0

File tree

1 file changed

+28
-44
lines changed

1 file changed

+28
-44
lines changed

library/std/src/io/cursor/tests.rs

+28-44
Original file line numberDiff line numberDiff line change
@@ -50,9 +50,11 @@ fn test_mem_mut_writer() {
5050
assert_eq!(&writer.get_ref()[..], b);
5151
}
5252

53-
#[test]
54-
fn test_box_slice_writer() {
55-
let mut writer = Cursor::new(vec![0u8; 9].into_boxed_slice());
53+
fn test_slice_writer<T>(writer: &mut Cursor<T>)
54+
where
55+
T: AsRef<[u8]>,
56+
Cursor<T>: Write,
57+
{
5658
assert_eq!(writer.position(), 0);
5759
assert_eq!(writer.write(&[0]).unwrap(), 1);
5860
assert_eq!(writer.position(), 1);
@@ -65,12 +67,14 @@ fn test_box_slice_writer() {
6567
assert_eq!(writer.write(&[8, 9]).unwrap(), 1);
6668
assert_eq!(writer.write(&[10]).unwrap(), 0);
6769
let b: &[_] = &[0, 1, 2, 3, 4, 5, 6, 7, 8];
68-
assert_eq!(&**writer.get_ref(), b);
70+
assert_eq!(writer.get_ref().as_ref(), b);
6971
}
7072

71-
#[test]
72-
fn test_box_slice_writer_vectored() {
73-
let mut writer = Cursor::new(vec![0u8; 9].into_boxed_slice());
73+
fn test_slice_writer_vectored<T>(writer: &mut Cursor<T>)
74+
where
75+
T: AsRef<[u8]>,
76+
Cursor<T>: Write,
77+
{
7478
assert_eq!(writer.position(), 0);
7579
assert_eq!(writer.write_vectored(&[IoSlice::new(&[0])]).unwrap(), 1);
7680
assert_eq!(writer.position(), 1);
@@ -85,53 +89,33 @@ fn test_box_slice_writer_vectored() {
8589
assert_eq!(writer.write_vectored(&[IoSlice::new(&[8, 9])]).unwrap(), 1);
8690
assert_eq!(writer.write_vectored(&[IoSlice::new(&[10])]).unwrap(), 0);
8791
let b: &[_] = &[0, 1, 2, 3, 4, 5, 6, 7, 8];
88-
assert_eq!(&**writer.get_ref(), b);
92+
assert_eq!(writer.get_ref().as_ref(), b);
93+
}
94+
95+
#[test]
96+
fn test_box_slice_writer() {
97+
let mut writer = Cursor::new(vec![0u8; 9].into_boxed_slice());
98+
test_slice_writer(&mut writer);
99+
}
100+
101+
#[test]
102+
fn test_box_slice_writer_vectored() {
103+
let mut writer = Cursor::new(vec![0u8; 9].into_boxed_slice());
104+
test_slice_writer_vectored(&mut writer);
89105
}
90106

91107
#[test]
92108
fn test_buf_writer() {
93109
let mut buf = [0 as u8; 9];
94-
{
95-
let mut writer = Cursor::new(&mut buf[..]);
96-
assert_eq!(writer.position(), 0);
97-
assert_eq!(writer.write(&[0]).unwrap(), 1);
98-
assert_eq!(writer.position(), 1);
99-
assert_eq!(writer.write(&[1, 2, 3]).unwrap(), 3);
100-
assert_eq!(writer.write(&[4, 5, 6, 7]).unwrap(), 4);
101-
assert_eq!(writer.position(), 8);
102-
assert_eq!(writer.write(&[]).unwrap(), 0);
103-
assert_eq!(writer.position(), 8);
104-
105-
assert_eq!(writer.write(&[8, 9]).unwrap(), 1);
106-
assert_eq!(writer.write(&[10]).unwrap(), 0);
107-
}
108-
let b: &[_] = &[0, 1, 2, 3, 4, 5, 6, 7, 8];
109-
assert_eq!(buf, b);
110+
let mut writer = Cursor::new(&mut buf[..]);
111+
test_slice_writer(&mut writer);
110112
}
111113

112114
#[test]
113115
fn test_buf_writer_vectored() {
114116
let mut buf = [0 as u8; 9];
115-
{
116-
let mut writer = Cursor::new(&mut buf[..]);
117-
assert_eq!(writer.position(), 0);
118-
assert_eq!(writer.write_vectored(&[IoSlice::new(&[0])]).unwrap(), 1);
119-
assert_eq!(writer.position(), 1);
120-
assert_eq!(
121-
writer
122-
.write_vectored(&[IoSlice::new(&[1, 2, 3]), IoSlice::new(&[4, 5, 6, 7])],)
123-
.unwrap(),
124-
7,
125-
);
126-
assert_eq!(writer.position(), 8);
127-
assert_eq!(writer.write_vectored(&[]).unwrap(), 0);
128-
assert_eq!(writer.position(), 8);
129-
130-
assert_eq!(writer.write_vectored(&[IoSlice::new(&[8, 9])]).unwrap(), 1);
131-
assert_eq!(writer.write_vectored(&[IoSlice::new(&[10])]).unwrap(), 0);
132-
}
133-
let b: &[_] = &[0, 1, 2, 3, 4, 5, 6, 7, 8];
134-
assert_eq!(buf, b);
117+
let mut writer = Cursor::new(&mut buf[..]);
118+
test_slice_writer_vectored(&mut writer);
135119
}
136120

137121
#[test]

0 commit comments

Comments
 (0)