diff options
Diffstat (limited to 'netfs/unittests/testCore.cpp')
-rw-r--r-- | netfs/unittests/testCore.cpp | 16 |
1 files changed, 16 insertions, 0 deletions
diff --git a/netfs/unittests/testCore.cpp b/netfs/unittests/testCore.cpp index 0f87b02..ee079a8 100644 --- a/netfs/unittests/testCore.cpp +++ b/netfs/unittests/testCore.cpp @@ -297,6 +297,22 @@ BOOST_AUTO_TEST_CASE( files ) BOOST_REQUIRE_EQUAL(fuse->unlink("/test3"), -ENOENT); } +BOOST_AUTO_TEST_CASE( files_copy_range ) +{ + struct fuse_file_info fiin {}, fiout {}; + fiin.flags = O_RDWR; + fiout.flags = O_RDWR; + BOOST_REQUIRE_EQUAL(fuse->create("/src", 0600, &fiin), 0); + BOOST_REQUIRE_EQUAL(fuse->create("/dst", 0600, &fiout), 0); + BOOST_REQUIRE_EQUAL(fuse->write("/src", "hello world.", 12, 0, &fiin), 12); + BOOST_REQUIRE_EQUAL(fuse->copy_file_range("/src", &fiin, 6, "/dst", &fiout, 0, 5, 0), 5); + std::array<char, 5> buf {}; + BOOST_REQUIRE_EQUAL(fuse->read("/dst", buf.data(), 5, 0, &fiout), 5); + BOOST_REQUIRE_EQUAL(memcmp("world", buf.data(), buf.size()), 0); + BOOST_REQUIRE_EQUAL(fuse->release("/src", &fiin), 0); + BOOST_REQUIRE_EQUAL(fuse->release("/dst", &fiout), 0); +} + BOOST_AUTO_TEST_CASE( bgwriteOverlapped, * boost::unit_test::timeout(2) ) { struct fuse_file_info fi {}; |