#[macro_use] mod sys_common; use std::fs::OpenOptions; use system_interface::fs::FileIoExt; use system_interface::io::IoExt; #[test] fn read_to_end_at() { let dir = tempfile::tempdir().unwrap(); let file = check!(OpenOptions::new() .create_new(true) .read(true) .write(true) .open(dir.path().join("file"))); check!(write!(&file, "abcdefghijklmnopqrstuvwxyz")); let mut buf = Vec::new(); check!(file.read_to_end_at(&mut buf, 4)); assert_eq!(check!(file.stream_position()), 26); assert_eq!(&buf, b"efghijklmnopqrstuvwxyz"); } #[test] fn read_to_string_at() { let dir = tempfile::tempdir().unwrap(); let file = check!(OpenOptions::new() .create_new(true) .read(true) .write(true) .open(dir.path().join("file"))); check!(write!(&file, "abcdefghijklmnopqrstuvwxyz")); let mut buf = String::new(); check!(file.read_to_string_at(&mut buf, 4)); assert_eq!(check!(file.stream_position()), 26); assert_eq!(buf, "efghijklmnopqrstuvwxyz"); } #[test] fn read_to_string_at_error() { let dir = tempfile::tempdir().unwrap(); let file = check!(OpenOptions::new() .create_new(true) .read(true) .write(true) .open(dir.path().join("file"))); check!(file.write_all(b"abcdefghijklmnopqrstuvwxyz\xc0")); let mut buf = String::new(); assert!(file.read_to_string_at(&mut buf, 4).is_err()); assert!(buf.is_empty()); }