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

Side by Side Diff: ppapi/native_client/tests/ppapi_browser/ppb_file_io/test_open.cc

Issue 7740013: Cloning a bunch of stuff from the native_client repository at r6528 (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src/
Patch Set: Created 9 years, 3 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) 2011 The Native Client 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 "native_client/src/third_party/ppapi/c/pp_errors.h"
6 #include "native_client/src/third_party/ppapi/c/ppb_core.h"
7 #include "native_client/src/third_party/ppapi/c/ppb_file_io.h"
8 #include "native_client/src/third_party/ppapi/c/ppb_file_ref.h"
9 #include "native_client/src/third_party/ppapi/c/ppb_file_system.h"
10 #include "native_client/src/third_party/ppapi/c/ppb_url_loader.h"
11 #include "native_client/tests/ppapi_browser/ppb_file_io/common.h"
12 #include "native_client/tests/ppapi_test_lib/get_browser_interface.h"
13 #include "native_client/tests/ppapi_test_lib/test_interface.h"
14
15 namespace {
16
17 using common::BoundPPAPIFunc;
18 using common::FileIOTester;
19 using common::InitFileInfo;
20 using common::TestCallbackData;
21 using common::TestSequenceElement;
22
23 class TestOpenExistingFileSequenceElement : public TestSequenceElement {
24 public:
25 TestOpenExistingFileSequenceElement(const std::string& name,
26 int32_t expected_return_value,
27 int32_t expected_result, int32_t flags)
28 : TestSequenceElement(name, expected_return_value, expected_result),
29 flags_(flags) {}
30 virtual ~TestOpenExistingFileSequenceElement() {}
31
32 private:
33 virtual BoundPPAPIFunc GetCompletionCallbackInitiatingPPAPIFunction(
34 TestCallbackData* callback_data) {
35 return std::tr1::bind(PPBFileIO()->Open, callback_data->existing_file_io,
36 callback_data->existing_file_ref, flags_,
37 std::tr1::placeholders::_1);
38 }
39 virtual void Setup(TestCallbackData* callback_data) {
40 // We make sure the file io is closed before each test.
41 PPBFileIO()->Close(callback_data->existing_file_io);
42 }
43
44 const int32_t flags_;
45 };
46
47 class TestOpenNonExistingFileSequenceElement : public TestSequenceElement {
48 public:
49 TestOpenNonExistingFileSequenceElement(const std::string& name,
50 int32_t expected_return_value,
51 int32_t expected_result, int32_t flags)
52 : TestSequenceElement(name, expected_return_value, expected_result),
53 flags_(flags) {}
54 virtual ~TestOpenNonExistingFileSequenceElement() {}
55
56 private:
57 virtual BoundPPAPIFunc GetCompletionCallbackInitiatingPPAPIFunction(
58 TestCallbackData* callback_data) {
59 return std::tr1::bind(PPBFileIO()->Open,
60 callback_data->non_existing_file_io,
61 callback_data->non_existing_file_ref, flags_,
62 std::tr1::placeholders::_1);
63 }
64 virtual void Setup(TestCallbackData* callback_data) {
65 // We make sure the file io is closed before each test.
66 PPBFileIO()->Close(callback_data->non_existing_file_io);
67 }
68
69 const int32_t flags_;
70 };
71
72 class DeleteFile : public TestSequenceElement {
73 public:
74 DeleteFile()
75 : TestSequenceElement("DeleteFile", PP_OK_COMPLETIONPENDING, PP_OK) {}
76
77 private:
78 virtual BoundPPAPIFunc GetCompletionCallbackInitiatingPPAPIFunction(
79 TestCallbackData* callback_data) {
80 return std::tr1::bind(PPBFileRef()->Delete,
81 callback_data->non_existing_file_ref,
82 std::tr1::placeholders::_1);
83 }
84 };
85
86 void TestOpenNonExistingFile(PP_FileSystemType system_type) {
87 PP_FileInfo file_info = { 0 };
88 InitFileInfo(system_type, &file_info);
89
90 FileIOTester tester(file_info);
91 tester.AddSequenceElement(
92 new TestOpenNonExistingFileSequenceElement("TestOpenForRead",
93 PP_OK_COMPLETIONPENDING,
94 PP_ERROR_FILENOTFOUND,
95 PP_FILEOPENFLAG_READ));
96 tester.AddSequenceElement(
97 new TestOpenNonExistingFileSequenceElement("TestOpenForWrite",
98 PP_OK_COMPLETIONPENDING,
99 PP_ERROR_FILENOTFOUND,
100 PP_FILEOPENFLAG_WRITE));
101 tester.AddSequenceElement(
102 new TestOpenNonExistingFileSequenceElement("TestOpenForWriteCreate",
103 PP_OK_COMPLETIONPENDING,
104 PP_OK,
105 PP_FILEOPENFLAG_CREATE |
106 PP_FILEOPENFLAG_WRITE));
107 tester.AddSequenceElement(new DeleteFile);
108 tester.AddSequenceElement(
109 new TestOpenNonExistingFileSequenceElement(
110 "TestOpenForWriteCreateExclusive",
111 PP_OK_COMPLETIONPENDING,
112 PP_OK,
113 PP_FILEOPENFLAG_WRITE |
114 PP_FILEOPENFLAG_CREATE |
115 PP_FILEOPENFLAG_EXCLUSIVE));
116 tester.Run();
117 }
118
119 void TestOpenExistingFile(PP_FileSystemType system_type) {
120 PP_FileInfo file_info = { 0 };
121 InitFileInfo(system_type, &file_info);
122
123 FileIOTester tester(file_info);
124 tester.AddSequenceElement(
125 new TestOpenExistingFileSequenceElement("TestOpenForRead",
126 PP_OK_COMPLETIONPENDING, PP_OK,
127 PP_FILEOPENFLAG_READ));
128 tester.AddSequenceElement(
129 new TestOpenExistingFileSequenceElement("TestOpenForWrite",
130 PP_OK_COMPLETIONPENDING, PP_OK,
131 PP_FILEOPENFLAG_WRITE));
132 tester.AddSequenceElement(
133 new TestOpenExistingFileSequenceElement("TestOpenTruncate",
134 PP_ERROR_BADARGUMENT,
135 PP_ERROR_FAILED,
136 PP_FILEOPENFLAG_TRUNCATE));
137 tester.AddSequenceElement(
138 new TestOpenExistingFileSequenceElement("TestOpenForWriteCreateExclusive",
139 PP_OK_COMPLETIONPENDING,
140 PP_ERROR_FILEEXISTS,
141 PP_FILEOPENFLAG_WRITE |
142 PP_FILEOPENFLAG_CREATE |
143 PP_FILEOPENFLAG_EXCLUSIVE));
144 tester.AddSequenceElement(
145 new TestOpenExistingFileSequenceElement("TestOpenForWriteCreate",
146 PP_OK_COMPLETIONPENDING, PP_OK,
147 PP_FILEOPENFLAG_WRITE |
148 PP_FILEOPENFLAG_CREATE));
149 tester.Run();
150 }
151
152 } // namespace
153
154 void TestOpenExistingFileLocalPersistent() {
155 TestOpenExistingFile(PP_FILESYSTEMTYPE_LOCALPERSISTENT);
156 TEST_PASSED;
157 }
158
159 void TestOpenExistingFileLocalTemporary() {
160 TestOpenExistingFile(PP_FILESYSTEMTYPE_LOCALTEMPORARY);
161 TEST_PASSED;
162 }
163
164 void TestOpenNonExistingFileLocalPersistent() {
165 TestOpenNonExistingFile(PP_FILESYSTEMTYPE_LOCALPERSISTENT);
166 TEST_PASSED;
167 }
168
169 void TestOpenNonExistingFileLocalTemporary() {
170 TestOpenNonExistingFile(PP_FILESYSTEMTYPE_LOCALTEMPORARY);
171 TEST_PASSED;
172 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698