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

Side by Side Diff: components/filesystem/directory_impl_unittest.cc

Issue 1962503002: Add mojom module suffix in .mojom files for components/filesystem. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 4 years, 7 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 unified diff | Download patch
« no previous file with comments | « components/filesystem/directory_impl.cc ('k') | components/filesystem/file_impl.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2015 The Chromium Authors. All rights reserved. 1 // Copyright 2015 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 #include <stddef.h> 5 #include <stddef.h>
6 #include <stdint.h> 6 #include <stdint.h>
7 7
8 #include <map> 8 #include <map>
9 #include <string> 9 #include <string>
10 10
11 #include "base/macros.h" 11 #include "base/macros.h"
12 #include "components/filesystem/files_test_base.h" 12 #include "components/filesystem/files_test_base.h"
13 #include "mojo/common/common_type_converters.h" 13 #include "mojo/common/common_type_converters.h"
14 #include "mojo/util/capture_util.h" 14 #include "mojo/util/capture_util.h"
15 15
16 using mojo::Capture; 16 using mojo::Capture;
17 17
18 namespace filesystem { 18 namespace filesystem {
19 namespace { 19 namespace {
20 20
21 using DirectoryImplTest = FilesTestBase; 21 using DirectoryImplTest = FilesTestBase;
22 22
23 TEST_F(DirectoryImplTest, Read) { 23 TEST_F(DirectoryImplTest, Read) {
24 DirectoryPtr directory; 24 mojom::DirectoryPtr directory;
25 GetTemporaryRoot(&directory); 25 GetTemporaryRoot(&directory);
26 FileError error; 26 mojom::FileError error;
27 27
28 // Make some files. 28 // Make some files.
29 const struct { 29 const struct {
30 const char* name; 30 const char* name;
31 uint32_t open_flags; 31 uint32_t open_flags;
32 } files_to_create[] = { 32 } files_to_create[] = {
33 {"my_file1", kFlagRead | kFlagWrite | kFlagCreate}, 33 {"my_file1", mojom::kFlagRead | mojom::kFlagWrite | mojom::kFlagCreate},
34 {"my_file2", kFlagWrite | kFlagCreate}, 34 {"my_file2", mojom::kFlagWrite | mojom::kFlagCreate},
35 {"my_file3", kFlagAppend | kFlagCreate }}; 35 {"my_file3", mojom::kFlagAppend | mojom::kFlagCreate}};
36 for (size_t i = 0; i < arraysize(files_to_create); i++) { 36 for (size_t i = 0; i < arraysize(files_to_create); i++) {
37 error = FileError::FAILED; 37 error = mojom::FileError::FAILED;
38 directory->OpenFile(files_to_create[i].name, nullptr, 38 directory->OpenFile(files_to_create[i].name, nullptr,
39 files_to_create[i].open_flags, Capture(&error)); 39 files_to_create[i].open_flags, Capture(&error));
40 ASSERT_TRUE(directory.WaitForIncomingResponse()); 40 ASSERT_TRUE(directory.WaitForIncomingResponse());
41 EXPECT_EQ(FileError::OK, error); 41 EXPECT_EQ(mojom::FileError::OK, error);
42 } 42 }
43 // Make a directory. 43 // Make a directory.
44 error = FileError::FAILED; 44 error = mojom::FileError::FAILED;
45 directory->OpenDirectory( 45 directory->OpenDirectory(
46 "my_dir", nullptr, kFlagRead | kFlagWrite | kFlagCreate, Capture(&error)); 46 "my_dir", nullptr,
47 mojom::kFlagRead | mojom::kFlagWrite | mojom::kFlagCreate,
48 Capture(&error));
47 ASSERT_TRUE(directory.WaitForIncomingResponse()); 49 ASSERT_TRUE(directory.WaitForIncomingResponse());
48 EXPECT_EQ(FileError::OK, error); 50 EXPECT_EQ(mojom::FileError::OK, error);
49 51
50 error = FileError::FAILED; 52 error = mojom::FileError::FAILED;
51 mojo::Array<DirectoryEntryPtr> directory_contents; 53 mojo::Array<mojom::DirectoryEntryPtr> directory_contents;
52 directory->Read(Capture(&error, &directory_contents)); 54 directory->Read(Capture(&error, &directory_contents));
53 ASSERT_TRUE(directory.WaitForIncomingResponse()); 55 ASSERT_TRUE(directory.WaitForIncomingResponse());
54 EXPECT_EQ(FileError::OK, error); 56 EXPECT_EQ(mojom::FileError::OK, error);
55 57
56 // Expected contents of the directory. 58 // Expected contents of the directory.
57 std::map<std::string, FsFileType> expected_contents; 59 std::map<std::string, mojom::FsFileType> expected_contents;
58 expected_contents["my_file1"] = FsFileType::REGULAR_FILE; 60 expected_contents["my_file1"] = mojom::FsFileType::REGULAR_FILE;
59 expected_contents["my_file2"] = FsFileType::REGULAR_FILE; 61 expected_contents["my_file2"] = mojom::FsFileType::REGULAR_FILE;
60 expected_contents["my_file3"] = FsFileType::REGULAR_FILE; 62 expected_contents["my_file3"] = mojom::FsFileType::REGULAR_FILE;
61 expected_contents["my_dir"] = FsFileType::DIRECTORY; 63 expected_contents["my_dir"] = mojom::FsFileType::DIRECTORY;
62 // Note: We don't expose ".." or ".". 64 // Note: We don't expose ".." or ".".
63 65
64 EXPECT_EQ(expected_contents.size(), directory_contents.size()); 66 EXPECT_EQ(expected_contents.size(), directory_contents.size());
65 for (size_t i = 0; i < directory_contents.size(); i++) { 67 for (size_t i = 0; i < directory_contents.size(); i++) {
66 ASSERT_TRUE(directory_contents[i]); 68 ASSERT_TRUE(directory_contents[i]);
67 ASSERT_TRUE(directory_contents[i]->name); 69 ASSERT_TRUE(directory_contents[i]->name);
68 auto it = expected_contents.find(directory_contents[i]->name.get()); 70 auto it = expected_contents.find(directory_contents[i]->name.get());
69 ASSERT_TRUE(it != expected_contents.end()); 71 ASSERT_TRUE(it != expected_contents.end());
70 EXPECT_EQ(it->second, directory_contents[i]->type); 72 EXPECT_EQ(it->second, directory_contents[i]->type);
71 expected_contents.erase(it); 73 expected_contents.erase(it);
72 } 74 }
73 } 75 }
74 76
75 // TODO(vtl): Properly test OpenFile() and OpenDirectory() (including flags). 77 // TODO(vtl): Properly test OpenFile() and OpenDirectory() (including flags).
76 78
77 TEST_F(DirectoryImplTest, BasicRenameDelete) { 79 TEST_F(DirectoryImplTest, BasicRenameDelete) {
78 DirectoryPtr directory; 80 mojom::DirectoryPtr directory;
79 GetTemporaryRoot(&directory); 81 GetTemporaryRoot(&directory);
80 FileError error; 82 mojom::FileError error;
81 83
82 // Create my_file. 84 // Create my_file.
83 error = FileError::FAILED; 85 error = mojom::FileError::FAILED;
84 directory->OpenFile("my_file", nullptr, kFlagWrite | kFlagCreate, 86 directory->OpenFile("my_file", nullptr,
87 mojom::kFlagWrite | mojom::kFlagCreate, Capture(&error));
88 ASSERT_TRUE(directory.WaitForIncomingResponse());
89 EXPECT_EQ(mojom::FileError::OK, error);
90
91 // Opening my_file should succeed.
92 error = mojom::FileError::FAILED;
93 directory->OpenFile("my_file", nullptr, mojom::kFlagRead | mojom::kFlagOpen,
85 Capture(&error)); 94 Capture(&error));
86 ASSERT_TRUE(directory.WaitForIncomingResponse()); 95 ASSERT_TRUE(directory.WaitForIncomingResponse());
87 EXPECT_EQ(FileError::OK, error); 96 EXPECT_EQ(mojom::FileError::OK, error);
88
89 // Opening my_file should succeed.
90 error = FileError::FAILED;
91 directory->OpenFile("my_file", nullptr, kFlagRead | kFlagOpen,
92 Capture(&error));
93 ASSERT_TRUE(directory.WaitForIncomingResponse());
94 EXPECT_EQ(FileError::OK, error);
95 97
96 // Rename my_file to my_new_file. 98 // Rename my_file to my_new_file.
97 directory->Rename("my_file", "my_new_file", Capture(&error)); 99 directory->Rename("my_file", "my_new_file", Capture(&error));
98 ASSERT_TRUE(directory.WaitForIncomingResponse()); 100 ASSERT_TRUE(directory.WaitForIncomingResponse());
99 EXPECT_EQ(FileError::OK, error); 101 EXPECT_EQ(mojom::FileError::OK, error);
100 102
101 // Opening my_file should fail. 103 // Opening my_file should fail.
102 104
103 error = FileError::FAILED; 105 error = mojom::FileError::FAILED;
104 directory->OpenFile("my_file", nullptr, kFlagRead | kFlagOpen, 106 directory->OpenFile("my_file", nullptr, mojom::kFlagRead | mojom::kFlagOpen,
105 Capture(&error)); 107 Capture(&error));
106 ASSERT_TRUE(directory.WaitForIncomingResponse()); 108 ASSERT_TRUE(directory.WaitForIncomingResponse());
107 EXPECT_EQ(FileError::NOT_FOUND, error); 109 EXPECT_EQ(mojom::FileError::NOT_FOUND, error);
108 110
109 // Opening my_new_file should succeed. 111 // Opening my_new_file should succeed.
110 error = FileError::FAILED; 112 error = mojom::FileError::FAILED;
111 directory->OpenFile("my_new_file", nullptr, kFlagRead | kFlagOpen, 113 directory->OpenFile("my_new_file", nullptr,
112 Capture(&error)); 114 mojom::kFlagRead | mojom::kFlagOpen, Capture(&error));
113 ASSERT_TRUE(directory.WaitForIncomingResponse()); 115 ASSERT_TRUE(directory.WaitForIncomingResponse());
114 EXPECT_EQ(FileError::OK, error); 116 EXPECT_EQ(mojom::FileError::OK, error);
115 117
116 // Delete my_new_file (no flags). 118 // Delete my_new_file (no flags).
117 directory->Delete("my_new_file", 0, Capture(&error)); 119 directory->Delete("my_new_file", 0, Capture(&error));
118 ASSERT_TRUE(directory.WaitForIncomingResponse()); 120 ASSERT_TRUE(directory.WaitForIncomingResponse());
119 EXPECT_EQ(FileError::OK, error); 121 EXPECT_EQ(mojom::FileError::OK, error);
120 122
121 // Opening my_new_file should fail. 123 // Opening my_new_file should fail.
122 error = FileError::FAILED; 124 error = mojom::FileError::FAILED;
123 directory->OpenFile("my_new_file", nullptr, kFlagRead | kFlagOpen, 125 directory->OpenFile("my_new_file", nullptr,
124 Capture(&error)); 126 mojom::kFlagRead | mojom::kFlagOpen, Capture(&error));
125 ASSERT_TRUE(directory.WaitForIncomingResponse()); 127 ASSERT_TRUE(directory.WaitForIncomingResponse());
126 EXPECT_EQ(FileError::NOT_FOUND, error); 128 EXPECT_EQ(mojom::FileError::NOT_FOUND, error);
127 } 129 }
128 130
129 TEST_F(DirectoryImplTest, CantOpenDirectoriesAsFiles) { 131 TEST_F(DirectoryImplTest, CantOpenDirectoriesAsFiles) {
130 DirectoryPtr directory; 132 mojom::DirectoryPtr directory;
131 GetTemporaryRoot(&directory); 133 GetTemporaryRoot(&directory);
132 FileError error; 134 mojom::FileError error;
133 135
134 { 136 {
135 // Create a directory called 'my_file' 137 // Create a directory called 'my_file'
136 DirectoryPtr my_file_directory; 138 mojom::DirectoryPtr my_file_directory;
137 error = FileError::FAILED; 139 error = mojom::FileError::FAILED;
138 directory->OpenDirectory( 140 directory->OpenDirectory(
139 "my_file", GetProxy(&my_file_directory), 141 "my_file", GetProxy(&my_file_directory),
140 kFlagRead | kFlagWrite | kFlagCreate, 142 mojom::kFlagRead | mojom::kFlagWrite | mojom::kFlagCreate,
141 Capture(&error)); 143 Capture(&error));
142 ASSERT_TRUE(directory.WaitForIncomingResponse()); 144 ASSERT_TRUE(directory.WaitForIncomingResponse());
143 EXPECT_EQ(FileError::OK, error); 145 EXPECT_EQ(mojom::FileError::OK, error);
144 } 146 }
145 147
146 { 148 {
147 // Attempt to open that directory as a file. This must fail! 149 // Attempt to open that directory as a file. This must fail!
148 FilePtr file; 150 mojom::FilePtr file;
149 error = FileError::FAILED; 151 error = mojom::FileError::FAILED;
150 directory->OpenFile("my_file", GetProxy(&file), kFlagRead | kFlagOpen, 152 directory->OpenFile("my_file", GetProxy(&file),
151 Capture(&error)); 153 mojom::kFlagRead | mojom::kFlagOpen, Capture(&error));
152 ASSERT_TRUE(directory.WaitForIncomingResponse()); 154 ASSERT_TRUE(directory.WaitForIncomingResponse());
153 EXPECT_EQ(FileError::NOT_A_FILE, error); 155 EXPECT_EQ(mojom::FileError::NOT_A_FILE, error);
154 } 156 }
155 } 157 }
156 158
157 TEST_F(DirectoryImplTest, Clone) { 159 TEST_F(DirectoryImplTest, Clone) {
158 DirectoryPtr clone_one; 160 mojom::DirectoryPtr clone_one;
159 DirectoryPtr clone_two; 161 mojom::DirectoryPtr clone_two;
160 FileError error; 162 mojom::FileError error;
161 163
162 { 164 {
163 DirectoryPtr directory; 165 mojom::DirectoryPtr directory;
164 GetTemporaryRoot(&directory); 166 GetTemporaryRoot(&directory);
165 167
166 directory->Clone(GetProxy(&clone_one)); 168 directory->Clone(GetProxy(&clone_one));
167 directory->Clone(GetProxy(&clone_two)); 169 directory->Clone(GetProxy(&clone_two));
168 170
169 // Original temporary directory goes out of scope here; shouldn't be 171 // Original temporary directory goes out of scope here; shouldn't be
170 // deleted since it has clones. 172 // deleted since it has clones.
171 } 173 }
172 174
173 std::string data("one two three"); 175 std::string data("one two three");
174 { 176 {
175 clone_one->WriteFile("data", mojo::Array<uint8_t>::From(data), 177 clone_one->WriteFile("data", mojo::Array<uint8_t>::From(data),
176 Capture(&error)); 178 Capture(&error));
177 ASSERT_TRUE(clone_one.WaitForIncomingResponse()); 179 ASSERT_TRUE(clone_one.WaitForIncomingResponse());
178 EXPECT_EQ(FileError::OK, error); 180 EXPECT_EQ(mojom::FileError::OK, error);
179 } 181 }
180 182
181 { 183 {
182 mojo::Array<uint8_t> file_contents; 184 mojo::Array<uint8_t> file_contents;
183 clone_two->ReadEntireFile("data", Capture(&error, &file_contents)); 185 clone_two->ReadEntireFile("data", Capture(&error, &file_contents));
184 ASSERT_TRUE(clone_two.WaitForIncomingResponse()); 186 ASSERT_TRUE(clone_two.WaitForIncomingResponse());
185 EXPECT_EQ(FileError::OK, error); 187 EXPECT_EQ(mojom::FileError::OK, error);
186 188
187 EXPECT_EQ(data, file_contents.To<std::string>()); 189 EXPECT_EQ(data, file_contents.To<std::string>());
188 } 190 }
189 } 191 }
190 192
191 TEST_F(DirectoryImplTest, WriteFileReadFile) { 193 TEST_F(DirectoryImplTest, WriteFileReadFile) {
192 DirectoryPtr directory; 194 mojom::DirectoryPtr directory;
193 GetTemporaryRoot(&directory); 195 GetTemporaryRoot(&directory);
194 FileError error; 196 mojom::FileError error;
195 197
196 std::string data("one two three"); 198 std::string data("one two three");
197 { 199 {
198 directory->WriteFile("data", mojo::Array<uint8_t>::From(data), 200 directory->WriteFile("data", mojo::Array<uint8_t>::From(data),
199 Capture(&error)); 201 Capture(&error));
200 ASSERT_TRUE(directory.WaitForIncomingResponse()); 202 ASSERT_TRUE(directory.WaitForIncomingResponse());
201 EXPECT_EQ(FileError::OK, error); 203 EXPECT_EQ(mojom::FileError::OK, error);
202 } 204 }
203 205
204 { 206 {
205 mojo::Array<uint8_t> file_contents; 207 mojo::Array<uint8_t> file_contents;
206 directory->ReadEntireFile("data", Capture(&error, &file_contents)); 208 directory->ReadEntireFile("data", Capture(&error, &file_contents));
207 ASSERT_TRUE(directory.WaitForIncomingResponse()); 209 ASSERT_TRUE(directory.WaitForIncomingResponse());
208 EXPECT_EQ(FileError::OK, error); 210 EXPECT_EQ(mojom::FileError::OK, error);
209 211
210 EXPECT_EQ(data, file_contents.To<std::string>()); 212 EXPECT_EQ(data, file_contents.To<std::string>());
211 } 213 }
212 } 214 }
213 215
214 TEST_F(DirectoryImplTest, ReadEmptyFileIsNotFoundError) { 216 TEST_F(DirectoryImplTest, ReadEmptyFileIsNotFoundError) {
215 DirectoryPtr directory; 217 mojom::DirectoryPtr directory;
216 GetTemporaryRoot(&directory); 218 GetTemporaryRoot(&directory);
217 FileError error; 219 mojom::FileError error;
218 220
219 { 221 {
220 mojo::Array<uint8_t> file_contents; 222 mojo::Array<uint8_t> file_contents;
221 directory->ReadEntireFile("doesnt_exist", Capture(&error, &file_contents)); 223 directory->ReadEntireFile("doesnt_exist", Capture(&error, &file_contents));
222 ASSERT_TRUE(directory.WaitForIncomingResponse()); 224 ASSERT_TRUE(directory.WaitForIncomingResponse());
223 EXPECT_EQ(FileError::NOT_FOUND, error); 225 EXPECT_EQ(mojom::FileError::NOT_FOUND, error);
224 } 226 }
225 } 227 }
226 228
227 TEST_F(DirectoryImplTest, CantReadEntireFileOnADirectory) { 229 TEST_F(DirectoryImplTest, CantReadEntireFileOnADirectory) {
228 DirectoryPtr directory; 230 mojom::DirectoryPtr directory;
229 GetTemporaryRoot(&directory); 231 GetTemporaryRoot(&directory);
230 FileError error; 232 mojom::FileError error;
231 233
232 // Create a directory 234 // Create a directory
233 { 235 {
234 DirectoryPtr my_file_directory; 236 mojom::DirectoryPtr my_file_directory;
235 error = FileError::FAILED; 237 error = mojom::FileError::FAILED;
236 directory->OpenDirectory( 238 directory->OpenDirectory(
237 "my_dir", GetProxy(&my_file_directory), 239 "my_dir", GetProxy(&my_file_directory),
238 kFlagRead | kFlagWrite | kFlagCreate, 240 mojom::kFlagRead | mojom::kFlagWrite | mojom::kFlagCreate,
239 Capture(&error)); 241 Capture(&error));
240 ASSERT_TRUE(directory.WaitForIncomingResponse()); 242 ASSERT_TRUE(directory.WaitForIncomingResponse());
241 EXPECT_EQ(FileError::OK, error); 243 EXPECT_EQ(mojom::FileError::OK, error);
242 } 244 }
243 245
244 // Try to read it as a file 246 // Try to read it as a file
245 { 247 {
246 mojo::Array<uint8_t> file_contents; 248 mojo::Array<uint8_t> file_contents;
247 directory->ReadEntireFile("my_dir", Capture(&error, &file_contents)); 249 directory->ReadEntireFile("my_dir", Capture(&error, &file_contents));
248 ASSERT_TRUE(directory.WaitForIncomingResponse()); 250 ASSERT_TRUE(directory.WaitForIncomingResponse());
249 EXPECT_EQ(FileError::NOT_A_FILE, error); 251 EXPECT_EQ(mojom::FileError::NOT_A_FILE, error);
250 } 252 }
251 } 253 }
252 254
253 TEST_F(DirectoryImplTest, CantWriteFileOnADirectory) { 255 TEST_F(DirectoryImplTest, CantWriteFileOnADirectory) {
254 DirectoryPtr directory; 256 mojom::DirectoryPtr directory;
255 GetTemporaryRoot(&directory); 257 GetTemporaryRoot(&directory);
256 FileError error; 258 mojom::FileError error;
257 259
258 // Create a directory 260 // Create a directory
259 { 261 {
260 DirectoryPtr my_file_directory; 262 mojom::DirectoryPtr my_file_directory;
261 error = FileError::FAILED; 263 error = mojom::FileError::FAILED;
262 directory->OpenDirectory( 264 directory->OpenDirectory(
263 "my_dir", GetProxy(&my_file_directory), 265 "my_dir", GetProxy(&my_file_directory),
264 kFlagRead | kFlagWrite | kFlagCreate, 266 mojom::kFlagRead | mojom::kFlagWrite | mojom::kFlagCreate,
265 Capture(&error)); 267 Capture(&error));
266 ASSERT_TRUE(directory.WaitForIncomingResponse()); 268 ASSERT_TRUE(directory.WaitForIncomingResponse());
267 EXPECT_EQ(FileError::OK, error); 269 EXPECT_EQ(mojom::FileError::OK, error);
268 } 270 }
269 271
270 { 272 {
271 std::string data("one two three"); 273 std::string data("one two three");
272 directory->WriteFile("my_dir", mojo::Array<uint8_t>::From(data), 274 directory->WriteFile("my_dir", mojo::Array<uint8_t>::From(data),
273 Capture(&error)); 275 Capture(&error));
274 ASSERT_TRUE(directory.WaitForIncomingResponse()); 276 ASSERT_TRUE(directory.WaitForIncomingResponse());
275 EXPECT_EQ(FileError::NOT_A_FILE, error); 277 EXPECT_EQ(mojom::FileError::NOT_A_FILE, error);
276 } 278 }
277 } 279 }
278 280
279 // TODO(vtl): Test delete flags. 281 // TODO(vtl): Test delete flags.
280 282
281 } // namespace 283 } // namespace
282 } // namespace filesystem 284 } // namespace filesystem
OLDNEW
« no previous file with comments | « components/filesystem/directory_impl.cc ('k') | components/filesystem/file_impl.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698