| OLD | NEW |
| 1 /* Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 /* Copyright (c) 2012 The Chromium Authors. All rights reserved. |
| 2 * Use of this source code is governed by a BSD-style license that can be | 2 * Use of this source code is governed by a BSD-style license that can be |
| 3 * found in the LICENSE file. | 3 * found in the LICENSE file. |
| 4 */ | 4 */ |
| 5 | 5 |
| 6 #include <errno.h> | 6 #include <errno.h> |
| 7 #include <fcntl.h> | 7 #include <fcntl.h> |
| 8 #include <unistd.h> | |
| 9 | 8 |
| 10 #include "nacl_mounts/kernel_proxy.h" | 9 #include "nacl_mounts/kernel_proxy.h" |
| 11 #include "nacl_mounts/mount_node.h" | 10 #include "nacl_mounts/mount_node.h" |
| 12 #include "nacl_mounts/mount_node_dir.h" | 11 #include "nacl_mounts/mount_node_dir.h" |
| 13 #include "nacl_mounts/mount_node_mem.h" | 12 #include "nacl_mounts/mount_node_mem.h" |
| 13 #include "nacl_mounts/osdirent.h" |
| 14 | 14 |
| 15 #define __STDC__ 1 | |
| 16 #include "gtest/gtest.h" | 15 #include "gtest/gtest.h" |
| 17 | 16 |
| 18 #define NULL_NODE ((MountNode *) NULL) | 17 #define NULL_NODE ((MountNode *) NULL) |
| 19 | 18 |
| 20 static int s_AllocNum = 0; | 19 static int s_AllocNum = 0; |
| 21 | 20 |
| 22 class MockMemory : public MountNodeMem { | 21 class MockMemory : public MountNodeMem { |
| 23 public: | 22 public: |
| 24 MockMemory() : MountNodeMem(NULL, 0, 0) { | 23 MockMemory() : MountNodeMem(NULL, 0, 0) { |
| 25 s_AllocNum++; | 24 s_AllocNum++; |
| (...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 72 }; | 71 }; |
| 73 | 72 |
| 74 TEST(MountNodeTest, File) { | 73 TEST(MountNodeTest, File) { |
| 75 MockMemory *file = new MockMemory; | 74 MockMemory *file = new MockMemory; |
| 76 | 75 |
| 77 EXPECT_EQ(true, file->Init(S_IREAD | S_IWRITE)); | 76 EXPECT_EQ(true, file->Init(S_IREAD | S_IWRITE)); |
| 78 | 77 |
| 79 // Test properties | 78 // Test properties |
| 80 EXPECT_EQ(0, file->GetLinks()); | 79 EXPECT_EQ(0, file->GetLinks()); |
| 81 EXPECT_EQ(S_IREAD | S_IWRITE, file->GetMode()); | 80 EXPECT_EQ(S_IREAD | S_IWRITE, file->GetMode()); |
| 82 EXPECT_EQ(_S_IFREG, file->GetType()); | 81 EXPECT_EQ(S_IFREG, file->GetType()); |
| 83 EXPECT_EQ(false, file->IsaDir()); | 82 EXPECT_EQ(false, file->IsaDir()); |
| 84 EXPECT_EQ(true, file->IsaFile()); | 83 EXPECT_EQ(true, file->IsaFile()); |
| 85 EXPECT_EQ(false, file->IsaTTY()); | 84 EXPECT_EQ(false, file->IsaTTY()); |
| 86 EXPECT_EQ(1, file->RefCount()); | 85 EXPECT_EQ(1, file->RefCount()); |
| 87 | 86 |
| 88 // Test IO | 87 // Test IO |
| 89 char buf1[1024]; | 88 char buf1[1024]; |
| 90 char buf2[1024 * 2]; | 89 char buf2[1024 * 2]; |
| 91 for (int a=0; a < sizeof(buf1); a++) | 90 for (size_t a = 0; a < sizeof(buf1); a++) |
| 92 buf1[a] = a; | 91 buf1[a] = a; |
| 93 memset(buf2, 0, sizeof(buf2)); | 92 memset(buf2, 0, sizeof(buf2)); |
| 94 | 93 |
| 95 EXPECT_EQ(0, file->GetSize()); | 94 EXPECT_EQ(0, file->GetSize()); |
| 96 EXPECT_EQ(0, file->Read(0, buf2, sizeof(buf2))); | 95 EXPECT_EQ(0, file->Read(0, buf2, sizeof(buf2))); |
| 97 EXPECT_EQ(0, file->GetSize()); | 96 EXPECT_EQ(0, file->GetSize()); |
| 98 EXPECT_EQ(sizeof(buf1), file->Write(0, buf1, sizeof(buf1))); | 97 EXPECT_EQ(sizeof(buf1), file->Write(0, buf1, sizeof(buf1))); |
| 99 EXPECT_EQ(sizeof(buf1), file->GetSize()); | 98 EXPECT_EQ(sizeof(buf1), file->GetSize()); |
| 100 EXPECT_EQ(sizeof(buf1), file->Read(0, buf2, sizeof(buf2))); | 99 EXPECT_EQ(sizeof(buf1), file->Read(0, buf2, sizeof(buf2))); |
| 101 EXPECT_EQ(0, memcmp(buf1, buf2, sizeof(buf1))); | 100 EXPECT_EQ(0, memcmp(buf1, buf2, sizeof(buf1))); |
| (...skipping 16 matching lines...) Expand all Loading... |
| 118 delete file; | 117 delete file; |
| 119 } | 118 } |
| 120 | 119 |
| 121 TEST(MountNodeTest, Directory) { | 120 TEST(MountNodeTest, Directory) { |
| 122 MockDir *root = new MockDir(); | 121 MockDir *root = new MockDir(); |
| 123 root->Init(S_IREAD | S_IWRITE); | 122 root->Init(S_IREAD | S_IWRITE); |
| 124 | 123 |
| 125 // Test properties | 124 // Test properties |
| 126 EXPECT_EQ(0, root->GetLinks()); | 125 EXPECT_EQ(0, root->GetLinks()); |
| 127 EXPECT_EQ(S_IREAD | S_IWRITE, root->GetMode()); | 126 EXPECT_EQ(S_IREAD | S_IWRITE, root->GetMode()); |
| 128 EXPECT_EQ(_S_IFDIR, root->GetType()); | 127 EXPECT_EQ(S_IFDIR, root->GetType()); |
| 129 EXPECT_EQ(true, root->IsaDir()); | 128 EXPECT_EQ(true, root->IsaDir()); |
| 130 EXPECT_EQ(false, root->IsaFile()); | 129 EXPECT_EQ(false, root->IsaFile()); |
| 131 EXPECT_EQ(false, root->IsaTTY()); | 130 EXPECT_EQ(false, root->IsaTTY()); |
| 132 EXPECT_EQ(1, root->RefCount()); | 131 EXPECT_EQ(1, root->RefCount()); |
| 133 | 132 |
| 134 // IO operations should fail | 133 // IO operations should fail |
| 135 char buf1[1024]; | 134 char buf1[1024]; |
| 136 EXPECT_EQ(0, root->GetSize()); | 135 EXPECT_EQ(0, root->GetSize()); |
| 137 EXPECT_EQ(-1, root->Read(0, buf1, sizeof(buf1))); | 136 EXPECT_EQ(-1, root->Read(0, buf1, sizeof(buf1))); |
| 138 EXPECT_EQ(errno, EISDIR); | 137 EXPECT_EQ(errno, EISDIR); |
| (...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 176 EXPECT_EQ(0, file->GetLinks()); | 175 EXPECT_EQ(0, file->GetLinks()); |
| 177 EXPECT_EQ(1, file->RefCount()); | 176 EXPECT_EQ(1, file->RefCount()); |
| 178 EXPECT_EQ(2, s_AllocNum); | 177 EXPECT_EQ(2, s_AllocNum); |
| 179 | 178 |
| 180 file->Release(); | 179 file->Release(); |
| 181 EXPECT_EQ(1, s_AllocNum); | 180 EXPECT_EQ(1, s_AllocNum); |
| 182 root->Release(); | 181 root->Release(); |
| 183 EXPECT_EQ(0, s_AllocNum); | 182 EXPECT_EQ(0, s_AllocNum); |
| 184 } | 183 } |
| 185 | 184 |
| OLD | NEW |