@@ -88,7 +88,7 @@ impl<R: Reader> BufferedReader<R> {
88
88
89
89
impl < R : Reader > Buffer for BufferedReader < R > {
90
90
fn fill < ' a > ( & ' a mut self ) -> IoResult < & ' a [ u8 ] > {
91
- while self . pos == self . cap {
91
+ if self . pos == self . cap {
92
92
self . cap = if_ok ! ( self . inner. read( self . buf) ) ;
93
93
self . pos = 0 ;
94
94
}
@@ -360,13 +360,13 @@ mod test {
360
360
pub struct NullStream ;
361
361
362
362
impl Reader for NullStream {
363
- fn read ( & mut self , _: & mut [ u8 ] ) -> Option < uint > {
364
- None
363
+ fn read ( & mut self , _: & mut [ u8 ] ) -> io :: IoResult < uint > {
364
+ Err ( io :: standard_error ( io :: EndOfFile ) )
365
365
}
366
366
}
367
367
368
368
impl Writer for NullStream {
369
- fn write ( & mut self , _: & [ u8 ] ) { }
369
+ fn write ( & mut self , _: & [ u8 ] ) -> io :: IoResult < ( ) > { Ok ( ( ) ) }
370
370
}
371
371
372
372
/// A dummy reader intended at testing short-reads propagation.
@@ -375,8 +375,11 @@ mod test {
375
375
}
376
376
377
377
impl Reader for ShortReader {
378
- fn read ( & mut self , _: & mut [ u8 ] ) -> Option < uint > {
379
- self . lengths . shift ( )
378
+ fn read ( & mut self , _: & mut [ u8 ] ) -> io:: IoResult < uint > {
379
+ match self . lengths . shift ( ) {
380
+ Some ( i) => Ok ( i) ,
381
+ None => Err ( io:: standard_error ( io:: EndOfFile ) )
382
+ }
380
383
}
381
384
}
382
385
@@ -387,68 +390,68 @@ mod test {
387
390
388
391
let mut buf = [ 0 , 0 , 0 ] ;
389
392
let nread = reader. read ( buf) ;
390
- assert_eq ! ( Some ( 2 ) , nread) ;
393
+ assert_eq ! ( Ok ( 2 ) , nread) ;
391
394
assert_eq ! ( [ 0 , 1 , 0 ] , buf) ;
392
395
393
396
let mut buf = [ 0 ] ;
394
397
let nread = reader. read ( buf) ;
395
- assert_eq ! ( Some ( 1 ) , nread) ;
398
+ assert_eq ! ( Ok ( 1 ) , nread) ;
396
399
assert_eq ! ( [ 2 ] , buf) ;
397
400
398
401
let mut buf = [ 0 , 0 , 0 ] ;
399
402
let nread = reader. read ( buf) ;
400
- assert_eq ! ( Some ( 1 ) , nread) ;
403
+ assert_eq ! ( Ok ( 1 ) , nread) ;
401
404
assert_eq ! ( [ 3 , 0 , 0 ] , buf) ;
402
405
403
406
let nread = reader. read ( buf) ;
404
- assert_eq ! ( Some ( 1 ) , nread) ;
407
+ assert_eq ! ( Ok ( 1 ) , nread) ;
405
408
assert_eq ! ( [ 4 , 0 , 0 ] , buf) ;
406
409
407
- assert_eq ! ( None , reader. read( buf) ) ;
410
+ assert ! ( reader. read( buf) . is_err ( ) ) ;
408
411
}
409
412
410
413
#[ test]
411
414
fn test_buffered_writer ( ) {
412
415
let inner = MemWriter :: new ( ) ;
413
416
let mut writer = BufferedWriter :: with_capacity ( 2 , inner) ;
414
417
415
- writer. write ( [ 0 , 1 ] ) ;
418
+ writer. write ( [ 0 , 1 ] ) . unwrap ( ) ;
416
419
assert_eq ! ( [ ] , writer. get_ref( ) . get_ref( ) ) ;
417
420
418
- writer. write ( [ 2 ] ) ;
421
+ writer. write ( [ 2 ] ) . unwrap ( ) ;
419
422
assert_eq ! ( [ 0 , 1 ] , writer. get_ref( ) . get_ref( ) ) ;
420
423
421
- writer. write ( [ 3 ] ) ;
424
+ writer. write ( [ 3 ] ) . unwrap ( ) ;
422
425
assert_eq ! ( [ 0 , 1 ] , writer. get_ref( ) . get_ref( ) ) ;
423
426
424
- writer. flush ( ) ;
427
+ writer. flush ( ) . unwrap ( ) ;
425
428
assert_eq ! ( [ 0 , 1 , 2 , 3 ] , writer. get_ref( ) . get_ref( ) ) ;
426
429
427
- writer. write ( [ 4 ] ) ;
428
- writer. write ( [ 5 ] ) ;
430
+ writer. write ( [ 4 ] ) . unwrap ( ) ;
431
+ writer. write ( [ 5 ] ) . unwrap ( ) ;
429
432
assert_eq ! ( [ 0 , 1 , 2 , 3 ] , writer. get_ref( ) . get_ref( ) ) ;
430
433
431
- writer. write ( [ 6 ] ) ;
434
+ writer. write ( [ 6 ] ) . unwrap ( ) ;
432
435
assert_eq ! ( [ 0 , 1 , 2 , 3 , 4 , 5 ] ,
433
436
writer. get_ref( ) . get_ref( ) ) ;
434
437
435
- writer. write ( [ 7 , 8 ] ) ;
438
+ writer. write ( [ 7 , 8 ] ) . unwrap ( ) ;
436
439
assert_eq ! ( [ 0 , 1 , 2 , 3 , 4 , 5 , 6 ] ,
437
440
writer. get_ref( ) . get_ref( ) ) ;
438
441
439
- writer. write ( [ 9 , 10 , 11 ] ) ;
442
+ writer. write ( [ 9 , 10 , 11 ] ) . unwrap ( ) ;
440
443
assert_eq ! ( [ 0 , 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 , 10 , 11 ] ,
441
444
writer. get_ref( ) . get_ref( ) ) ;
442
445
443
- writer. flush ( ) ;
446
+ writer. flush ( ) . unwrap ( ) ;
444
447
assert_eq ! ( [ 0 , 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 , 10 , 11 ] ,
445
448
writer. get_ref( ) . get_ref( ) ) ;
446
449
}
447
450
448
451
#[ test]
449
452
fn test_buffered_writer_inner_flushes ( ) {
450
453
let mut w = BufferedWriter :: with_capacity ( 3 , MemWriter :: new ( ) ) ;
451
- w. write ( [ 0 , 1 ] ) ;
454
+ w. write ( [ 0 , 1 ] ) . unwrap ( ) ;
452
455
assert_eq ! ( [ ] , w. get_ref( ) . get_ref( ) ) ;
453
456
let w = w. unwrap ( ) ;
454
457
assert_eq ! ( [ 0 , 1 ] , w. get_ref( ) ) ;
@@ -461,47 +464,49 @@ mod test {
461
464
struct S ;
462
465
463
466
impl io:: Writer for S {
464
- fn write ( & mut self , _: & [ u8 ] ) { }
467
+ fn write ( & mut self , _: & [ u8 ] ) -> io :: IoResult < ( ) > { Ok ( ( ) ) }
465
468
}
466
469
467
470
impl io:: Reader for S {
468
- fn read ( & mut self , _: & mut [ u8 ] ) -> Option < uint > { None }
471
+ fn read ( & mut self , _: & mut [ u8 ] ) -> io:: IoResult < uint > {
472
+ Err ( io:: standard_error ( io:: EndOfFile ) )
473
+ }
469
474
}
470
475
471
476
let mut stream = BufferedStream :: new ( S ) ;
472
477
let mut buf = [ ] ;
473
- stream. read ( buf) ;
474
- stream. write ( buf) ;
475
- stream. flush ( ) ;
478
+ assert ! ( stream. read( buf) . is_err ( ) ) ;
479
+ stream. write ( buf) . unwrap ( ) ;
480
+ stream. flush ( ) . unwrap ( ) ;
476
481
}
477
482
478
483
#[ test]
479
484
fn test_read_until ( ) {
480
485
let inner = MemReader :: new ( ~[ 0 , 1 , 2 , 1 , 0 ] ) ;
481
486
let mut reader = BufferedReader :: with_capacity ( 2 , inner) ;
482
- assert_eq ! ( reader. read_until( 0 ) , Some ( ~[ 0 ] ) ) ;
483
- assert_eq ! ( reader. read_until( 2 ) , Some ( ~[ 1 , 2 ] ) ) ;
484
- assert_eq ! ( reader. read_until( 1 ) , Some ( ~[ 1 ] ) ) ;
485
- assert_eq ! ( reader. read_until( 8 ) , Some ( ~[ 0 ] ) ) ;
486
- assert_eq ! ( reader. read_until( 9 ) , None ) ;
487
+ assert_eq ! ( reader. read_until( 0 ) , Ok ( ~[ 0 ] ) ) ;
488
+ assert_eq ! ( reader. read_until( 2 ) , Ok ( ~[ 1 , 2 ] ) ) ;
489
+ assert_eq ! ( reader. read_until( 1 ) , Ok ( ~[ 1 ] ) ) ;
490
+ assert_eq ! ( reader. read_until( 8 ) , Ok ( ~[ 0 ] ) ) ;
491
+ assert ! ( reader. read_until( 9 ) . is_err ( ) ) ;
487
492
}
488
493
489
494
#[ test]
490
495
fn test_line_buffer ( ) {
491
496
let mut writer = LineBufferedWriter :: new ( MemWriter :: new ( ) ) ;
492
- writer. write ( [ 0 ] ) ;
497
+ writer. write ( [ 0 ] ) . unwrap ( ) ;
493
498
assert_eq ! ( writer. get_ref( ) . get_ref( ) , [ ] ) ;
494
- writer. write ( [ 1 ] ) ;
499
+ writer. write ( [ 1 ] ) . unwrap ( ) ;
495
500
assert_eq ! ( writer. get_ref( ) . get_ref( ) , [ ] ) ;
496
- writer. flush ( ) ;
501
+ writer. flush ( ) . unwrap ( ) ;
497
502
assert_eq ! ( writer. get_ref( ) . get_ref( ) , [ 0 , 1 ] ) ;
498
- writer. write ( [ 0 , '\n' as u8 , 1 , '\n' as u8 , 2 ] ) ;
503
+ writer. write ( [ 0 , '\n' as u8 , 1 , '\n' as u8 , 2 ] ) . unwrap ( ) ;
499
504
assert_eq ! ( writer. get_ref( ) . get_ref( ) ,
500
505
[ 0 , 1 , 0 , '\n' as u8 , 1 , '\n' as u8 ] ) ;
501
- writer. flush ( ) ;
506
+ writer. flush ( ) . unwrap ( ) ;
502
507
assert_eq ! ( writer. get_ref( ) . get_ref( ) ,
503
508
[ 0 , 1 , 0 , '\n' as u8 , 1 , '\n' as u8 , 2 ] ) ;
504
- writer. write ( [ 3 , '\n' as u8 ] ) ;
509
+ writer. write ( [ 3 , '\n' as u8 ] ) . unwrap ( ) ;
505
510
assert_eq ! ( writer. get_ref( ) . get_ref( ) ,
506
511
[ 0 , 1 , 0 , '\n' as u8 , 1 , '\n' as u8 , 2 , 3 , '\n' as u8 ] ) ;
507
512
}
@@ -510,10 +515,10 @@ mod test {
510
515
fn test_read_line ( ) {
511
516
let in_buf = MemReader :: new ( bytes ! ( "a\n b\n c" ) . to_owned ( ) ) ;
512
517
let mut reader = BufferedReader :: with_capacity ( 2 , in_buf) ;
513
- assert_eq ! ( reader. read_line( ) , Some ( ~"a\n ") ) ;
514
- assert_eq ! ( reader. read_line( ) , Some ( ~"b\n ") ) ;
515
- assert_eq ! ( reader. read_line( ) , Some ( ~"c"));
516
- assert_eq !(reader.read_line(), None );
518
+ assert_eq ! ( reader. read_line( ) , Ok ( ~"a\n ") ) ;
519
+ assert_eq ! ( reader. read_line( ) , Ok ( ~"b\n ") ) ;
520
+ assert_eq ! ( reader. read_line( ) , Ok ( ~"c"));
521
+ assert !(reader.read_line().is_err() );
517
522
}
518
523
519
524
#[test]
@@ -532,20 +537,20 @@ mod test {
532
537
let inner = ShortReader { lengths : ~[ 0 , 1 , 2 , 0 , 1 , 0 ] } ;
533
538
let mut reader = BufferedReader :: new ( inner) ;
534
539
let mut buf = [ 0 , 0 ] ;
535
- assert_eq ! ( reader. read( buf) , Some ( 0 ) ) ;
536
- assert_eq ! ( reader. read( buf) , Some ( 1 ) ) ;
537
- assert_eq ! ( reader. read( buf) , Some ( 2 ) ) ;
538
- assert_eq ! ( reader. read( buf) , Some ( 0 ) ) ;
539
- assert_eq ! ( reader. read( buf) , Some ( 1 ) ) ;
540
- assert_eq ! ( reader. read( buf) , Some ( 0 ) ) ;
541
- assert_eq ! ( reader. read( buf) , None ) ;
540
+ assert_eq ! ( reader. read( buf) , Ok ( 0 ) ) ;
541
+ assert_eq ! ( reader. read( buf) , Ok ( 1 ) ) ;
542
+ assert_eq ! ( reader. read( buf) , Ok ( 2 ) ) ;
543
+ assert_eq ! ( reader. read( buf) , Ok ( 0 ) ) ;
544
+ assert_eq ! ( reader. read( buf) , Ok ( 1 ) ) ;
545
+ assert_eq ! ( reader. read( buf) , Ok ( 0 ) ) ;
546
+ assert ! ( reader. read( buf) . is_err ( ) ) ;
542
547
}
543
548
544
549
#[ test]
545
550
fn read_char_buffered ( ) {
546
551
let buf = [ 195u8 , 159u8 ] ;
547
552
let mut reader = BufferedReader :: with_capacity ( 1 , BufReader :: new ( buf) ) ;
548
- assert_eq ! ( reader. read_char( ) , Some ( 'ß' ) ) ;
553
+ assert_eq ! ( reader. read_char( ) , Ok ( 'ß' ) ) ;
549
554
}
550
555
551
556
#[ bench]
0 commit comments