Add tests for out of bounds · rust-lang/rust@6ee1a13 (original) (raw)

Original file line number Diff line number Diff line change
@@ -470,10 +470,49 @@ fn take_seek() -> io::Result<()> {
470 470 assert_eq!(buf2, [b'2', b'3']);
471 471
472 472 assert_eq!(take.seek(SeekFrom::Current(2))?, 4);
473 -
474 473 Ok(())
475 474 }
476 475
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 +
477 516 struct ExampleHugeRangeOfZeroes {
478 517 position: u64,
479 518 }