@@ -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 |
} |