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

Side by Side Diff: chrome/browser/chromeos/drive/file_write_helper_unittest.cc

Issue 23050014: Convert drive::FileWriteHelper to a single function for simplification. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 7 years, 4 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
(Empty)
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
3 // found in the LICENSE file.
4
5 #include "chrome/browser/chromeos/drive/file_write_helper.h"
6
7 #include "base/bind.h"
8 #include "chrome/browser/chromeos/drive/dummy_file_system.h"
9 #include "chrome/browser/chromeos/drive/test_util.h"
10 #include "content/public/test/test_browser_thread_bundle.h"
11 #include "testing/gtest/include/gtest/gtest.h"
12
13 namespace drive {
14
15 namespace {
16
17 const base::FilePath::CharType kDrivePath[] =
18 FILE_PATH_LITERAL("drive/root/file.txt");
19 const base::FilePath::CharType kInvalidPath[] =
20 FILE_PATH_LITERAL("drive/invalid/path");
21 const base::FilePath::CharType kLocalPath[] =
22 FILE_PATH_LITERAL("/tmp/local.txt");
23
24 class TestFileSystem : public DummyFileSystem {
25 public:
26 TestFileSystem() : num_closed_(0) {
27 }
28
29 int num_closed() const { return num_closed_; }
30
31 // Mimics OpenFile. It fails if the |file_path| points to a hosted document.
32 virtual void OpenFile(const base::FilePath& file_path,
33 OpenMode open_mode,
34 const OpenFileCallback& callback) OVERRIDE {
35 EXPECT_EQ(OPEN_OR_CREATE_FILE, open_mode);
36
37 // Emulate a case of opening a hosted document.
38 if (file_path == base::FilePath(kInvalidPath)) {
39 callback.Run(FILE_ERROR_INVALID_OPERATION, base::FilePath(),
40 base::Closure());
41 return;
42 }
43
44 callback.Run(FILE_ERROR_OK, base::FilePath(kLocalPath),
45 base::Bind(&TestFileSystem::CloseFile,
46 base::Unretained(this)));
47 }
48
49 private:
50
51 void CloseFile() {
52 ++num_closed_;
53 }
54
55 int num_closed_;
56 };
57
58 } // namespace
59
60 class FileWriteHelperTest : public testing::Test {
61 public:
62 FileWriteHelperTest()
63 : test_file_system_(new TestFileSystem) {
64 }
65
66 protected:
67 content::TestBrowserThreadBundle thread_bundle_;
68 scoped_ptr<TestFileSystem> test_file_system_;
69 };
70
71 TEST_F(FileWriteHelperTest, PrepareFileForWritingSuccess) {
72 FileWriteHelper file_write_helper(test_file_system_.get());
73 FileError error = FILE_ERROR_FAILED;
74 base::FilePath path;
75 // The file should successfully be opened.
76 file_write_helper.PrepareWritableFileAndRun(
77 base::FilePath(kDrivePath),
78 google_apis::test_util::CreateCopyResultCallback(&error, &path));
79 test_util::RunBlockingPoolTask();
80
81 EXPECT_EQ(FILE_ERROR_OK, error);
82 EXPECT_EQ(kLocalPath, path.value());
83
84 // Make sure that the file is actually closed.
85 EXPECT_EQ(1, test_file_system_->num_closed());
86 }
87
88 TEST_F(FileWriteHelperTest, PrepareFileForWritingCreateFail) {
89 FileWriteHelper file_write_helper(test_file_system_.get());
90 FileError error = FILE_ERROR_FAILED;
91 base::FilePath path;
92 // Access to kInvalidPath should fail, and FileWriteHelper should not try to
93 // open or close the file.
94 file_write_helper.PrepareWritableFileAndRun(
95 base::FilePath(kInvalidPath),
96 google_apis::test_util::CreateCopyResultCallback(&error, &path));
97 test_util::RunBlockingPoolTask();
98
99 EXPECT_EQ(FILE_ERROR_INVALID_OPERATION, error);
100 EXPECT_TRUE(path.empty());
101 }
102
103 } // namespace drive
OLDNEW
« no previous file with comments | « chrome/browser/chromeos/drive/file_write_helper.cc ('k') | chrome/browser/chromeos/drive/write_on_cache_file.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698