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 |