1 extern crate bytes;
2 extern crate byteorder;
3 extern crate iovec;
4
5 use bytes::{BufMut, BytesMut};
6 use iovec::IoVec;
7 use std::usize;
8 use std::fmt::Write;
9
10 #[test]
test_vec_as_mut_buf()11 fn test_vec_as_mut_buf() {
12 let mut buf = Vec::with_capacity(64);
13
14 assert_eq!(buf.remaining_mut(), usize::MAX);
15
16 unsafe {
17 assert!(buf.bytes_mut().len() >= 64);
18 }
19
20 buf.put(&b"zomg"[..]);
21
22 assert_eq!(&buf, b"zomg");
23
24 assert_eq!(buf.remaining_mut(), usize::MAX - 4);
25 assert_eq!(buf.capacity(), 64);
26
27 for _ in 0..16 {
28 buf.put(&b"zomg"[..]);
29 }
30
31 assert_eq!(buf.len(), 68);
32 }
33
34 #[test]
test_put_u8()35 fn test_put_u8() {
36 let mut buf = Vec::with_capacity(8);
37 buf.put::<u8>(33);
38 assert_eq!(b"\x21", &buf[..]);
39 }
40
41 #[test]
test_put_u16()42 fn test_put_u16() {
43 let mut buf = Vec::with_capacity(8);
44 buf.put_u16_be(8532);
45 assert_eq!(b"\x21\x54", &buf[..]);
46
47 buf.clear();
48 buf.put_u16_le(8532);
49 assert_eq!(b"\x54\x21", &buf[..]);
50 }
51
52 #[test]
test_vec_advance_mut()53 fn test_vec_advance_mut() {
54 // Regression test for carllerche/bytes#108.
55 let mut buf = Vec::with_capacity(8);
56 unsafe {
57 buf.advance_mut(12);
58 assert_eq!(buf.len(), 12);
59 assert!(buf.capacity() >= 12, "capacity: {}", buf.capacity());
60 }
61 }
62
63 #[test]
test_clone()64 fn test_clone() {
65 let mut buf = BytesMut::with_capacity(100);
66 buf.write_str("this is a test").unwrap();
67 let buf2 = buf.clone();
68
69 buf.write_str(" of our emergecy broadcast system").unwrap();
70 assert!(buf != buf2);
71 }
72
73 #[test]
test_bufs_vec_mut()74 fn test_bufs_vec_mut() {
75 use std::mem;
76
77 let mut buf = BytesMut::from(&b"hello world"[..]);
78
79 unsafe {
80 let mut dst: [&mut IoVec; 2] = mem::zeroed();
81 assert_eq!(1, buf.bytes_vec_mut(&mut dst[..]));
82 }
83 }
84