@@ -30,3 +30,55 @@ fn take_copy_to_bytes_panics() {
3030 let abcd = Bytes :: copy_from_slice ( b"abcd" ) ;
3131 abcd. take ( 2 ) . copy_to_bytes ( 3 ) ;
3232}
33+
34+ #[ cfg( feature = "std" ) ]
35+ #[ test]
36+ fn take_chunks_vectored ( ) {
37+ fn chain ( ) -> impl Buf {
38+ Bytes :: from ( [ 1 , 2 , 3 ] . to_vec ( ) ) . chain ( Bytes :: from ( [ 4 , 5 , 6 ] . to_vec ( ) ) )
39+ }
40+
41+ {
42+ let mut dst = [ std:: io:: IoSlice :: new ( & [ ] ) ; 2 ] ;
43+ let take = chain ( ) . take ( 0 ) ;
44+ assert_eq ! ( take. chunks_vectored( & mut dst) , 0 ) ;
45+ }
46+
47+ {
48+ let mut dst = [ std:: io:: IoSlice :: new ( & [ ] ) ; 2 ] ;
49+ let take = chain ( ) . take ( 1 ) ;
50+ assert_eq ! ( take. chunks_vectored( & mut dst) , 1 ) ;
51+ assert_eq ! ( & * dst[ 0 ] , & [ 1 ] ) ;
52+ }
53+
54+ {
55+ let mut dst = [ std:: io:: IoSlice :: new ( & [ ] ) ; 2 ] ;
56+ let take = chain ( ) . take ( 3 ) ;
57+ assert_eq ! ( take. chunks_vectored( & mut dst) , 1 ) ;
58+ assert_eq ! ( & * dst[ 0 ] , & [ 1 , 2 , 3 ] ) ;
59+ }
60+
61+ {
62+ let mut dst = [ std:: io:: IoSlice :: new ( & [ ] ) ; 2 ] ;
63+ let take = chain ( ) . take ( 4 ) ;
64+ assert_eq ! ( take. chunks_vectored( & mut dst) , 2 ) ;
65+ assert_eq ! ( & * dst[ 0 ] , & [ 1 , 2 , 3 ] ) ;
66+ assert_eq ! ( & * dst[ 1 ] , & [ 4 ] ) ;
67+ }
68+
69+ {
70+ let mut dst = [ std:: io:: IoSlice :: new ( & [ ] ) ; 2 ] ;
71+ let take = chain ( ) . take ( 6 ) ;
72+ assert_eq ! ( take. chunks_vectored( & mut dst) , 2 ) ;
73+ assert_eq ! ( & * dst[ 0 ] , & [ 1 , 2 , 3 ] ) ;
74+ assert_eq ! ( & * dst[ 1 ] , & [ 4 , 5 , 6 ] ) ;
75+ }
76+
77+ {
78+ let mut dst = [ std:: io:: IoSlice :: new ( & [ ] ) ; 2 ] ;
79+ let take = chain ( ) . take ( 7 ) ;
80+ assert_eq ! ( take. chunks_vectored( & mut dst) , 2 ) ;
81+ assert_eq ! ( & * dst[ 0 ] , & [ 1 , 2 , 3 ] ) ;
82+ assert_eq ! ( & * dst[ 1 ] , & [ 4 , 5 , 6 ] ) ;
83+ }
84+ }
0 commit comments