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

Side by Side Diff: native_client_sdk/src/libraries/nacl_io_test/mount_html5fs_test.cc

Issue 16232016: [NaCl SDK] nacl_io: big refactor to return error value (errno). (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: merge master, fix windows Created 7 years, 6 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 | Annotate | Revision Log
OLDNEW
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 <string.h> 8 #include <string.h>
9 #include <gmock/gmock.h> 9 #include <gmock/gmock.h>
10 #include <ppapi/c/ppb_file_io.h> 10 #include <ppapi/c/ppb_file_io.h>
(...skipping 148 matching lines...) Expand 10 before | Expand all | Expand 10 after
159 // Close. 159 // Close.
160 EXPECT_CALL(*ppapi_, ReleaseResource(fileref_resource_)); 160 EXPECT_CALL(*ppapi_, ReleaseResource(fileref_resource_));
161 } 161 }
162 162
163 void MountHtml5FsNodeTest::InitFilesystem() { 163 void MountHtml5FsNodeTest::InitFilesystem() {
164 StringMap_t map; 164 StringMap_t map;
165 mnt_ = new MountHtml5FsMock(map, ppapi_); 165 mnt_ = new MountHtml5FsMock(map, ppapi_);
166 } 166 }
167 167
168 void MountHtml5FsNodeTest::InitNode() { 168 void MountHtml5FsNodeTest::InitNode() {
169 node_ = mnt_->Open(Path(path_), O_CREAT | O_RDWR); 169 ASSERT_EQ(0, mnt_->Open(Path(path_), O_CREAT | O_RDWR, &node_));
170 ASSERT_NE((MountNode*)NULL, node_); 170 ASSERT_NE((MountNode*)NULL, node_);
171 } 171 }
172 172
173 // Node test where the filesystem is opened synchronously; that is, the 173 // Node test where the filesystem is opened synchronously; that is, the
174 // creation of the mount blocks until the filesystem is ready. 174 // creation of the mount blocks until the filesystem is ready.
175 class MountHtml5FsNodeSyncTest : public MountHtml5FsNodeTest { 175 class MountHtml5FsNodeSyncTest : public MountHtml5FsNodeTest {
176 public: 176 public:
177 void SetUpForFileType(PP_FileType file_type); 177 void SetUpForFileType(PP_FileType file_type);
178 178
179 virtual void SetUp(); 179 virtual void SetUp();
(...skipping 191 matching lines...) Expand 10 before | Expand all | Expand 10 after
371 } 371 }
372 372
373 TEST_F(MountHtml5FsNodeSyncTest, Write) { 373 TEST_F(MountHtml5FsNodeSyncTest, Write) {
374 const int offset = 10; 374 const int offset = 10;
375 const int count = 20; 375 const int count = 20;
376 const char buffer[30] = {0}; 376 const char buffer[30] = {0};
377 377
378 EXPECT_CALL(*fileio_, Write(fileio_resource_, offset, &buffer[0], count, _)) 378 EXPECT_CALL(*fileio_, Write(fileio_resource_, offset, &buffer[0], count, _))
379 .WillOnce(Return(count)); 379 .WillOnce(Return(count));
380 380
381 int result = node_->Write(offset, &buffer, count); 381 int result = 0;
382 EXPECT_EQ(0, node_->Write(offset, &buffer, count, &result));
382 EXPECT_EQ(count, result); 383 EXPECT_EQ(count, result);
383 } 384 }
384 385
385 TEST_F(MountHtml5FsNodeSyncTest, Read) { 386 TEST_F(MountHtml5FsNodeSyncTest, Read) {
386 const int offset = 10; 387 const int offset = 10;
387 const int count = 20; 388 const int count = 20;
388 char buffer[30] = {0}; 389 char buffer[30] = {0};
389 390
390 EXPECT_CALL(*fileio_, Read(fileio_resource_, offset, &buffer[0], count, _)) 391 EXPECT_CALL(*fileio_, Read(fileio_resource_, offset, &buffer[0], count, _))
391 .WillOnce(Return(count)); 392 .WillOnce(Return(count));
392 393
393 int result = node_->Read(offset, &buffer, count); 394 int result = 0;
395 EXPECT_EQ(0, node_->Read(offset, &buffer, count, &result));
394 EXPECT_EQ(count, result); 396 EXPECT_EQ(count, result);
395 } 397 }
396 398
397 TEST_F(MountHtml5FsNodeSyncTest, GetStat) { 399 TEST_F(MountHtml5FsNodeSyncTest, GetStat) {
398 const int size = 123; 400 const int size = 123;
399 const int creation_time = 1000; 401 const int creation_time = 1000;
400 const int access_time = 2000; 402 const int access_time = 2000;
401 const int modified_time = 3000; 403 const int modified_time = 3000;
402 404
403 PP_FileInfo info; 405 PP_FileInfo info;
(...skipping 26 matching lines...) Expand all
430 432
431 int result = node_->FTruncate(size); 433 int result = node_->FTruncate(size);
432 EXPECT_EQ(0, result); 434 EXPECT_EQ(0, result);
433 } 435 }
434 436
435 TEST_F(MountHtml5FsNodeSyncTest, GetDents) { 437 TEST_F(MountHtml5FsNodeSyncTest, GetDents) {
436 struct dirent dirents[2]; 438 struct dirent dirents[2];
437 memset(&dirents[0], 0, sizeof(dirents)); 439 memset(&dirents[0], 0, sizeof(dirents));
438 440
439 // Should fail for regular files. 441 // Should fail for regular files.
440 int result = node_->GetDents(0, &dirents[0], sizeof(dirent) * 2); 442 int result_bytes = 0;
441 ASSERT_EQ(-1, result); 443 EXPECT_EQ(ENOTDIR, node_->GetDents(0, &dirents[0], sizeof(dirent) * 2,
442 ASSERT_EQ(ENOTDIR, errno); 444 &result_bytes));
445 ASSERT_EQ(0, result_bytes);
443 } 446 }
444 447
445 TEST_F(MountHtml5FsNodeSyncDirTest, OpenAndClose) { 448 TEST_F(MountHtml5FsNodeSyncDirTest, OpenAndClose) {
446 } 449 }
447 450
448 TEST_F(MountHtml5FsNodeSyncDirTest, Write) { 451 TEST_F(MountHtml5FsNodeSyncDirTest, Write) {
449 const int offset = 10; 452 const int offset = 10;
450 const int count = 20; 453 const int count = 20;
451 const char buffer[30] = {0}; 454 const char buffer[30] = {0};
452 455
453 // Should fail for directories. 456 // Should fail for directories.
454 int result = node_->Write(offset, &buffer, count); 457 int result_bytes = 0;
455 ASSERT_EQ(-1, result); 458 EXPECT_EQ(EISDIR, node_->Write(offset, &buffer, count, &result_bytes));
456 EXPECT_EQ(EISDIR, errno); 459 ASSERT_EQ(0, result_bytes);
457 } 460 }
458 461
459 TEST_F(MountHtml5FsNodeSyncDirTest, Read) { 462 TEST_F(MountHtml5FsNodeSyncDirTest, Read) {
460 const int offset = 10; 463 const int offset = 10;
461 const int count = 20; 464 const int count = 20;
462 char buffer[30] = {0}; 465 char buffer[30] = {0};
463 466
464 // Should fail for directories. 467 // Should fail for directories.
465 int result = node_->Read(offset, &buffer, count); 468 int result_bytes = 0;
466 ASSERT_EQ(-1, result); 469 EXPECT_EQ(EISDIR, node_->Read(offset, &buffer, count, &result_bytes));
467 EXPECT_EQ(EISDIR, errno); 470 ASSERT_EQ(0, result_bytes);
468 } 471 }
469 472
470 TEST_F(MountHtml5FsNodeSyncDirTest, GetStat) { 473 TEST_F(MountHtml5FsNodeSyncDirTest, GetStat) {
471 const int creation_time = 1000; 474 const int creation_time = 1000;
472 const int access_time = 2000; 475 const int access_time = 2000;
473 const int modified_time = 3000; 476 const int modified_time = 3000;
474 477
475 PP_FileInfo info; 478 PP_FileInfo info;
476 info.size = 0; 479 info.size = 0;
477 info.type = PP_FILETYPE_DIRECTORY; 480 info.type = PP_FILETYPE_DIRECTORY;
(...skipping 13 matching lines...) Expand all
491 EXPECT_EQ(S_IFDIR | S_IWRITE | S_IREAD, statbuf.st_mode); 494 EXPECT_EQ(S_IFDIR | S_IWRITE | S_IREAD, statbuf.st_mode);
492 EXPECT_EQ(0, statbuf.st_size); 495 EXPECT_EQ(0, statbuf.st_size);
493 EXPECT_EQ(access_time, statbuf.st_atime); 496 EXPECT_EQ(access_time, statbuf.st_atime);
494 EXPECT_EQ(modified_time, statbuf.st_mtime); 497 EXPECT_EQ(modified_time, statbuf.st_mtime);
495 EXPECT_EQ(creation_time, statbuf.st_ctime); 498 EXPECT_EQ(creation_time, statbuf.st_ctime);
496 } 499 }
497 500
498 TEST_F(MountHtml5FsNodeSyncDirTest, FTruncate) { 501 TEST_F(MountHtml5FsNodeSyncDirTest, FTruncate) {
499 const int size = 123; 502 const int size = 123;
500 // Should fail for directories. 503 // Should fail for directories.
501 int result = node_->FTruncate(size); 504 EXPECT_EQ(EISDIR, node_->FTruncate(size));
502 ASSERT_EQ(-1, result);
503 EXPECT_EQ(EISDIR, errno);
504 } 505 }
505 506
506 TEST_F(MountHtml5FsNodeSyncDirTest, GetDents) { 507 TEST_F(MountHtml5FsNodeSyncDirTest, GetDents) {
507 const int fileref_resource_1 = 238; 508 const int fileref_resource_1 = 238;
508 const int fileref_resource_2 = 239; 509 const int fileref_resource_2 = 239;
509 510
510 const int fileref_name_id_1 = 240; 511 const int fileref_name_id_1 = 240;
511 const char fileref_name_cstr_1[] = "bar"; 512 const char fileref_name_cstr_1[] = "bar";
512 PP_Var fileref_name_1; 513 PP_Var fileref_name_1;
513 fileref_name_1.type = PP_VARTYPE_STRING; 514 fileref_name_1.type = PP_VARTYPE_STRING;
(...skipping 21 matching lines...) Expand all
535 EXPECT_CALL(*var, VarToUtf8(IsEqualToVar(fileref_name_2), _)) 536 EXPECT_CALL(*var, VarToUtf8(IsEqualToVar(fileref_name_2), _))
536 .WillOnce(Return(fileref_name_cstr_2)); 537 .WillOnce(Return(fileref_name_cstr_2));
537 538
538 EXPECT_CALL(*ppapi_, ReleaseResource(fileref_resource_1)); 539 EXPECT_CALL(*ppapi_, ReleaseResource(fileref_resource_1));
539 EXPECT_CALL(*ppapi_, ReleaseResource(fileref_resource_2)); 540 EXPECT_CALL(*ppapi_, ReleaseResource(fileref_resource_2));
540 541
541 struct dirent dirents[2]; 542 struct dirent dirents[2];
542 memset(&dirents[0], 0, sizeof(dirents)); 543 memset(&dirents[0], 0, sizeof(dirents));
543 // +2 to test a size that is not a multiple of sizeof(dirent). 544 // +2 to test a size that is not a multiple of sizeof(dirent).
544 // Expect it to round down. 545 // Expect it to round down.
545 int result = node_->GetDents(0, &dirents[0], sizeof(dirent) * 2 + 2); 546 int result_bytes = 0;
547 EXPECT_EQ(
548 0,
549 node_->GetDents(0, &dirents[0], sizeof(dirent) * 2 + 2, &result_bytes));
546 550
547 ASSERT_EQ(sizeof(dirent) * 2, result); 551 ASSERT_EQ(sizeof(dirent) * 2, result_bytes);
548 EXPECT_LT(0, dirents[0].d_ino); // 0 is an invalid inode number. 552 EXPECT_LT(0, dirents[0].d_ino); // 0 is an invalid inode number.
549 EXPECT_EQ(sizeof(dirent), dirents[0].d_off); 553 EXPECT_EQ(sizeof(dirent), dirents[0].d_off);
550 EXPECT_EQ(sizeof(dirent), dirents[0].d_reclen); 554 EXPECT_EQ(sizeof(dirent), dirents[0].d_reclen);
551 EXPECT_STREQ(fileref_name_cstr_1, dirents[0].d_name); 555 EXPECT_STREQ(fileref_name_cstr_1, dirents[0].d_name);
552 EXPECT_LT(0, dirents[1].d_ino); // 0 is an invalid inode number. 556 EXPECT_LT(0, dirents[1].d_ino); // 0 is an invalid inode number.
553 EXPECT_EQ(sizeof(dirent), dirents[1].d_off); 557 EXPECT_EQ(sizeof(dirent), dirents[1].d_off);
554 EXPECT_EQ(sizeof(dirent), dirents[1].d_reclen); 558 EXPECT_EQ(sizeof(dirent), dirents[1].d_reclen);
555 EXPECT_STREQ(fileref_name_cstr_2, dirents[1].d_name); 559 EXPECT_STREQ(fileref_name_cstr_2, dirents[1].d_name);
556 } 560 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698