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

Side by Side Diff: command_buffer/client/cross/cmd_buffer_helper_test.cc

Issue 212018: Change command buffer client code to use structures.... (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/o3d/
Patch Set: '' Created 11 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
1 /* 1 /*
2 * Copyright 2009, Google Inc. 2 * Copyright 2009, Google Inc.
3 * All rights reserved. 3 * All rights reserved.
4 * 4 *
5 * Redistribution and use in source and binary forms, with or without 5 * Redistribution and use in source and binary forms, with or without
6 * modification, are permitted provided that the following conditions are 6 * modification, are permitted provided that the following conditions are
7 * met: 7 * met:
8 * 8 *
9 * * Redistributions of source code must retain the above copyright 9 * * Redistributions of source code must retain the above copyright
10 * notice, this list of conditions and the following disclaimer. 10 * notice, this list of conditions and the following disclaimer.
(...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after
51 // Test fixture for CommandBufferHelper test - Creates a CommandBufferHelper, 51 // Test fixture for CommandBufferHelper test - Creates a CommandBufferHelper,
52 // using a CommandBufferEngine with a mock AsyncAPIInterface for its interface 52 // using a CommandBufferEngine with a mock AsyncAPIInterface for its interface
53 // (calling it directly, not through the RPC mechanism). 53 // (calling it directly, not through the RPC mechanism).
54 class CommandBufferHelperTest : public testing::Test { 54 class CommandBufferHelperTest : public testing::Test {
55 protected: 55 protected:
56 virtual void SetUp() { 56 virtual void SetUp() {
57 api_mock_.reset(new AsyncAPIMock); 57 api_mock_.reset(new AsyncAPIMock);
58 // ignore noops in the mock - we don't want to inspect the internals of the 58 // ignore noops in the mock - we don't want to inspect the internals of the
59 // helper. 59 // helper.
60 EXPECT_CALL(*api_mock_, DoCommand(0, 0, _)) 60 EXPECT_CALL(*api_mock_, DoCommand(0, 0, _))
61 .WillRepeatedly(Return(BufferSyncInterface::PARSE_NO_ERROR)); 61 .WillRepeatedly(Return(BufferSyncInterface::kParseNoError));
62 engine_.reset(new CommandBufferEngine(api_mock_.get())); 62 engine_.reset(new CommandBufferEngine(api_mock_.get()));
63 api_mock_->set_engine(engine_.get()); 63 api_mock_->set_engine(engine_.get());
64 64
65 engine_->InitConnection(); 65 engine_->InitConnection();
66 helper_.reset(new CommandBufferHelper(engine_.get())); 66 helper_.reset(new CommandBufferHelper(engine_.get()));
67 helper_->Init(10); 67 helper_->Init(10);
68 } 68 }
69 69
70 virtual void TearDown() { 70 virtual void TearDown() {
71 helper_.release(); 71 helper_.release();
(...skipping 47 matching lines...) Expand 10 before | Expand all | Expand 10 after
119 Sequence sequence_; 119 Sequence sequence_;
120 }; 120 };
121 121
122 // Checks that commands in the buffer are properly executed, and that the 122 // Checks that commands in the buffer are properly executed, and that the
123 // status/error stay valid. 123 // status/error stay valid.
124 TEST_F(CommandBufferHelperTest, TestCommandProcessing) { 124 TEST_F(CommandBufferHelperTest, TestCommandProcessing) {
125 // Check initial state of the engine - it should have been configured by the 125 // Check initial state of the engine - it should have been configured by the
126 // helper. 126 // helper.
127 EXPECT_TRUE(engine()->rpc_impl() != NULL); 127 EXPECT_TRUE(engine()->rpc_impl() != NULL);
128 EXPECT_TRUE(engine()->parser() != NULL); 128 EXPECT_TRUE(engine()->parser() != NULL);
129 EXPECT_EQ(BufferSyncInterface::PARSING, engine()->GetStatus()); 129 EXPECT_EQ(BufferSyncInterface::kParsing, engine()->GetStatus());
130 EXPECT_EQ(BufferSyncInterface::PARSE_NO_ERROR, engine()->GetParseError()); 130 EXPECT_EQ(BufferSyncInterface::kParseNoError, engine()->GetParseError());
131 EXPECT_EQ(0, engine()->Get()); 131 EXPECT_EQ(0, engine()->Get());
132 132
133 // Add 3 commands through the helper 133 // Add 3 commands through the helper
134 AddCommandWithExpect(BufferSyncInterface::PARSE_NO_ERROR, 1, 0, NULL); 134 AddCommandWithExpect(BufferSyncInterface::kParseNoError, 1, 0, NULL);
135 135
136 CommandBufferEntry args1[2]; 136 CommandBufferEntry args1[2];
137 args1[0].value_uint32 = 3; 137 args1[0].value_uint32 = 3;
138 args1[1].value_float = 4.f; 138 args1[1].value_float = 4.f;
139 AddCommandWithExpect(BufferSyncInterface::PARSE_NO_ERROR, 2, 2, args1); 139 AddCommandWithExpect(BufferSyncInterface::kParseNoError, 2, 2, args1);
140 140
141 CommandBufferEntry args2[2]; 141 CommandBufferEntry args2[2];
142 args2[0].value_uint32 = 5; 142 args2[0].value_uint32 = 5;
143 args2[1].value_float = 6.f; 143 args2[1].value_float = 6.f;
144 AddCommandWithExpect(BufferSyncInterface::PARSE_NO_ERROR, 3, 2, args2); 144 AddCommandWithExpect(BufferSyncInterface::kParseNoError, 3, 2, args2);
145 145
146 helper()->Flush(); 146 helper()->Flush();
147 // Check that the engine has work to do now. 147 // Check that the engine has work to do now.
148 EXPECT_FALSE(engine()->parser()->IsEmpty()); 148 EXPECT_FALSE(engine()->parser()->IsEmpty());
149 149
150 // Wait until it's done. 150 // Wait until it's done.
151 helper()->Finish(); 151 helper()->Finish();
152 // Check that the engine has no more work to do. 152 // Check that the engine has no more work to do.
153 EXPECT_TRUE(engine()->parser()->IsEmpty()); 153 EXPECT_TRUE(engine()->parser()->IsEmpty());
154 154
155 // Check that the commands did happen. 155 // Check that the commands did happen.
156 Mock::VerifyAndClearExpectations(api_mock()); 156 Mock::VerifyAndClearExpectations(api_mock());
157 157
158 // Check the error status. 158 // Check the error status.
159 ASSERT_EQ(BufferSyncInterface::PARSING, engine()->GetStatus()); 159 ASSERT_EQ(BufferSyncInterface::kParsing, engine()->GetStatus());
160 EXPECT_EQ(BufferSyncInterface::PARSE_NO_ERROR, engine()->GetParseError()); 160 EXPECT_EQ(BufferSyncInterface::kParseNoError, engine()->GetParseError());
161 } 161 }
162 162
163 // Checks that commands in the buffer are properly executed when wrapping the 163 // Checks that commands in the buffer are properly executed when wrapping the
164 // buffer, and that the status/error stay valid. 164 // buffer, and that the status/error stay valid.
165 TEST_F(CommandBufferHelperTest, TestCommandWrapping) { 165 TEST_F(CommandBufferHelperTest, TestCommandWrapping) {
166 // Add 5 commands of size 3 through the helper to make sure we do wrap. 166 // Add 5 commands of size 3 through the helper to make sure we do wrap.
167 CommandBufferEntry args1[2]; 167 CommandBufferEntry args1[2];
168 args1[0].value_uint32 = 3; 168 args1[0].value_uint32 = 3;
169 args1[1].value_float = 4.f; 169 args1[1].value_float = 4.f;
170 170
171 for (unsigned int i = 0; i < 5; ++i) { 171 for (unsigned int i = 0; i < 5; ++i) {
172 AddCommandWithExpect(BufferSyncInterface::PARSE_NO_ERROR, i+1, 2, args1); 172 AddCommandWithExpect(BufferSyncInterface::kParseNoError, i+1, 2, args1);
173 } 173 }
174 174
175 helper()->Finish(); 175 helper()->Finish();
176 // Check that the commands did happen. 176 // Check that the commands did happen.
177 Mock::VerifyAndClearExpectations(api_mock()); 177 Mock::VerifyAndClearExpectations(api_mock());
178 178
179 // Check the error status. 179 // Check the error status.
180 ASSERT_EQ(BufferSyncInterface::PARSING, engine()->GetStatus()); 180 ASSERT_EQ(BufferSyncInterface::kParsing, engine()->GetStatus());
181 EXPECT_EQ(BufferSyncInterface::PARSE_NO_ERROR, engine()->GetParseError()); 181 EXPECT_EQ(BufferSyncInterface::kParseNoError, engine()->GetParseError());
182 } 182 }
183 183
184 184
185 // Checks that commands in the buffer are properly executed, even if they 185 // Checks that commands in the buffer are properly executed, even if they
186 // generate a recoverable error. Check that the error status is properly set, 186 // generate a recoverable error. Check that the error status is properly set,
187 // and reset when queried. 187 // and reset when queried.
188 TEST_F(CommandBufferHelperTest, TestRecoverableError) { 188 TEST_F(CommandBufferHelperTest, TestRecoverableError) {
189 CommandBufferEntry args[2]; 189 CommandBufferEntry args[2];
190 args[0].value_uint32 = 3; 190 args[0].value_uint32 = 3;
191 args[1].value_float = 4.f; 191 args[1].value_float = 4.f;
192 192
193 // Create a command buffer with 3 commands, 2 of them generating errors 193 // Create a command buffer with 3 commands, 2 of them generating errors
194 AddCommandWithExpect(BufferSyncInterface::PARSE_NO_ERROR, 1, 2, args); 194 AddCommandWithExpect(BufferSyncInterface::kParseNoError, 1, 2, args);
195 AddCommandWithExpect(BufferSyncInterface::PARSE_UNKNOWN_COMMAND, 2, 2, args); 195 AddCommandWithExpect(BufferSyncInterface::kParseUnknownCommand, 2, 2, args);
196 AddCommandWithExpect(BufferSyncInterface::PARSE_INVALID_ARGUMENTS, 3, 2, 196 AddCommandWithExpect(BufferSyncInterface::kParseInvalidArguments, 3, 2,
197 args); 197 args);
198 198
199 helper()->Finish(); 199 helper()->Finish();
200 // Check that the commands did happen. 200 // Check that the commands did happen.
201 Mock::VerifyAndClearExpectations(api_mock()); 201 Mock::VerifyAndClearExpectations(api_mock());
202 202
203 // Check that the error status was set to the first error. 203 // Check that the error status was set to the first error.
204 EXPECT_EQ(BufferSyncInterface::PARSE_UNKNOWN_COMMAND, 204 EXPECT_EQ(BufferSyncInterface::kParseUnknownCommand,
205 engine()->GetParseError()); 205 engine()->GetParseError());
206 // Check that the error status was reset after the query. 206 // Check that the error status was reset after the query.
207 EXPECT_EQ(BufferSyncInterface::PARSE_NO_ERROR, engine()->GetParseError()); 207 EXPECT_EQ(BufferSyncInterface::kParseNoError, engine()->GetParseError());
208 208
209 engine()->CloseConnection(); 209 engine()->CloseConnection();
210 } 210 }
211 211
212 // Checks that asking for available entries work, and that the parser 212 // Checks that asking for available entries work, and that the parser
213 // effectively won't use that space. 213 // effectively won't use that space.
214 TEST_F(CommandBufferHelperTest, TestAvailableEntries) { 214 TEST_F(CommandBufferHelperTest, TestAvailableEntries) {
215 CommandBufferEntry args[2]; 215 CommandBufferEntry args[2];
216 args[0].value_uint32 = 3; 216 args[0].value_uint32 = 3;
217 args[1].value_float = 4.f; 217 args[1].value_float = 4.f;
218 218
219 // Add 2 commands through the helper - 8 entries 219 // Add 2 commands through the helper - 8 entries
220 AddCommandWithExpect(BufferSyncInterface::PARSE_NO_ERROR, 1, 0, NULL); 220 AddCommandWithExpect(BufferSyncInterface::kParseNoError, 1, 0, NULL);
221 AddCommandWithExpect(BufferSyncInterface::PARSE_NO_ERROR, 2, 0, NULL); 221 AddCommandWithExpect(BufferSyncInterface::kParseNoError, 2, 0, NULL);
222 AddCommandWithExpect(BufferSyncInterface::PARSE_NO_ERROR, 3, 2, args); 222 AddCommandWithExpect(BufferSyncInterface::kParseNoError, 3, 2, args);
223 AddCommandWithExpect(BufferSyncInterface::PARSE_NO_ERROR, 4, 2, args); 223 AddCommandWithExpect(BufferSyncInterface::kParseNoError, 4, 2, args);
224 224
225 // Ask for 5 entries. 225 // Ask for 5 entries.
226 helper()->WaitForAvailableEntries(5); 226 helper()->WaitForAvailableEntries(5);
227 227
228 CommandBufferOffset put = get_helper_put(); 228 CommandBufferOffset put = get_helper_put();
229 CheckFreeSpace(put, 5); 229 CheckFreeSpace(put, 5);
230 230
231 // Add more commands. 231 // Add more commands.
232 AddCommandWithExpect(BufferSyncInterface::PARSE_NO_ERROR, 5, 2, args); 232 AddCommandWithExpect(BufferSyncInterface::kParseNoError, 5, 2, args);
233 233
234 // Wait until everything is done done. 234 // Wait until everything is done done.
235 helper()->Finish(); 235 helper()->Finish();
236 236
237 // Check that the commands did happen. 237 // Check that the commands did happen.
238 Mock::VerifyAndClearExpectations(api_mock()); 238 Mock::VerifyAndClearExpectations(api_mock());
239 239
240 // Check the error status. 240 // Check the error status.
241 ASSERT_EQ(BufferSyncInterface::PARSING, engine()->GetStatus()); 241 ASSERT_EQ(BufferSyncInterface::kParsing, engine()->GetStatus());
242 EXPECT_EQ(BufferSyncInterface::PARSE_NO_ERROR, engine()->GetParseError()); 242 EXPECT_EQ(BufferSyncInterface::kParseNoError, engine()->GetParseError());
243 } 243 }
244 244
245 // Checks that the InsertToken/WaitForToken work. 245 // Checks that the InsertToken/WaitForToken work.
246 TEST_F(CommandBufferHelperTest, TestToken) { 246 TEST_F(CommandBufferHelperTest, TestToken) {
247 CommandBufferEntry args[2]; 247 CommandBufferEntry args[2];
248 args[0].value_uint32 = 3; 248 args[0].value_uint32 = 3;
249 args[1].value_float = 4.f; 249 args[1].value_float = 4.f;
250 250
251 // Add a first command. 251 // Add a first command.
252 AddCommandWithExpect(BufferSyncInterface::PARSE_NO_ERROR, 3, 2, args); 252 AddCommandWithExpect(BufferSyncInterface::kParseNoError, 3, 2, args);
253 // keep track of the buffer position. 253 // keep track of the buffer position.
254 CommandBufferOffset command1_put = get_helper_put(); 254 CommandBufferOffset command1_put = get_helper_put();
255 unsigned int token = helper()->InsertToken(); 255 unsigned int token = helper()->InsertToken();
256 256
257 EXPECT_CALL(*api_mock(), DoCommand(SET_TOKEN, 1, _)) 257 EXPECT_CALL(*api_mock(), DoCommand(kSetToken, 1, _))
258 .WillOnce(DoAll(Invoke(api_mock(), &AsyncAPIMock::SetToken), 258 .WillOnce(DoAll(Invoke(api_mock(), &AsyncAPIMock::SetToken),
259 Return(BufferSyncInterface::PARSE_NO_ERROR))); 259 Return(BufferSyncInterface::kParseNoError)));
260 // Add another command. 260 // Add another command.
261 AddCommandWithExpect(BufferSyncInterface::PARSE_NO_ERROR, 4, 2, args); 261 AddCommandWithExpect(BufferSyncInterface::kParseNoError, 4, 2, args);
262 helper()->WaitForToken(token); 262 helper()->WaitForToken(token);
263 // check that the get pointer is beyond the first command. 263 // check that the get pointer is beyond the first command.
264 EXPECT_LE(command1_put, engine()->Get()); 264 EXPECT_LE(command1_put, engine()->Get());
265 helper()->Finish(); 265 helper()->Finish();
266 266
267 // Check that the commands did happen. 267 // Check that the commands did happen.
268 Mock::VerifyAndClearExpectations(api_mock()); 268 Mock::VerifyAndClearExpectations(api_mock());
269 269
270 // Check the error status. 270 // Check the error status.
271 ASSERT_EQ(BufferSyncInterface::PARSING, engine()->GetStatus()); 271 ASSERT_EQ(BufferSyncInterface::kParsing, engine()->GetStatus());
272 EXPECT_EQ(BufferSyncInterface::PARSE_NO_ERROR, engine()->GetParseError()); 272 EXPECT_EQ(BufferSyncInterface::kParseNoError, engine()->GetParseError());
273 } 273 }
274 274
275 } // namespace command_buffer 275 } // namespace command_buffer
276 } // namespace o3d 276 } // namespace o3d
OLDNEW
« no previous file with comments | « command_buffer/client/cross/cmd_buffer_helper.cc ('k') | command_buffer/client/cross/effect_helper.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698