diff options
| author | Treehugger Robot <treehugger-gerrit@google.com> | 2021-10-18 22:15:38 +0000 |
|---|---|---|
| committer | Gerrit Code Review <noreply-gerritcodereview@google.com> | 2021-10-18 22:15:38 +0000 |
| commit | a3c6e7030c128fbcb060ddbd6e89cf5ad2b95d05 (patch) | |
| tree | 619545ee8e093cad2d79464ff9b43a407d5fcdd4 /tests/sys_uio_test.cpp | |
| parent | ad60768bdfc4680edc07422693381ac152d74e37 (diff) | |
| parent | cf59e19e22fc7c4795fd955eeecd1f457d79eba0 (diff) | |
Merge "Add preadv2/pwritev2 wrappers."
Diffstat (limited to 'tests/sys_uio_test.cpp')
| -rw-r--r-- | tests/sys_uio_test.cpp | 40 |
1 files changed, 40 insertions, 0 deletions
diff --git a/tests/sys_uio_test.cpp b/tests/sys_uio_test.cpp index 846004148..aac08e764 100644 --- a/tests/sys_uio_test.cpp +++ b/tests/sys_uio_test.cpp @@ -16,7 +16,11 @@ #include <gtest/gtest.h> +#include <errno.h> +#include <string.h> +#include <sys/types.h> #include <sys/uio.h> +#include <unistd.h> #include <android-base/file.h> @@ -68,6 +72,42 @@ TEST(sys_uio, preadv64_pwritev64) { TestPreadVPwriteV(preadv64, pwritev64); } +template <typename ReadFn, typename WriteFn> +void TestPreadV2PwriteV2(ReadFn read_fn, WriteFn write_fn) { + TemporaryFile tf; + + char buf[] = "world"; + iovec ios[] = {{buf, 5}}; + + ASSERT_EQ(5, write_fn(tf.fd, ios, 1, 5, 0)) << strerror(errno); + ASSERT_EQ(0, lseek(tf.fd, 0, SEEK_CUR)); + + strcpy(buf, "hello"); + ASSERT_EQ(5, write_fn(tf.fd, ios, 1, 0, 0)) << strerror(errno); + ASSERT_EQ(0, lseek(tf.fd, 0, SEEK_CUR)); + + ASSERT_EQ(5, read_fn(tf.fd, ios, 1, 5, 0)) << strerror(errno); + ASSERT_STREQ("world", buf); + ASSERT_EQ(5, read_fn(tf.fd, ios, 1, 0, 0)) << strerror(errno); + ASSERT_STREQ("hello", buf); +} + +TEST(sys_uio, preadv2_pwritev2) { +#if defined(__BIONIC__) + TestPreadV2PwriteV2(preadv2, pwritev2); +#else + GTEST_SKIP() << "preadv2/pwritev2 not available"; +#endif +} + +TEST(sys_uio, preadv64v2_pwritev64v2) { +#if defined(__BIONIC__) + TestPreadV2PwriteV2(preadv64v2, pwritev64v2); +#else + GTEST_SKIP() << "preadv2/pwritev2 not available"; +#endif +} + TEST(sys_uio, process_vm_readv) { ASSERT_EQ(0, process_vm_readv(0, nullptr, 0, nullptr, 0, 0)); |
