summaryrefslogtreecommitdiff
path: root/netfs/unittests/testCore.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'netfs/unittests/testCore.cpp')
-rw-r--r--netfs/unittests/testCore.cpp16
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 {};