@@ -30,3 +30,55 @@ fn take_copy_to_bytes_panics() {
30
30
let abcd = Bytes :: copy_from_slice ( b"abcd" ) ;
31
31
abcd. take ( 2 ) . copy_to_bytes ( 3 ) ;
32
32
}
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