summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--netfs/unittests/testCore.cpp57
1 files changed, 57 insertions, 0 deletions
diff --git a/netfs/unittests/testCore.cpp b/netfs/unittests/testCore.cpp
index 083cbab..2f1c512 100644
--- a/netfs/unittests/testCore.cpp
+++ b/netfs/unittests/testCore.cpp
@@ -184,6 +184,63 @@ BOOST_AUTO_TEST_CASE( directories )
BOOST_REQUIRE_EQUAL(fuse->opendir("/test", &fi), -ENOENT);
}
+BOOST_AUTO_TEST_CASE( files )
+{
+ struct fuse_file_info fi;
+ memset(&fi, 0, sizeof(fi));
+ struct stat st, st2;
+ memset(&st, 0, sizeof(st));
+ memset(&st2, 0, sizeof(st2));
+ fi.flags = O_RDWR;
+ BOOST_REQUIRE_EQUAL(fuse->create("/test", 0600, &fi), 0);
+ BOOST_REQUIRE_EQUAL(fuse->release("/test", &fi), 0);
+ BOOST_REQUIRE_EQUAL(fuse->release("/test", &fi), -EBADF);
+ BOOST_REQUIRE_EQUAL(fuse->create("/test", 0600, &fi), -EEXIST);
+
+ BOOST_REQUIRE_EQUAL(fuse->open("/test", &fi), 0);
+ BOOST_REQUIRE_EQUAL(fuse->write("/test", "some test buffer", 16, 0, &fi), 16);
+ BOOST_REQUIRE_EQUAL(fuse->getattr("/test", &st), 0);
+ BOOST_REQUIRE_EQUAL(st.st_size, 16);
+ BOOST_REQUIRE_EQUAL(fuse->getattr("/test2", &st), -ENOENT);
+ BOOST_REQUIRE_EQUAL(fuse->rename("/test", "/test2"), 0);
+ BOOST_REQUIRE_EQUAL(fuse->getattr("/test", &st), -ENOENT);
+ BOOST_REQUIRE_EQUAL(fuse->getattr("/test2", &st2), 0);
+ BOOST_REQUIRE_EQUAL(st, st2);
+ BOOST_REQUIRE_EQUAL(fuse->fgetattr("/test2", &st2, &fi), 0);
+ BOOST_REQUIRE_EQUAL(st, st2);
+ BOOST_REQUIRE_EQUAL(st2.st_size, 16);
+ BOOST_REQUIRE_EQUAL(fuse->write("/test2", "BUFFER some", 11, 10, &fi), 11);
+ BOOST_REQUIRE_EQUAL(fuse->fgetattr("/test2", &st2, &fi), 0);
+ BOOST_REQUIRE_EQUAL(st2.st_size, 21);
+ char buf[11];
+ memset(&buf, 0, sizeof(buf));
+ BOOST_REQUIRE_EQUAL(fuse->read("/test2", buf, 10, 5, &fi), 10);
+ BOOST_REQUIRE_EQUAL(buf, "test BUFFE");
+ BOOST_REQUIRE_EQUAL(fuse->ftruncate("/test2", 11, &fi), 0);
+ BOOST_REQUIRE_EQUAL(fuse->fgetattr("/test2", &st2, &fi), 0);
+ BOOST_REQUIRE_EQUAL(st2.st_size, 11);
+ memset(&buf, 0, sizeof(buf));
+ BOOST_REQUIRE_EQUAL(fuse->read("/test2", buf, 10, 5, &fi), 6);
+ BOOST_REQUIRE_EQUAL(buf, "test B");
+ BOOST_REQUIRE_EQUAL(fuse->truncate("/test2", 7), 0);
+ BOOST_REQUIRE_EQUAL(fuse->fgetattr("/test2", &st2, &fi), 0);
+ BOOST_REQUIRE_EQUAL(st2.st_size, 7);
+ memset(&buf, 0, sizeof(buf));
+ BOOST_REQUIRE_EQUAL(fuse->read("/test2", buf, 10, 5, &fi), 2);
+ BOOST_REQUIRE_EQUAL(buf, "te");
+ BOOST_REQUIRE_EQUAL(fuse->release("/test2", &fi), 0);
+
+ BOOST_REQUIRE_EQUAL(fuse->link("/test3", "/test2"), -ENOENT);
+ BOOST_REQUIRE_EQUAL(fuse->link("/test2", "/test3"), 0);
+ BOOST_REQUIRE_EQUAL(fuse->getattr("/test2", &st), 0);
+ BOOST_REQUIRE_EQUAL(fuse->getattr("/test3", &st2), 0);
+ BOOST_REQUIRE_EQUAL(st, st2);
+ BOOST_REQUIRE_EQUAL(fuse->unlink("/test2"), 0);
+ BOOST_REQUIRE_EQUAL(fuse->unlink("/test2"), -ENOENT);
+ BOOST_REQUIRE_EQUAL(fuse->unlink("/test3"), 0);
+ BOOST_REQUIRE_EQUAL(fuse->unlink("/test3"), -ENOENT);
+}
+
BOOST_AUTO_TEST_SUITE_END();
BOOST_AUTO_TEST_CASE( testNoAuthNoPass )