Skip to content

Commit f29e939

Browse files
authored
Add some tests for Limit, BytesMut and Reader (#785)
1 parent d9d5c59 commit f29e939

File tree

3 files changed

+102
-0
lines changed

3 files changed

+102
-0
lines changed

tests/test_bytes.rs

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -186,6 +186,13 @@ fn split_off_oob() {
186186
let _ = hello.split_off(44);
187187
}
188188

189+
#[test]
190+
#[should_panic = "split_off out of bounds"]
191+
fn bytes_mut_split_off_oob() {
192+
let mut hello = BytesMut::from(&b"helloworld"[..]);
193+
let _ = hello.split_off(44);
194+
}
195+
189196
#[test]
190197
fn split_off_uninitialized() {
191198
let mut bytes = BytesMut::with_capacity(1024);

tests/test_limit.rs

Lines changed: 86 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,86 @@
1+
#![warn(rust_2018_idioms)]
2+
3+
use bytes::{buf::Limit, BufMut};
4+
5+
#[test]
6+
fn long_limit() {
7+
let buf = &mut [0u8; 10];
8+
let limit = buf.limit(100);
9+
assert_eq!(10, limit.remaining_mut());
10+
assert_eq!(&[0u8; 10], &limit.get_ref()[..]);
11+
}
12+
13+
#[test]
14+
fn limit_get_mut() {
15+
let buf = &mut [0u8; 128];
16+
let mut limit = buf.limit(10);
17+
assert_eq!(10, limit.remaining_mut());
18+
assert_eq!(&mut [0u8; 128], &limit.get_mut()[..]);
19+
}
20+
21+
#[test]
22+
fn limit_set_limit() {
23+
let buf = &mut [0u8; 128];
24+
let mut limit = buf.limit(10);
25+
assert_eq!(10, Limit::limit(&limit));
26+
limit.set_limit(5);
27+
assert_eq!(5, Limit::limit(&limit));
28+
}
29+
30+
#[test]
31+
fn limit_chunk_mut() {
32+
let buf = &mut [0u8; 20];
33+
let mut limit = buf.limit(10);
34+
assert_eq!(10, limit.chunk_mut().len());
35+
36+
let buf = &mut [0u8; 10];
37+
let mut limit = buf.limit(20);
38+
assert_eq!(10, limit.chunk_mut().len());
39+
}
40+
41+
#[test]
42+
#[should_panic = "advance out of bounds"]
43+
fn limit_advance_mut_panic_1() {
44+
let buf = &mut [0u8; 10];
45+
let mut limit = buf.limit(100);
46+
unsafe {
47+
limit.advance_mut(50);
48+
}
49+
}
50+
51+
#[test]
52+
#[should_panic = "cnt <= self.limit"]
53+
fn limit_advance_mut_panic_2() {
54+
let buf = &mut [0u8; 100];
55+
let mut limit = buf.limit(10);
56+
unsafe {
57+
limit.advance_mut(50);
58+
}
59+
}
60+
61+
#[test]
62+
fn limit_advance_mut() {
63+
let buf = &mut [0u8; 100];
64+
let mut limit = buf.limit(10);
65+
unsafe {
66+
limit.advance_mut(5);
67+
}
68+
assert_eq!(5, limit.remaining_mut());
69+
assert_eq!(5, limit.chunk_mut().len());
70+
}
71+
72+
#[test]
73+
fn limit_into_inner() {
74+
let buf_arr = *b"hello world";
75+
let buf: &mut [u8] = &mut buf_arr.clone();
76+
let mut limit = buf.limit(4);
77+
let mut dst = vec![];
78+
79+
unsafe {
80+
limit.advance_mut(2);
81+
}
82+
83+
let buf = limit.into_inner();
84+
dst.put(&buf[..]);
85+
assert_eq!(*dst, b"llo world"[..]);
86+
}

tests/test_reader.rs

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,3 +27,12 @@ fn buf_read() {
2727
reader.read_line(&mut line).unwrap();
2828
assert_eq!("world", &line);
2929
}
30+
31+
#[test]
32+
fn get_mut() {
33+
let buf = &b"hello world"[..];
34+
let mut reader = buf.reader();
35+
let buf_mut = reader.get_mut();
36+
assert_eq!(11, buf_mut.remaining());
37+
assert_eq!(b"hello world", buf_mut);
38+
}

0 commit comments

Comments
 (0)