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

Side by Side Diff: gpu/command_buffer/service/cmd_parser_test.cc

Issue 1859703002: convert //gpu to std::unique_ptr (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: rebase on master Created 4 years, 8 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
OLDNEW
1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2011 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 // Tests for the command parser. 5 // Tests for the command parser.
6 6
7 #include <stddef.h> 7 #include <stddef.h>
8 8
9 #include <memory>
10
9 #include "base/logging.h" 11 #include "base/logging.h"
10 #include "base/memory/scoped_ptr.h"
11 #include "gpu/command_buffer/service/cmd_parser.h" 12 #include "gpu/command_buffer/service/cmd_parser.h"
12 #include "gpu/command_buffer/service/mocks.h" 13 #include "gpu/command_buffer/service/mocks.h"
13 #include "testing/gtest/include/gtest/gtest.h" 14 #include "testing/gtest/include/gtest/gtest.h"
14 15
15 namespace gpu { 16 namespace gpu {
16 17
17 using testing::_; 18 using testing::_;
18 using testing::Invoke; 19 using testing::Invoke;
19 using testing::Mock; 20 using testing::Mock;
20 using testing::Return; 21 using testing::Return;
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after
54 55
55 parser->SetBuffer(buffer(), shm_size, 0, command_buffer_size); 56 parser->SetBuffer(buffer(), shm_size, 0, command_buffer_size);
56 return parser; 57 return parser;
57 } 58 }
58 59
59 unsigned int buffer_entry_count() { return 20; } 60 unsigned int buffer_entry_count() { return 20; }
60 AsyncAPIMock *api_mock() { return api_mock_.get(); } 61 AsyncAPIMock *api_mock() { return api_mock_.get(); }
61 CommandBufferEntry *buffer() { return buffer_.get(); } 62 CommandBufferEntry *buffer() { return buffer_.get(); }
62 private: 63 private:
63 unsigned int buffer_entry_count_; 64 unsigned int buffer_entry_count_;
64 scoped_ptr<AsyncAPIMock> api_mock_; 65 std::unique_ptr<AsyncAPIMock> api_mock_;
65 scoped_ptr<CommandBufferEntry[]> buffer_; 66 std::unique_ptr<CommandBufferEntry[]> buffer_;
66 Sequence sequence_; 67 Sequence sequence_;
67 }; 68 };
68 69
69 // Tests initialization conditions. 70 // Tests initialization conditions.
70 TEST_F(CommandParserTest, TestInit) { 71 TEST_F(CommandParserTest, TestInit) {
71 scoped_ptr<CommandParser> parser(MakeParser(10)); 72 std::unique_ptr<CommandParser> parser(MakeParser(10));
72 EXPECT_EQ(0, parser->get()); 73 EXPECT_EQ(0, parser->get());
73 EXPECT_EQ(0, parser->put()); 74 EXPECT_EQ(0, parser->put());
74 EXPECT_TRUE(parser->IsEmpty()); 75 EXPECT_TRUE(parser->IsEmpty());
75 } 76 }
76 77
77 // Tests simple commands. 78 // Tests simple commands.
78 TEST_F(CommandParserTest, TestSimple) { 79 TEST_F(CommandParserTest, TestSimple) {
79 scoped_ptr<CommandParser> parser(MakeParser(10)); 80 std::unique_ptr<CommandParser> parser(MakeParser(10));
80 CommandBufferOffset put = parser->put(); 81 CommandBufferOffset put = parser->put();
81 CommandHeader header; 82 CommandHeader header;
82 83
83 // add a single command, no args 84 // add a single command, no args
84 header.size = 1; 85 header.size = 1;
85 header.command = 123; 86 header.command = 123;
86 buffer()[put++].value_header = header; 87 buffer()[put++].value_header = header;
87 parser->set_put(put); 88 parser->set_put(put);
88 EXPECT_EQ(put, parser->put()); 89 EXPECT_EQ(put, parser->put());
89 90
(...skipping 12 matching lines...) Expand all
102 EXPECT_EQ(put, parser->put()); 103 EXPECT_EQ(put, parser->put());
103 104
104 AddDoCommandsExpect(error::kNoError, 1, 3, 3); 105 AddDoCommandsExpect(error::kNoError, 1, 3, 3);
105 EXPECT_EQ(error::kNoError, parser->ProcessCommands(1)); 106 EXPECT_EQ(error::kNoError, parser->ProcessCommands(1));
106 EXPECT_EQ(put, parser->get()); 107 EXPECT_EQ(put, parser->get());
107 Mock::VerifyAndClearExpectations(api_mock()); 108 Mock::VerifyAndClearExpectations(api_mock());
108 } 109 }
109 110
110 // Tests having multiple commands in the buffer. 111 // Tests having multiple commands in the buffer.
111 TEST_F(CommandParserTest, TestMultipleCommands) { 112 TEST_F(CommandParserTest, TestMultipleCommands) {
112 scoped_ptr<CommandParser> parser(MakeParser(10)); 113 std::unique_ptr<CommandParser> parser(MakeParser(10));
113 CommandBufferOffset put = parser->put(); 114 CommandBufferOffset put = parser->put();
114 CommandHeader header; 115 CommandHeader header;
115 116
116 // add 2 commands, test with single ProcessCommands() 117 // add 2 commands, test with single ProcessCommands()
117 header.size = 2; 118 header.size = 2;
118 header.command = 789; 119 header.command = 789;
119 buffer()[put++].value_header = header; 120 buffer()[put++].value_header = header;
120 buffer()[put++].value_int32 = 5151; 121 buffer()[put++].value_int32 = 5151;
121 122
122 CommandBufferOffset put_cmd2 = put; 123 CommandBufferOffset put_cmd2 = put;
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after
154 // 4 entries remaining. 155 // 4 entries remaining.
155 AddDoCommandsExpect( 156 AddDoCommandsExpect(
156 error::kNoError, CommandParser::kParseCommandsSlice, 4, 4); 157 error::kNoError, CommandParser::kParseCommandsSlice, 4, 4);
157 EXPECT_EQ(error::kNoError, parser->ProcessAllCommands()); 158 EXPECT_EQ(error::kNoError, parser->ProcessAllCommands());
158 EXPECT_EQ(put, parser->get()); 159 EXPECT_EQ(put, parser->get());
159 Mock::VerifyAndClearExpectations(api_mock()); 160 Mock::VerifyAndClearExpectations(api_mock());
160 } 161 }
161 162
162 // Tests that the parser will wrap correctly at the end of the buffer. 163 // Tests that the parser will wrap correctly at the end of the buffer.
163 TEST_F(CommandParserTest, TestWrap) { 164 TEST_F(CommandParserTest, TestWrap) {
164 scoped_ptr<CommandParser> parser(MakeParser(5)); 165 std::unique_ptr<CommandParser> parser(MakeParser(5));
165 CommandBufferOffset put = parser->put(); 166 CommandBufferOffset put = parser->put();
166 CommandHeader header; 167 CommandHeader header;
167 168
168 // add 3 commands with no args (1 word each) 169 // add 3 commands with no args (1 word each)
169 for (unsigned int i = 0; i < 3; ++i) { 170 for (unsigned int i = 0; i < 3; ++i) {
170 header.size = 1; 171 header.size = 1;
171 header.command = i; 172 header.command = i;
172 buffer()[put++].value_header = header; 173 buffer()[put++].value_header = header;
173 } 174 }
174 parser->set_put(put); 175 parser->set_put(put);
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after
206 EXPECT_EQ(put, parser->put()); 207 EXPECT_EQ(put, parser->put());
207 208
208 EXPECT_EQ(error::kNoError, parser->ProcessAllCommands()); 209 EXPECT_EQ(error::kNoError, parser->ProcessAllCommands());
209 EXPECT_EQ(put, parser->get()); 210 EXPECT_EQ(put, parser->get());
210 Mock::VerifyAndClearExpectations(api_mock()); 211 Mock::VerifyAndClearExpectations(api_mock());
211 } 212 }
212 213
213 // Tests error conditions. 214 // Tests error conditions.
214 TEST_F(CommandParserTest, TestError) { 215 TEST_F(CommandParserTest, TestError) {
215 const unsigned int kNumEntries = 5; 216 const unsigned int kNumEntries = 5;
216 scoped_ptr<CommandParser> parser(MakeParser(kNumEntries)); 217 std::unique_ptr<CommandParser> parser(MakeParser(kNumEntries));
217 CommandBufferOffset put = parser->put(); 218 CommandBufferOffset put = parser->put();
218 CommandHeader header; 219 CommandHeader header;
219 220
220 EXPECT_FALSE(parser->set_get(-1)); 221 EXPECT_FALSE(parser->set_get(-1));
221 EXPECT_FALSE(parser->set_get(kNumEntries)); 222 EXPECT_FALSE(parser->set_get(kNumEntries));
222 223
223 // Generate a command with size 0. 224 // Generate a command with size 0.
224 header.size = 0; 225 header.size = 0;
225 header.command = 3; 226 header.command = 3;
226 buffer()[put++].value_header = header; 227 buffer()[put++].value_header = header;
(...skipping 51 matching lines...) Expand 10 before | Expand all | Expand 10 after
278 Mock::VerifyAndClearExpectations(api_mock()); 279 Mock::VerifyAndClearExpectations(api_mock());
279 // make the second one succeed, and check that the parser recovered fine. 280 // make the second one succeed, and check that the parser recovered fine.
280 AddDoCommandsExpect( 281 AddDoCommandsExpect(
281 error::kNoError, CommandParser::kParseCommandsSlice, 1, 1); 282 error::kNoError, CommandParser::kParseCommandsSlice, 1, 1);
282 EXPECT_EQ(error::kNoError, parser->ProcessAllCommands()); 283 EXPECT_EQ(error::kNoError, parser->ProcessAllCommands());
283 EXPECT_EQ(put, parser->get()); 284 EXPECT_EQ(put, parser->get());
284 Mock::VerifyAndClearExpectations(api_mock()); 285 Mock::VerifyAndClearExpectations(api_mock());
285 } 286 }
286 287
287 TEST_F(CommandParserTest, SetBuffer) { 288 TEST_F(CommandParserTest, SetBuffer) {
288 scoped_ptr<CommandParser> parser(MakeParser(3)); 289 std::unique_ptr<CommandParser> parser(MakeParser(3));
289 CommandBufferOffset put = parser->put(); 290 CommandBufferOffset put = parser->put();
290 CommandHeader header; 291 CommandHeader header;
291 292
292 // add a single command, no args 293 // add a single command, no args
293 header.size = 2; 294 header.size = 2;
294 header.command = 123; 295 header.command = 123;
295 buffer()[put++].value_header = header; 296 buffer()[put++].value_header = header;
296 buffer()[put++].value_int32 = 456; 297 buffer()[put++].value_int32 = 456;
297 parser->set_put(put); 298 parser->set_put(put);
298 299
299 AddDoCommandsExpect( 300 AddDoCommandsExpect(
300 error::kNoError, CommandParser::kParseCommandsSlice, 2, 2); 301 error::kNoError, CommandParser::kParseCommandsSlice, 2, 2);
301 EXPECT_EQ(error::kNoError, parser->ProcessAllCommands()); 302 EXPECT_EQ(error::kNoError, parser->ProcessAllCommands());
302 // We should have advanced 2 entries 303 // We should have advanced 2 entries
303 EXPECT_EQ(2, parser->get()); 304 EXPECT_EQ(2, parser->get());
304 Mock::VerifyAndClearExpectations(api_mock()); 305 Mock::VerifyAndClearExpectations(api_mock());
305 306
306 scoped_ptr<CommandBufferEntry[]> buffer2(new CommandBufferEntry[2]); 307 std::unique_ptr<CommandBufferEntry[]> buffer2(new CommandBufferEntry[2]);
307 parser->SetBuffer( 308 parser->SetBuffer(
308 buffer2.get(), sizeof(CommandBufferEntry) * 2, 0, 309 buffer2.get(), sizeof(CommandBufferEntry) * 2, 0,
309 sizeof(CommandBufferEntry) * 2); 310 sizeof(CommandBufferEntry) * 2);
310 // The put and get should have reset to 0. 311 // The put and get should have reset to 0.
311 EXPECT_EQ(0, parser->get()); 312 EXPECT_EQ(0, parser->get());
312 EXPECT_EQ(0, parser->put()); 313 EXPECT_EQ(0, parser->put());
313 } 314 }
314 315
315 } // namespace gpu 316 } // namespace gpu
OLDNEW
« no previous file with comments | « gpu/command_buffer/service/buffer_manager_unittest.cc ('k') | gpu/command_buffer/service/command_buffer_service.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698