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