Skip to content

Commit ab57e7b

Browse files
committed
std::io::cursor Added test for seeking beyond i64.
1 parent a797b6e commit ab57e7b

File tree

1 file changed

+37
-0
lines changed

1 file changed

+37
-0
lines changed

src/libstd/io/cursor.rs

+37
Original file line numberDiff line numberDiff line change
@@ -526,6 +526,43 @@ mod tests {
526526
assert_eq!(r.write(&[3]).unwrap(), 0);
527527
}
528528

529+
#[test]
530+
fn seek_past_i64() {
531+
let buf = [0xff];
532+
let mut r = Cursor::new(&buf[..]);
533+
assert_eq!(r.seek(SeekFrom::Start(6)).unwrap(), 6);
534+
assert_eq!(r.seek(SeekFrom::Current(0x7ffffffffffffff0)).unwrap(), 0x7ffffffffffffff6);
535+
assert_eq!(r.seek(SeekFrom::Current(0x10)).unwrap(), 0x8000000000000006);
536+
assert_eq!(r.seek(SeekFrom::Current(0)).unwrap(), 0x8000000000000006);
537+
assert!(r.seek(SeekFrom::Current(0x7ffffffffffffffd)).is_err());
538+
assert_eq!(r.seek(SeekFrom::Current(-0x8000000000000000)).unwrap(), 6);
539+
540+
let mut r = Cursor::new(vec![10]);
541+
assert_eq!(r.seek(SeekFrom::Start(6)).unwrap(), 6);
542+
assert_eq!(r.seek(SeekFrom::Current(0x7ffffffffffffff0)).unwrap(), 0x7ffffffffffffff6);
543+
assert_eq!(r.seek(SeekFrom::Current(0x10)).unwrap(), 0x8000000000000006);
544+
assert_eq!(r.seek(SeekFrom::Current(0)).unwrap(), 0x8000000000000006);
545+
assert!(r.seek(SeekFrom::Current(0x7ffffffffffffffd)).is_err());
546+
assert_eq!(r.seek(SeekFrom::Current(-0x8000000000000000)).unwrap(), 6);
547+
548+
let mut buf = [0];
549+
let mut r = Cursor::new(&mut buf[..]);
550+
assert_eq!(r.seek(SeekFrom::Start(6)).unwrap(), 6);
551+
assert_eq!(r.seek(SeekFrom::Current(0x7ffffffffffffff0)).unwrap(), 0x7ffffffffffffff6);
552+
assert_eq!(r.seek(SeekFrom::Current(0x10)).unwrap(), 0x8000000000000006);
553+
assert_eq!(r.seek(SeekFrom::Current(0)).unwrap(), 0x8000000000000006);
554+
assert!(r.seek(SeekFrom::Current(0x7ffffffffffffffd)).is_err());
555+
assert_eq!(r.seek(SeekFrom::Current(-0x8000000000000000)).unwrap(), 6);
556+
557+
let mut r = Cursor::new(vec![10].into_boxed_slice());
558+
assert_eq!(r.seek(SeekFrom::Start(6)).unwrap(), 6);
559+
assert_eq!(r.seek(SeekFrom::Current(0x7ffffffffffffff0)).unwrap(), 0x7ffffffffffffff6);
560+
assert_eq!(r.seek(SeekFrom::Current(0x10)).unwrap(), 0x8000000000000006);
561+
assert_eq!(r.seek(SeekFrom::Current(0)).unwrap(), 0x8000000000000006);
562+
assert!(r.seek(SeekFrom::Current(0x7ffffffffffffffd)).is_err());
563+
assert_eq!(r.seek(SeekFrom::Current(-0x8000000000000000)).unwrap(), 6);
564+
}
565+
529566
#[test]
530567
fn seek_before_0() {
531568
let buf = [0xff];

0 commit comments

Comments
 (0)