| 598 | |
| 599 | #[test] |
| 600 | fn write() { |
| 601 | let dir = tempfile::tempdir().unwrap(); |
| 602 | let file = check!(OpenOptions::new() |
| 603 | .create_new(true) |
| 604 | .read(true) |
| 605 | .write(true) |
| 606 | .open(dir.path().join("file"))); |
| 607 | check!(write!(&file, "abcdefghijklmnopqrstuvwxyz")); |
| 608 | let buf0 = b"EFGHIJKL".to_vec(); |
| 609 | let buf1 = b"MNOPQRST".to_vec(); |
| 610 | let nwritten0 = check!(file.write(&buf0)); |
| 611 | let nwritten1 = check!(file.write(&buf1)); |
| 612 | assert_eq!( |
| 613 | check!(file.stream_position()), |
| 614 | (26 + nwritten0 + nwritten1) as u64 |
| 615 | ); |
| 616 | let mut back = String::new(); |
| 617 | check!(file.seek(std::io::SeekFrom::Start(0))); |
| 618 | check!(file.read_to_string(&mut back)); |
| 619 | if nwritten0 == 8 { |
| 620 | if nwritten1 == 8 { |
| 621 | assert_eq!(back, "abcdefghijklmnopqrstuvwxyzEFGHIJKLMNOPQRST"); |
| 622 | } else { |
| 623 | assert_eq!(&back.as_bytes()[22..26 + nwritten0], b"wxyzEFGHIJKL"); |
| 624 | } |
| 625 | } |
| 626 | assert!(nwritten0 <= 8); |
| 627 | assert!(nwritten1 <= 8); |
| 628 | } |