@@ -470,10 +470,49 @@ fn take_seek() -> io::Result<()> {
470470 assert_eq ! ( buf2, [ b'2' , b'3' ] ) ;
471471
472472 assert_eq ! ( take. seek( SeekFrom :: Current ( 2 ) ) ?, 4 ) ;
473-
474473 Ok ( ( ) )
475474}
476475
476+ #[ test]
477+ #[ should_panic]
478+ fn take_seek_out_of_bounds_start ( ) {
479+ let buf = Cursor :: new ( b"0123456789" ) ;
480+ let mut take = buf. take ( 2 ) ;
481+ take. seek ( SeekFrom :: Start ( 3 ) ) . unwrap ( ) ;
482+ }
483+
484+ #[ test]
485+ #[ should_panic]
486+ fn take_seek_out_of_bounds_end_forward ( ) {
487+ let buf = Cursor :: new ( b"0123456789" ) ;
488+ let mut take = buf. take ( 2 ) ;
489+ take. seek ( SeekFrom :: End ( 1 ) ) . unwrap ( ) ;
490+ }
491+
492+ #[ test]
493+ #[ should_panic]
494+ fn take_seek_out_of_bounds_end_before_start ( ) {
495+ let buf = Cursor :: new ( b"0123456789" ) ;
496+ let mut take = buf. take ( 2 ) ;
497+ take. seek ( SeekFrom :: End ( -3 ) ) . unwrap ( ) ;
498+ }
499+
500+ #[ test]
501+ #[ should_panic]
502+ fn take_seek_out_of_bounds_current_before_start ( ) {
503+ let buf = Cursor :: new ( b"0123456789" ) ;
504+ let mut take = buf. take ( 2 ) ;
505+ take. seek ( SeekFrom :: Current ( -1 ) ) . unwrap ( ) ;
506+ }
507+
508+ #[ test]
509+ #[ should_panic]
510+ fn take_seek_out_of_bounds_current_after_end ( ) {
511+ let buf = Cursor :: new ( b"0123456789" ) ;
512+ let mut take = buf. take ( 2 ) ;
513+ take. seek ( SeekFrom :: Current ( 3 ) ) . unwrap ( ) ;
514+ }
515+
477516struct ExampleHugeRangeOfZeroes {
478517 position : u64 ,
479518}
0 commit comments