@@ -322,6 +322,21 @@ mod test {
322
322
fn write ( & mut self , _: & [ u8 ] ) { }
323
323
}
324
324
325
+ /// A dummy reader intended at testing short-reads propagation.
326
+ pub struct ShortReader {
327
+ priv lengths : ~[ uint ] ,
328
+ }
329
+
330
+ impl Reader for ShortReader {
331
+ fn read ( & mut self , _: & mut [ u8 ] ) -> Option < uint > {
332
+ self . lengths . shift_opt ( )
333
+ }
334
+
335
+ fn eof ( & mut self ) -> bool {
336
+ self . lengths . len ( ) == 0
337
+ }
338
+ }
339
+
325
340
#[ test]
326
341
fn test_buffered_reader ( ) {
327
342
let inner = MemReader :: new ( ~[ 0 , 1 , 2 , 3 , 4 ] ) ;
@@ -475,6 +490,19 @@ mod test {
475
490
assert_eq ! ( it. next( ) , None ) ;
476
491
}
477
492
493
+ #[ test]
494
+ fn test_short_reads ( ) {
495
+ let inner = ShortReader { lengths : ~[ 0 , 1 , 2 , 0 , 1 , 0 ] } ;
496
+ let mut reader = BufferedReader :: new ( inner) ;
497
+ let mut buf = [ 0 , 0 ] ;
498
+ assert_eq ! ( reader. read( buf) , Some ( 0 ) ) ;
499
+ assert_eq ! ( reader. read( buf) , Some ( 1 ) ) ;
500
+ assert_eq ! ( reader. read( buf) , Some ( 2 ) ) ;
501
+ assert_eq ! ( reader. read( buf) , Some ( 0 ) ) ;
502
+ assert_eq ! ( reader. read( buf) , Some ( 1 ) ) ;
503
+ assert_eq ! ( reader. read( buf) , None ) ;
504
+ }
505
+
478
506
479
507
#[ bench]
480
508
fn bench_buffered_reader ( bh : & mut Harness ) {
0 commit comments