@@ -202,23 +202,40 @@ mod tests {
202
202
let input = "őэ╋" ;
203
203
let mut buffer = [ 0u16 ; 3 ] ;
204
204
205
- let result = encode ( input, & mut buffer) ;
206
- assert_eq ! ( result. unwrap( ) , 3 ) ;
207
-
205
+ assert_eq ! ( encode( input, & mut buffer) , Ok ( 3 ) ) ;
208
206
assert_eq ! ( buffer[ ..] , [ 0x0151 , 0x044D , 0x254B ] ) ;
207
+
208
+ let mut buffer = [ 0u16 ; 2 ] ;
209
+ assert_eq ! ( encode( input, & mut buffer) , Err ( Error :: BufferOverflow ) ) ;
210
+
211
+ let input = "😎" ;
212
+ assert_eq ! ( encode( input, & mut buffer) , Err ( Error :: MultiByte ) ) ;
209
213
}
210
214
211
215
#[ test]
212
216
fn decoding ( ) {
213
217
let input = "$¢ह한" ;
214
218
let mut u16_buffer = [ 0u16 ; 4 ] ;
215
- let result = encode ( input, & mut u16_buffer) ;
216
- assert_eq ! ( result. unwrap( ) , 4 ) ;
219
+ assert_eq ! ( encode( input, & mut u16_buffer) , Ok ( 4 ) ) ;
217
220
218
221
let mut u8_buffer = [ 0u8 ; 9 ] ;
219
- let result = decode ( & u16_buffer, & mut u8_buffer) ;
220
- assert_eq ! ( result. unwrap( ) , 9 ) ;
222
+ assert_eq ! ( decode( & u16_buffer, & mut u8_buffer) , Ok ( 9 ) ) ;
221
223
assert_eq ! ( core:: str :: from_utf8( & u8_buffer[ 0 ..9 ] ) , Ok ( "$¢ह한" ) ) ;
224
+
225
+ // `decode` has three branches that can return `BufferOverflow`,
226
+ // check each of them.
227
+ assert_eq ! (
228
+ decode( & u16_buffer, & mut u8_buffer[ ..0 ] ) ,
229
+ Err ( Error :: BufferOverflow )
230
+ ) ;
231
+ assert_eq ! (
232
+ decode( & u16_buffer, & mut u8_buffer[ ..1 ] ) ,
233
+ Err ( Error :: BufferOverflow )
234
+ ) ;
235
+ assert_eq ! (
236
+ decode( & u16_buffer, & mut u8_buffer[ ..3 ] ) ,
237
+ Err ( Error :: BufferOverflow )
238
+ ) ;
222
239
}
223
240
224
241
#[ test]
0 commit comments