| 535 | |
| 536 | #[test] |
| 537 | fn write_at() { |
| 538 | let dir = tempfile::tempdir().unwrap(); |
| 539 | let file = check!(OpenOptions::new() |
| 540 | .create_new(true) |
| 541 | .read(true) |
| 542 | .write(true) |
| 543 | .open(dir.path().join("file"))); |
| 544 | check!(write!(&file, "abcdefghijklmnopqrstuvwxyz")); |
| 545 | let buf0 = b"EFGHIJKL".to_vec(); |
| 546 | let buf1 = b"MNOPQRST".to_vec(); |
| 547 | let nwritten0 = check!(file.write_at(&buf0, 4)); |
| 548 | let nwritten1 = check!(file.write_at(&buf1, 12)); |
| 549 | assert_eq!(check!(file.stream_position()), 26); |
| 550 | let mut back = String::new(); |
| 551 | check!(file.seek(std::io::SeekFrom::Start(0))); |
| 552 | check!(file.read_to_string(&mut back)); |
| 553 | if nwritten0 == 8 { |
| 554 | if nwritten1 == 8 { |
| 555 | assert_eq!(back, "abcdEFGHIJKLMNOPQRSTuvwxyz"); |
| 556 | } else { |
| 557 | assert_eq!(&back.as_bytes()[0..4 + nwritten0], b"abcdEFGHIJKL"); |
| 558 | } |
| 559 | } |
| 560 | assert!(nwritten0 <= 8); |
| 561 | assert!(nwritten1 <= 8); |
| 562 | } |
| 563 | |
| 564 | #[test] |
| 565 | fn write_after_end() { |