Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(4)

Unified Diff: native_client_sdk/src/libraries/nacl_mounts_test/kernel_wrap_test.cc

Issue 11066105: [NaCl SDK] nacl_mounts: wrap functions. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: win fix Created 8 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: native_client_sdk/src/libraries/nacl_mounts_test/kernel_wrap_test.cc
diff --git a/native_client_sdk/src/libraries/nacl_mounts_test/kernel_wrap_test.cc b/native_client_sdk/src/libraries/nacl_mounts_test/kernel_wrap_test.cc
new file mode 100644
index 0000000000000000000000000000000000000000..7a7f920e474958b262b300f68f2d8149a0d9b882
--- /dev/null
+++ b/native_client_sdk/src/libraries/nacl_mounts_test/kernel_wrap_test.cc
@@ -0,0 +1,257 @@
+/* Copyright (c) 2012 The Chromium Authors. All rights reserved.
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+
+#include <string>
+#include <vector>
+#include "gtest/gtest.h"
+#include "nacl_mounts/kernel_proxy.h"
+#include "nacl_mounts/kernel_intercept.h"
+#include "nacl_mounts/kernel_wrap.h"
+#include "kernel_proxy_mock.h"
+
+using ::testing::StrEq;
+using ::testing::_;
+
+namespace {
+
+#define COMPARE_FIELD(f) \
+ if (arg->f != statbuf->f) { \
+ *result_listener << "mismatch of field \""#f"\". " \
+ "expected: " << statbuf->f << \
+ " actual: " << arg->f; \
+ return false; \
+ }
+
+MATCHER_P(IsEqualToStatbuf, statbuf, "") {
+ COMPARE_FIELD(st_dev);
+ COMPARE_FIELD(st_ino);
+ COMPARE_FIELD(st_mode);
+ COMPARE_FIELD(st_nlink);
+ COMPARE_FIELD(st_uid);
+ COMPARE_FIELD(st_gid);
+ COMPARE_FIELD(st_rdev);
+ COMPARE_FIELD(st_size);
+ COMPARE_FIELD(st_atime);
+ COMPARE_FIELD(st_mtime);
+ COMPARE_FIELD(st_ctime);
+ return true;
+}
+
+#undef COMPARE_FIELD
+
+ACTION_P(SetStat, statbuf) {
+ memset(arg1, 0, sizeof(struct stat));
+ arg1->st_dev = statbuf->st_dev;
+ arg1->st_ino = statbuf->st_ino;
+ arg1->st_mode = statbuf->st_mode;
+ arg1->st_nlink = statbuf->st_nlink;
+ arg1->st_uid = statbuf->st_uid;
+ arg1->st_gid = statbuf->st_gid;
+ arg1->st_rdev = statbuf->st_rdev;
+ arg1->st_size = statbuf->st_size;
+ arg1->st_atime = statbuf->st_atime;
+ arg1->st_mtime = statbuf->st_mtime;
+ arg1->st_ctime = statbuf->st_ctime;
+ return 0;
+}
+
+void MakeDummyStatbuf(struct stat* statbuf) {
+ memset(&statbuf[0], 0, sizeof(struct stat));
+ statbuf->st_dev = 1;
+ statbuf->st_ino = 2;
+ statbuf->st_mode = 3;
+ statbuf->st_nlink = 4;
+ statbuf->st_uid = 5;
+ statbuf->st_gid = 6;
+ statbuf->st_rdev = 7;
+ statbuf->st_size = 8;
+ statbuf->st_atime = 9;
+ statbuf->st_mtime = 10;
+ statbuf->st_ctime = 11;
+}
+
+} // namespace
+
+TEST(KernelWrap, access) {
+ KernelProxyMock mock;
+ ki_init(&mock);
+ EXPECT_CALL(mock, access(StrEq("access"), 12)).Times(1);
+ access("access", 12);
+}
+
+TEST(KernelWrap, chdir) {
+ KernelProxyMock mock;
+ ki_init(&mock);
+ EXPECT_CALL(mock, chdir(StrEq("chdir"))).Times(1);
+ chdir("chdir");
+}
+
+TEST(KernelWrap, chmod) {
+ KernelProxyMock mock;
+ ki_init(&mock);
+ EXPECT_CALL(mock, chmod(StrEq("chmod"), 23)).Times(1);
+ chmod("chmod", 23);
+}
+
+TEST(KernelWrap, close) {
+ KernelProxyMock mock;
+ ki_init(&mock);
+ EXPECT_CALL(mock, close(34)).Times(1);
+ close(34);
+}
+
+TEST(KernelWrap, dup) {
+ KernelProxyMock mock;
+ ki_init(&mock);
+ EXPECT_CALL(mock, dup(123)).Times(1);
+ dup(123);
+}
+
+TEST(KernelWrap, fstat) {
+ KernelProxyMock mock;
+ ki_init(&mock);
+ struct stat in_statbuf;
+ MakeDummyStatbuf(&in_statbuf);
+ EXPECT_CALL(mock, fstat(234, _))
+ .Times(1)
+ .WillOnce(SetStat(&in_statbuf));
+ struct stat out_statbuf;
+ fstat(234, &out_statbuf);
+ EXPECT_THAT(&in_statbuf, IsEqualToStatbuf(&out_statbuf));
+}
+
+TEST(KernelWrap, fsync) {
+ KernelProxyMock mock;
+ ki_init(&mock);
+ EXPECT_CALL(mock, fsync(345)).Times(1);
+ fsync(345);
+}
+
+TEST(KernelWrap, getcwd) {
+ KernelProxyMock mock;
+ ki_init(&mock);
+ EXPECT_CALL(mock, getcwd(StrEq("getcwd"), 1)).Times(1);
+ char buffer[] = "getcwd";
+ getcwd(buffer, 1);
+}
+
+TEST(KernelWrap, getdents) {
+ KernelProxyMock mock;
+ ki_init(&mock);
+ EXPECT_CALL(mock, getdents(456, NULL, 567)).Times(1);
+ getdents(456, NULL, 567);
+}
+
+// gcc gives error: getwd is deprecated.
+#if defined(__GNUC__)
+#pragma GCC diagnostic ignored "-Wdeprecated-declarations"
+#endif
+TEST(KernelWrap, getwd) {
+ KernelProxyMock mock;
+ ki_init(&mock);
+ EXPECT_CALL(mock, getwd(StrEq("getwd"))).Times(1);
+ char buffer[] = "getwd";
+ getwd(buffer);
+}
+#if defined(__GNUC__)
+#pragma GCC diagnostic warning "-Wdeprecated-declarations"
+#endif
+
+TEST(KernelWrap, isatty) {
+ KernelProxyMock mock;
+ ki_init(&mock);
+ EXPECT_CALL(mock, isatty(678)).Times(1);
+ isatty(678);
+}
+
+TEST(KernelWrap, lseek) {
+ KernelProxyMock mock;
+ ki_init(&mock);
+ EXPECT_CALL(mock, lseek(789, 891, 912)).Times(1);
+ lseek(789, 891, 912);
+}
+
+TEST(KernelWrap, mkdir) {
+ KernelProxyMock mock;
+ ki_init(&mock);
+#if defined(WIN32)
+ EXPECT_CALL(mock, mkdir(StrEq("mkdir"), 0777)).Times(1);
+ mkdir("mkdir");
+#else
+ EXPECT_CALL(mock, mkdir(StrEq("mkdir"), 1234)).Times(1);
+ mkdir("mkdir", 1234);
+#endif
+}
+
+TEST(KernelWrap, mount) {
+ KernelProxyMock mock;
+ ki_init(&mock);
+ EXPECT_CALL(mock,
+ mount(StrEq("mount1"), StrEq("mount2"), StrEq("mount3"), 2345, NULL))
+ .Times(1);
+ mount("mount1", "mount2", "mount3", 2345, NULL);
+}
+
+TEST(KernelWrap, open) {
+ KernelProxyMock mock;
+ ki_init(&mock);
+ EXPECT_CALL(mock, open(StrEq("open"), 3456)).Times(1);
+ open("open", 3456);
+}
+
+TEST(KernelWrap, read) {
+ KernelProxyMock mock;
+ ki_init(&mock);
+ EXPECT_CALL(mock, read(4567, NULL, 5678)).Times(1);
+ read(4567, NULL, 5678);
+}
+
+TEST(KernelWrap, remove) {
+ KernelProxyMock mock;
+ ki_init(&mock);
+ EXPECT_CALL(mock, remove(StrEq("remove"))).Times(1);
+ remove("remove");
+}
+
+TEST(KernelWrap, rmdir) {
+ KernelProxyMock mock;
+ ki_init(&mock);
+ EXPECT_CALL(mock, rmdir(StrEq("rmdir"))).Times(1);
+ rmdir("rmdir");
+}
+
+TEST(KernelWrap, stat) {
+ KernelProxyMock mock;
+ ki_init(&mock);
+ struct stat in_statbuf;
+ MakeDummyStatbuf(&in_statbuf);
+ EXPECT_CALL(mock, stat(StrEq("stat"), _))
+ .Times(1)
+ .WillOnce(SetStat(&in_statbuf));
+ struct stat out_statbuf;
+ stat("stat", &out_statbuf);
+ EXPECT_THAT(&in_statbuf, IsEqualToStatbuf(&out_statbuf));
+}
+
+TEST(KernelWrap, umount) {
+ KernelProxyMock mock;
+ ki_init(&mock);
+ EXPECT_CALL(mock, umount(StrEq("umount"))).Times(1);
+ umount("umount");
+}
+
+TEST(KernelWrap, unlink) {
+ KernelProxyMock mock;
+ ki_init(&mock);
+ EXPECT_CALL(mock, unlink(StrEq("unlink"))).Times(1);
+ unlink("unlink");
+}
+
+TEST(KernelWrap, write) {
+ KernelProxyMock mock;
+ ki_init(&mock);
+ EXPECT_CALL(mock, write(6789, NULL, 7891)).Times(1);
+ write(6789, NULL, 7891);
+}

Powered by Google App Engine
This is Rietveld 408576698