about summary refs log tree commit diff
path: root/library/std/src/os/unix/fs/tests.rs
diff options
context:
space:
mode:
authorBenoît du Garreau <bdgdlm@outlook.com>2023-03-02 11:50:37 +0100
committerBenoît du Garreau <bdgdlm@outlook.com>2023-03-02 11:51:20 +0100
commit23cd4cee05cf8b07d341dd01e4eafebad76da5c4 (patch)
treef9d37d0d938d25adba5acaa9a51045debfdec043 /library/std/src/os/unix/fs/tests.rs
parent1e63f08c85d7bc2fb9cf2fad21d6d17359b0be15 (diff)
downloadrust-23cd4cee05cf8b07d341dd01e4eafebad76da5c4.tar.gz
rust-23cd4cee05cf8b07d341dd01e4eafebad76da5c4.zip
Add basic tests
Diffstat (limited to 'library/std/src/os/unix/fs/tests.rs')
-rw-r--r--library/std/src/os/unix/fs/tests.rs57
1 files changed, 57 insertions, 0 deletions
diff --git a/library/std/src/os/unix/fs/tests.rs b/library/std/src/os/unix/fs/tests.rs
new file mode 100644
index 00000000000..67f607bd468
--- /dev/null
+++ b/library/std/src/os/unix/fs/tests.rs
@@ -0,0 +1,57 @@
+use super::*;
+
+#[test]
+fn read_vectored_at() {
+    let msg = b"preadv is working!";
+    let dir = crate::sys_common::io::test::tmpdir();
+
+    let filename = dir.join("preadv.txt");
+    {
+        let mut file = fs::File::create(&filename).unwrap();
+        file.write_all(msg).unwrap();
+    }
+    {
+        let file = fs::File::open(&filename).unwrap();
+        let mut buf0 = [0; 4];
+        let mut buf1 = [0; 3];
+
+        let mut iovec = [io::IoSliceMut::new(&mut buf0), io::IoSliceMut::new(&mut buf1)];
+
+        let n = file.read_vectored_at(&mut iovec, 4).unwrap();
+
+        assert!(n == 4 || n == 7);
+        assert_eq!(&buf0, b"dv i");
+
+        if n == 7 {
+            assert_eq!(&buf1, b"s w");
+        }
+    }
+}
+
+#[test]
+fn write_vectored_at() {
+    let msg = b"pwritev is not working!";
+    let dir = crate::sys_common::io::test::tmpdir();
+
+    let filename = dir.join("preadv.txt");
+    {
+        let mut file = fs::File::create(&filename).unwrap();
+        file.write_all(msg).unwrap();
+    }
+    let expected = {
+        let file = fs::File::options().write(true).open(&filename).unwrap();
+        let buf0 = b"    ";
+        let buf1 = b"great  ";
+
+        let iovec = [io::IoSlice::new(buf0), io::IoSlice::new(buf1)];
+
+        let n = file.write_vectored_at(&iovec, 11).unwrap();
+
+        assert!(n == 4 || n == 11);
+
+        if n == 4 { b"pwritev is     working!" } else { b"pwritev is     great  !" }
+    };
+
+    let content = fs::read(&filename).unwrap();
+    assert_eq!(&content, expected);
+}