#[macro_use] mod sys_common; use std::fs::OpenOptions; use std::io::IoSlice; #[cfg(any(not(windows), feature = "cap_std_impls"))] use sys_common::io::tmpdir; use system_interface::fs::FileIoExt; use system_interface::io::IoExt; #[cfg(any(not(windows), feature = "cap_std_impls"))] #[test] fn cap_append_all_vectored() { let tmpdir = tmpdir(); let file = check!(tmpdir.open_with( "file", cap_std::fs::OpenOptions::new() .create_new(true) .read(true) .write(true) )); check!(write!(&file, "abcdefghijklmnopqrstuvwxyz")); check!(file.seek(std::io::SeekFrom::Start(0))); let buf0 = b"EFGHIJKL".to_vec(); let buf1 = b"MNOPQRST".to_vec(); let mut bufs = vec![IoSlice::new(&buf0), IoSlice::new(&buf1)]; check!(file.append_all_vectored(&mut bufs)); assert_eq!(check!(file.stream_position()), 0); let mut back = String::new(); check!(file.read_to_string(&mut back)); assert_eq!(back, "abcdefghijklmnopqrstuvwxyzEFGHIJKLMNOPQRST"); } #[test] fn append_all_vectored() { 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")); check!(file.seek(std::io::SeekFrom::Start(0))); let buf0 = b"EFGHIJKL".to_vec(); let buf1 = b"MNOPQRST".to_vec(); let mut bufs = vec![IoSlice::new(&buf0), IoSlice::new(&buf1)]; check!(file.append_all_vectored(&mut bufs)); assert_eq!(check!(file.stream_position()), 0); let mut back = String::new(); check!(file.read_to_string(&mut back)); assert_eq!(back, "abcdefghijklmnopqrstuvwxyzEFGHIJKLMNOPQRST"); } #[test] fn append_vectored() { 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")); check!(file.seek(std::io::SeekFrom::Start(0))); let buf0 = b"EFGHIJKL".to_vec(); let buf1 = b"MNOPQRST".to_vec(); let bufs = vec![IoSlice::new(&buf0), IoSlice::new(&buf1)]; let nwritten = check!(file.append_vectored(&bufs)); assert_eq!(check!(file.stream_position()), 0); let mut back = String::new(); check!(file.read_to_string(&mut back)); assert_eq!( &"abcdefghijklmnopqrstuvwxyzEFGHIJKLMNOPQRST"[..26 + nwritten], &back ); } #[test] fn append_all() { 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")); check!(file.seek(std::io::SeekFrom::Start(0))); let buf0 = b"EFGHIJKL".to_vec(); let buf1 = b"MNOPQRST".to_vec(); check!(file.append_all(&buf0)); check!(file.append_all(&buf1)); assert_eq!(check!(file.stream_position()), 0); let mut back = String::new(); check!(file.read_to_string(&mut back)); assert_eq!(back, "abcdefghijklmnopqrstuvwxyzEFGHIJKLMNOPQRST"); } #[test] fn append() { 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")); check!(file.seek(std::io::SeekFrom::Start(0))); let buf0 = b"EFGHIJKL".to_vec(); let buf1 = b"MNOPQRST".to_vec(); let nwritten0 = check!(file.append(&buf0)); let nwritten1 = check!(file.append(&buf1)); assert_eq!(check!(file.stream_position()), 0); let mut back = String::new(); check!(file.read_to_string(&mut back)); assert_eq!( &"abcdefghijklmnopqrstuvwxyzEFGHIJKLMNOPQRST"[..26 + nwritten0 + nwritten1], &back ); }