@@ -95,35 +95,18 @@ fn digest_pad_combinations() {
9595
9696 buf. digest_blocks ( data, |_| panic ! ( "should not be called" ) ) ;
9797
98- let mut n = 0 ;
99- buf. digest_pad ( delim, suffix, |block| {
100- match n {
101- 0 => {
102- assert ! ( block. starts_with( data) ) ;
103- assert_eq ! ( block[ data_len] , delim) ;
104-
105- let tail = & block[ data_len + 1 ..] ;
106- if tail. len ( ) >= suffix_len {
107- assert ! ( data. len( ) + suffix. len( ) < block. len( ) ) ;
108-
109- let ( l, r) = tail. split_at ( tail. len ( ) - suffix_len) ;
110- assert ! ( l. iter( ) . all( |b| * b == 0 ) ) ;
111- assert_eq ! ( r, suffix) ;
112- } else {
113- assert ! ( tail. iter( ) . all( |b| * b == 0 ) ) ;
114- }
115- }
116- 1 => {
117- assert ! ( data. len( ) + suffix. len( ) >= block. len( ) ) ;
118- let ( l, r) = block. split_at ( block. len ( ) - suffix_len) ;
119- assert ! ( l. iter( ) . all( |b| * b == 0 ) ) ;
120- assert_eq ! ( r, suffix) ;
121- }
122- _ => unreachable ! ( ) ,
123- }
124- n += 1 ;
125- } ) ;
98+ let mut accum = Vec :: with_capacity ( 2 * buf. size ( ) ) ;
99+ buf. digest_pad ( delim, suffix, |block| accum. extend_from_slice ( block) ) ;
100+
101+ assert ! ( accum. len( ) <= 2 * buf. size( ) ) ;
126102 assert_eq ! ( buf. get_pos( ) , 0 ) ;
103+
104+ let ( res_data, rem) = accum. split_at ( data_len) ;
105+ let ( res_zeros, res_suffix) = rem. split_at ( rem. len ( ) - suffix_len) ;
106+
107+ assert_eq ! ( res_data, data) ;
108+ assert ! ( res_zeros. iter( ) . all( |& b| b == 0 ) ) ;
109+ assert_eq ! ( res_suffix, suffix) ;
127110 }
128111 }
129112}
0 commit comments