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

Side by Side Diff: media/midi/midi_manager_usb_unittest.cc

Issue 1217853007: Web MIDI: add a new UMA entry for the final result code (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: review #16 Created 5 years, 5 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 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 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 #include "media/midi/midi_manager_usb.h" 5 #include "media/midi/midi_manager_usb.h"
6 6
7 #include <string> 7 #include <string>
8 8
9 #include "base/message_loop/message_loop.h" 9 #include "base/message_loop/message_loop.h"
10 #include "base/run_loop.h" 10 #include "base/run_loop.h"
(...skipping 73 matching lines...) Expand 10 before | Expand all | Expand 10 after
84 std::string device_version_; 84 std::string device_version_;
85 Logger* logger_; 85 Logger* logger_;
86 86
87 DISALLOW_COPY_AND_ASSIGN(FakeUsbMidiDevice); 87 DISALLOW_COPY_AND_ASSIGN(FakeUsbMidiDevice);
88 }; 88 };
89 89
90 class FakeMidiManagerClient : public MidiManagerClient { 90 class FakeMidiManagerClient : public MidiManagerClient {
91 public: 91 public:
92 explicit FakeMidiManagerClient(Logger* logger) 92 explicit FakeMidiManagerClient(Logger* logger)
93 : complete_start_session_(false), 93 : complete_start_session_(false),
94 result_(MIDI_NOT_SUPPORTED), 94 result_(Result::NOT_SUPPORTED),
95 logger_(logger) {} 95 logger_(logger) {}
96 ~FakeMidiManagerClient() override {} 96 ~FakeMidiManagerClient() override {}
97 97
98 void AddInputPort(const MidiPortInfo& info) override { 98 void AddInputPort(const MidiPortInfo& info) override {
99 input_ports_.push_back(info); 99 input_ports_.push_back(info);
100 } 100 }
101 101
102 void AddOutputPort(const MidiPortInfo& info) override { 102 void AddOutputPort(const MidiPortInfo& info) override {
103 output_ports_.push_back(info); 103 output_ports_.push_back(info);
104 } 104 }
105 105
106 void SetInputPortState(uint32 port_index, MidiPortState state) override {} 106 void SetInputPortState(uint32 port_index, MidiPortState state) override {}
107 107
108 void SetOutputPortState(uint32 port_index, MidiPortState state) override {} 108 void SetOutputPortState(uint32 port_index, MidiPortState state) override {}
109 109
110 void CompleteStartSession(MidiResult result) override { 110 void CompleteStartSession(Result result) override {
111 complete_start_session_ = true; 111 complete_start_session_ = true;
112 result_ = result; 112 result_ = result;
113 } 113 }
114 114
115 void ReceiveMidiData(uint32 port_index, 115 void ReceiveMidiData(uint32 port_index,
116 const uint8* data, 116 const uint8* data,
117 size_t size, 117 size_t size,
118 double timestamp) override { 118 double timestamp) override {
119 logger_->AddLog("MidiManagerClient::ReceiveMidiData "); 119 logger_->AddLog("MidiManagerClient::ReceiveMidiData ");
120 logger_->AddLog(base::StringPrintf("port_index = %d data =", port_index)); 120 logger_->AddLog(base::StringPrintf("port_index = %d data =", port_index));
121 for (size_t i = 0; i < size; ++i) 121 for (size_t i = 0; i < size; ++i)
122 logger_->AddLog(base::StringPrintf(" 0x%02x", data[i])); 122 logger_->AddLog(base::StringPrintf(" 0x%02x", data[i]));
123 logger_->AddLog("\n"); 123 logger_->AddLog("\n");
124 } 124 }
125 125
126 void AccumulateMidiBytesSent(size_t size) override { 126 void AccumulateMidiBytesSent(size_t size) override {
127 logger_->AddLog("MidiManagerClient::AccumulateMidiBytesSent "); 127 logger_->AddLog("MidiManagerClient::AccumulateMidiBytesSent ");
128 // Windows has no "%zu". 128 // Windows has no "%zu".
129 logger_->AddLog(base::StringPrintf("size = %u\n", 129 logger_->AddLog(base::StringPrintf("size = %u\n",
130 static_cast<unsigned>(size))); 130 static_cast<unsigned>(size)));
131 } 131 }
132 132
133 bool complete_start_session_; 133 bool complete_start_session_;
134 MidiResult result_; 134 Result result_;
135 MidiPortInfoList input_ports_; 135 MidiPortInfoList input_ports_;
136 MidiPortInfoList output_ports_; 136 MidiPortInfoList output_ports_;
137 137
138 private: 138 private:
139 Logger* logger_; 139 Logger* logger_;
140 140
141 DISALLOW_COPY_AND_ASSIGN(FakeMidiManagerClient); 141 DISALLOW_COPY_AND_ASSIGN(FakeMidiManagerClient);
142 }; 142 };
143 143
144 class TestUsbMidiDeviceFactory : public UsbMidiDevice::Factory { 144 class TestUsbMidiDeviceFactory : public UsbMidiDevice::Factory {
(...skipping 11 matching lines...) Expand all
156 DISALLOW_COPY_AND_ASSIGN(TestUsbMidiDeviceFactory); 156 DISALLOW_COPY_AND_ASSIGN(TestUsbMidiDeviceFactory);
157 }; 157 };
158 158
159 class MidiManagerUsbForTesting : public MidiManagerUsb { 159 class MidiManagerUsbForTesting : public MidiManagerUsb {
160 public: 160 public:
161 explicit MidiManagerUsbForTesting( 161 explicit MidiManagerUsbForTesting(
162 scoped_ptr<UsbMidiDevice::Factory> device_factory) 162 scoped_ptr<UsbMidiDevice::Factory> device_factory)
163 : MidiManagerUsb(device_factory.Pass()) {} 163 : MidiManagerUsb(device_factory.Pass()) {}
164 ~MidiManagerUsbForTesting() override {} 164 ~MidiManagerUsbForTesting() override {}
165 165
166 void CallCompleteInitialization(MidiResult result) { 166 void CallCompleteInitialization(Result result) {
167 CompleteInitialization(result); 167 CompleteInitialization(result);
168 base::RunLoop run_loop; 168 base::RunLoop run_loop;
169 run_loop.RunUntilIdle(); 169 run_loop.RunUntilIdle();
170 } 170 }
171 171
172 private: 172 private:
173 DISALLOW_COPY_AND_ASSIGN(MidiManagerUsbForTesting); 173 DISALLOW_COPY_AND_ASSIGN(MidiManagerUsbForTesting);
174 }; 174 };
175 175
176 class MidiManagerUsbTest : public ::testing::Test { 176 class MidiManagerUsbTest : public ::testing::Test {
(...skipping 17 matching lines...) Expand all
194 } 194 }
195 195
196 void Finalize() { 196 void Finalize() {
197 manager_->EndSession(client_.get()); 197 manager_->EndSession(client_.get());
198 } 198 }
199 199
200 bool IsInitializationCallbackInvoked() { 200 bool IsInitializationCallbackInvoked() {
201 return client_->complete_start_session_; 201 return client_->complete_start_session_;
202 } 202 }
203 203
204 MidiResult GetInitializationResult() { 204 Result GetInitializationResult() { return client_->result_; }
205 return client_->result_;
206 }
207 205
208 void RunCallbackUntilCallbackInvoked( 206 void RunCallbackUntilCallbackInvoked(
209 bool result, UsbMidiDevice::Devices* devices) { 207 bool result, UsbMidiDevice::Devices* devices) {
210 factory_->callback_.Run(result, devices); 208 factory_->callback_.Run(result, devices);
211 while (!client_->complete_start_session_) { 209 while (!client_->complete_start_session_) {
212 base::RunLoop run_loop; 210 base::RunLoop run_loop;
213 run_loop.RunUntilIdle(); 211 run_loop.RunUntilIdle();
214 } 212 }
215 } 213 }
216 214
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after
251 device->SetDescriptors(ToVector(descriptors)); 249 device->SetDescriptors(ToVector(descriptors));
252 device->SetManufacturer("vendor1"); 250 device->SetManufacturer("vendor1");
253 device->SetProductName("device1"); 251 device->SetProductName("device1");
254 device->SetDeviceVersion("1.02"); 252 device->SetDeviceVersion("1.02");
255 253
256 Initialize(); 254 Initialize();
257 ScopedVector<UsbMidiDevice> devices; 255 ScopedVector<UsbMidiDevice> devices;
258 devices.push_back(device.Pass()); 256 devices.push_back(device.Pass());
259 EXPECT_FALSE(IsInitializationCallbackInvoked()); 257 EXPECT_FALSE(IsInitializationCallbackInvoked());
260 RunCallbackUntilCallbackInvoked(true, &devices); 258 RunCallbackUntilCallbackInvoked(true, &devices);
261 EXPECT_EQ(MIDI_OK, GetInitializationResult()); 259 EXPECT_EQ(Result::OK, GetInitializationResult());
262 260
263 ASSERT_EQ(1u, input_ports().size()); 261 ASSERT_EQ(1u, input_ports().size());
264 EXPECT_EQ("port-0-2", input_ports()[0].id); 262 EXPECT_EQ("port-0-2", input_ports()[0].id);
265 EXPECT_EQ("vendor1", input_ports()[0].manufacturer); 263 EXPECT_EQ("vendor1", input_ports()[0].manufacturer);
266 EXPECT_EQ("device1", input_ports()[0].name); 264 EXPECT_EQ("device1", input_ports()[0].name);
267 EXPECT_EQ("1.02", input_ports()[0].version); 265 EXPECT_EQ("1.02", input_ports()[0].version);
268 266
269 ASSERT_EQ(2u, output_ports().size()); 267 ASSERT_EQ(2u, output_ports().size());
270 EXPECT_EQ("port-0-0", output_ports()[0].id); 268 EXPECT_EQ("port-0-0", output_ports()[0].id);
271 EXPECT_EQ("vendor1", output_ports()[0].manufacturer); 269 EXPECT_EQ("vendor1", output_ports()[0].manufacturer);
(...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after
312 device2->SetManufacturer("vendor2"); 310 device2->SetManufacturer("vendor2");
313 device2->SetProductName("device2"); 311 device2->SetProductName("device2");
314 device2->SetDeviceVersion("98.76"); 312 device2->SetDeviceVersion("98.76");
315 313
316 Initialize(); 314 Initialize();
317 ScopedVector<UsbMidiDevice> devices; 315 ScopedVector<UsbMidiDevice> devices;
318 devices.push_back(device1.Pass()); 316 devices.push_back(device1.Pass());
319 devices.push_back(device2.Pass()); 317 devices.push_back(device2.Pass());
320 EXPECT_FALSE(IsInitializationCallbackInvoked()); 318 EXPECT_FALSE(IsInitializationCallbackInvoked());
321 RunCallbackUntilCallbackInvoked(true, &devices); 319 RunCallbackUntilCallbackInvoked(true, &devices);
322 EXPECT_EQ(MIDI_OK, GetInitializationResult()); 320 EXPECT_EQ(Result::OK, GetInitializationResult());
323 321
324 ASSERT_EQ(2u, input_ports().size()); 322 ASSERT_EQ(2u, input_ports().size());
325 EXPECT_EQ("port-0-2", input_ports()[0].id); 323 EXPECT_EQ("port-0-2", input_ports()[0].id);
326 EXPECT_EQ("vendor1", input_ports()[0].manufacturer); 324 EXPECT_EQ("vendor1", input_ports()[0].manufacturer);
327 EXPECT_EQ("device1", input_ports()[0].name); 325 EXPECT_EQ("device1", input_ports()[0].name);
328 EXPECT_EQ("1.02", input_ports()[0].version); 326 EXPECT_EQ("1.02", input_ports()[0].version);
329 EXPECT_EQ("port-1-2", input_ports()[1].id); 327 EXPECT_EQ("port-1-2", input_ports()[1].id);
330 EXPECT_EQ("vendor2", input_ports()[1].manufacturer); 328 EXPECT_EQ("vendor2", input_ports()[1].manufacturer);
331 EXPECT_EQ("device2", input_ports()[1].name); 329 EXPECT_EQ("device2", input_ports()[1].name);
332 EXPECT_EQ("98.76", input_ports()[1].version); 330 EXPECT_EQ("98.76", input_ports()[1].version);
(...skipping 28 matching lines...) Expand all
361 "UsbMidiDevice::GetDescriptors\n" 359 "UsbMidiDevice::GetDescriptors\n"
362 "UsbMidiDevice::GetDescriptors\n", 360 "UsbMidiDevice::GetDescriptors\n",
363 logger_.TakeLog()); 361 logger_.TakeLog());
364 } 362 }
365 363
366 TEST_F(MidiManagerUsbTest, InitializeFail) { 364 TEST_F(MidiManagerUsbTest, InitializeFail) {
367 Initialize(); 365 Initialize();
368 366
369 EXPECT_FALSE(IsInitializationCallbackInvoked()); 367 EXPECT_FALSE(IsInitializationCallbackInvoked());
370 RunCallbackUntilCallbackInvoked(false, NULL); 368 RunCallbackUntilCallbackInvoked(false, NULL);
371 EXPECT_EQ(MIDI_INITIALIZATION_ERROR, GetInitializationResult()); 369 EXPECT_EQ(Result::INITIALIZATION_ERROR, GetInitializationResult());
372 } 370 }
373 371
374 TEST_F(MidiManagerUsbTest, InitializeFailBecauseOfInvalidDescriptors) { 372 TEST_F(MidiManagerUsbTest, InitializeFailBecauseOfInvalidDescriptors) {
375 scoped_ptr<FakeUsbMidiDevice> device(new FakeUsbMidiDevice(&logger_)); 373 scoped_ptr<FakeUsbMidiDevice> device(new FakeUsbMidiDevice(&logger_));
376 uint8 descriptors[] = {0x04}; 374 uint8 descriptors[] = {0x04};
377 device->SetDescriptors(ToVector(descriptors)); 375 device->SetDescriptors(ToVector(descriptors));
378 376
379 Initialize(); 377 Initialize();
380 ScopedVector<UsbMidiDevice> devices; 378 ScopedVector<UsbMidiDevice> devices;
381 devices.push_back(device.Pass()); 379 devices.push_back(device.Pass());
382 EXPECT_FALSE(IsInitializationCallbackInvoked()); 380 EXPECT_FALSE(IsInitializationCallbackInvoked());
383 RunCallbackUntilCallbackInvoked(true, &devices); 381 RunCallbackUntilCallbackInvoked(true, &devices);
384 EXPECT_EQ(MIDI_INITIALIZATION_ERROR, GetInitializationResult()); 382 EXPECT_EQ(Result::INITIALIZATION_ERROR, GetInitializationResult());
385 EXPECT_EQ("UsbMidiDevice::GetDescriptors\n", logger_.TakeLog()); 383 EXPECT_EQ("UsbMidiDevice::GetDescriptors\n", logger_.TakeLog());
386 } 384 }
387 385
388 TEST_F(MidiManagerUsbTest, Send) { 386 TEST_F(MidiManagerUsbTest, Send) {
389 Initialize(); 387 Initialize();
390 scoped_ptr<FakeUsbMidiDevice> device(new FakeUsbMidiDevice(&logger_)); 388 scoped_ptr<FakeUsbMidiDevice> device(new FakeUsbMidiDevice(&logger_));
391 uint8 descriptors[] = { 389 uint8 descriptors[] = {
392 0x12, 0x01, 0x10, 0x01, 0x00, 0x00, 0x00, 0x08, 0x86, 0x1a, 390 0x12, 0x01, 0x10, 0x01, 0x00, 0x00, 0x00, 0x08, 0x86, 0x1a,
393 0x2d, 0x75, 0x54, 0x02, 0x00, 0x02, 0x00, 0x01, 0x09, 0x02, 391 0x2d, 0x75, 0x54, 0x02, 0x00, 0x02, 0x00, 0x01, 0x09, 0x02,
394 0x75, 0x00, 0x02, 0x01, 0x00, 0x80, 0x30, 0x09, 0x04, 0x00, 392 0x75, 0x00, 0x02, 0x01, 0x00, 0x80, 0x30, 0x09, 0x04, 0x00,
(...skipping 13 matching lines...) Expand all
408 device->SetDescriptors(ToVector(descriptors)); 406 device->SetDescriptors(ToVector(descriptors));
409 uint8 data[] = { 407 uint8 data[] = {
410 0x90, 0x45, 0x7f, 408 0x90, 0x45, 0x7f,
411 0xf0, 0x00, 0x01, 0xf7, 409 0xf0, 0x00, 0x01, 0xf7,
412 }; 410 };
413 411
414 ScopedVector<UsbMidiDevice> devices; 412 ScopedVector<UsbMidiDevice> devices;
415 devices.push_back(device.Pass()); 413 devices.push_back(device.Pass());
416 EXPECT_FALSE(IsInitializationCallbackInvoked()); 414 EXPECT_FALSE(IsInitializationCallbackInvoked());
417 RunCallbackUntilCallbackInvoked(true, &devices); 415 RunCallbackUntilCallbackInvoked(true, &devices);
418 EXPECT_EQ(MIDI_OK, GetInitializationResult()); 416 EXPECT_EQ(Result::OK, GetInitializationResult());
419 ASSERT_EQ(2u, manager_->output_streams().size()); 417 ASSERT_EQ(2u, manager_->output_streams().size());
420 418
421 manager_->DispatchSendMidiData(client_.get(), 1, ToVector(data), 0); 419 manager_->DispatchSendMidiData(client_.get(), 1, ToVector(data), 0);
422 // Since UsbMidiDevice::Send is posted as a task, RunLoop should run to 420 // Since UsbMidiDevice::Send is posted as a task, RunLoop should run to
423 // invoke the task. 421 // invoke the task.
424 base::RunLoop run_loop; 422 base::RunLoop run_loop;
425 run_loop.RunUntilIdle(); 423 run_loop.RunUntilIdle();
426 EXPECT_EQ("UsbMidiDevice::GetDescriptors\n" 424 EXPECT_EQ("UsbMidiDevice::GetDescriptors\n"
427 "UsbMidiDevice::Send endpoint = 2 data = " 425 "UsbMidiDevice::Send endpoint = 2 data = "
428 "0x19 0x90 0x45 0x7f " 426 "0x19 0x90 0x45 0x7f "
(...skipping 26 matching lines...) Expand all
455 uint8 data[] = { 453 uint8 data[] = {
456 0x90, 0x45, 0x7f, 454 0x90, 0x45, 0x7f,
457 0xf0, 0x00, 0x01, 0xf7, 455 0xf0, 0x00, 0x01, 0xf7,
458 }; 456 };
459 457
460 Initialize(); 458 Initialize();
461 ScopedVector<UsbMidiDevice> devices; 459 ScopedVector<UsbMidiDevice> devices;
462 devices.push_back(device.Pass()); 460 devices.push_back(device.Pass());
463 EXPECT_FALSE(IsInitializationCallbackInvoked()); 461 EXPECT_FALSE(IsInitializationCallbackInvoked());
464 RunCallbackUntilCallbackInvoked(true, &devices); 462 RunCallbackUntilCallbackInvoked(true, &devices);
465 EXPECT_EQ(MIDI_OK, GetInitializationResult()); 463 EXPECT_EQ(Result::OK, GetInitializationResult());
466 ASSERT_EQ(2u, manager_->output_streams().size()); 464 ASSERT_EQ(2u, manager_->output_streams().size());
467 EXPECT_EQ("UsbMidiDevice::GetDescriptors\n", logger_.TakeLog()); 465 EXPECT_EQ("UsbMidiDevice::GetDescriptors\n", logger_.TakeLog());
468 466
469 // The specified port index is invalid. The manager must ignore the request. 467 // The specified port index is invalid. The manager must ignore the request.
470 manager_->DispatchSendMidiData(client_.get(), 99, ToVector(data), 0); 468 manager_->DispatchSendMidiData(client_.get(), 99, ToVector(data), 0);
471 EXPECT_EQ("", logger_.TakeLog()); 469 EXPECT_EQ("", logger_.TakeLog());
472 470
473 // The specified port index is invalid. The manager must ignore the request. 471 // The specified port index is invalid. The manager must ignore the request.
474 manager_->DispatchSendMidiData(client_.get(), 2, ToVector(data), 0); 472 manager_->DispatchSendMidiData(client_.get(), 2, ToVector(data), 0);
475 EXPECT_EQ("", logger_.TakeLog()); 473 EXPECT_EQ("", logger_.TakeLog());
(...skipping 25 matching lines...) Expand all
501 0x49, 0x90, 0x88, 0x99, // This data should be ignored (CN = 4). 499 0x49, 0x90, 0x88, 0x99, // This data should be ignored (CN = 4).
502 0x05, 0xf7, 0x00, 0x00, 500 0x05, 0xf7, 0x00, 0x00,
503 }; 501 };
504 502
505 Initialize(); 503 Initialize();
506 ScopedVector<UsbMidiDevice> devices; 504 ScopedVector<UsbMidiDevice> devices;
507 UsbMidiDevice* device_raw = device.get(); 505 UsbMidiDevice* device_raw = device.get();
508 devices.push_back(device.Pass()); 506 devices.push_back(device.Pass());
509 EXPECT_FALSE(IsInitializationCallbackInvoked()); 507 EXPECT_FALSE(IsInitializationCallbackInvoked());
510 RunCallbackUntilCallbackInvoked(true, &devices); 508 RunCallbackUntilCallbackInvoked(true, &devices);
511 EXPECT_EQ(MIDI_OK, GetInitializationResult()); 509 EXPECT_EQ(Result::OK, GetInitializationResult());
512 510
513 manager_->ReceiveUsbMidiData(device_raw, 2, data, arraysize(data), 511 manager_->ReceiveUsbMidiData(device_raw, 2, data, arraysize(data),
514 base::TimeTicks()); 512 base::TimeTicks());
515 Finalize(); 513 Finalize();
516 514
517 EXPECT_EQ("UsbMidiDevice::GetDescriptors\n" 515 EXPECT_EQ("UsbMidiDevice::GetDescriptors\n"
518 "MidiManagerClient::ReceiveMidiData port_index = 0 " 516 "MidiManagerClient::ReceiveMidiData port_index = 0 "
519 "data = 0x90 0x45 0x7f\n" 517 "data = 0x90 0x45 0x7f\n"
520 "MidiManagerClient::ReceiveMidiData port_index = 0 " 518 "MidiManagerClient::ReceiveMidiData port_index = 0 "
521 "data = 0xf0 0x00 0x01\n" 519 "data = 0xf0 0x00 0x01\n"
(...skipping 16 matching lines...) Expand all
538 0x02, 0x05, 0x01, 0x03, 0x01, 0x00, 0x09, 0x05, 0x02, 0x02, 536 0x02, 0x05, 0x01, 0x03, 0x01, 0x00, 0x09, 0x05, 0x02, 0x02,
539 0x20, 0x00, 0x00, 0x00, 0x00, 0x06, 0x25, 0x01, 0x02, 0x02, 537 0x20, 0x00, 0x00, 0x00, 0x00, 0x06, 0x25, 0x01, 0x02, 0x02,
540 0x03, 0x09, 0x05, 0x82, 0x02, 0x20, 0x00, 0x00, 0x00, 0x00, 538 0x03, 0x09, 0x05, 0x82, 0x02, 0x20, 0x00, 0x00, 0x00, 0x00,
541 0x05, 0x25, 0x01, 0x01, 0x07, 539 0x05, 0x25, 0x01, 0x01, 0x07,
542 }; 540 };
543 541
544 Initialize(); 542 Initialize();
545 ScopedVector<UsbMidiDevice> devices; 543 ScopedVector<UsbMidiDevice> devices;
546 EXPECT_FALSE(IsInitializationCallbackInvoked()); 544 EXPECT_FALSE(IsInitializationCallbackInvoked());
547 RunCallbackUntilCallbackInvoked(true, &devices); 545 RunCallbackUntilCallbackInvoked(true, &devices);
548 EXPECT_EQ(MIDI_OK, GetInitializationResult()); 546 EXPECT_EQ(Result::OK, GetInitializationResult());
549 547
550 ASSERT_EQ(0u, input_ports().size()); 548 ASSERT_EQ(0u, input_ports().size());
551 ASSERT_EQ(0u, output_ports().size()); 549 ASSERT_EQ(0u, output_ports().size());
552 ASSERT_TRUE(manager_->input_stream()); 550 ASSERT_TRUE(manager_->input_stream());
553 std::vector<UsbMidiJack> jacks = manager_->input_stream()->jacks(); 551 std::vector<UsbMidiJack> jacks = manager_->input_stream()->jacks();
554 ASSERT_EQ(0u, manager_->output_streams().size()); 552 ASSERT_EQ(0u, manager_->output_streams().size());
555 ASSERT_EQ(0u, jacks.size()); 553 ASSERT_EQ(0u, jacks.size());
556 EXPECT_EQ("", logger_.TakeLog()); 554 EXPECT_EQ("", logger_.TakeLog());
557 555
558 scoped_ptr<FakeUsbMidiDevice> new_device(new FakeUsbMidiDevice(&logger_)); 556 scoped_ptr<FakeUsbMidiDevice> new_device(new FakeUsbMidiDevice(&logger_));
559 new_device->SetDescriptors(ToVector(descriptors)); 557 new_device->SetDescriptors(ToVector(descriptors));
560 manager_->OnDeviceAttached(new_device.Pass()); 558 manager_->OnDeviceAttached(new_device.Pass());
561 559
562 ASSERT_EQ(1u, input_ports().size()); 560 ASSERT_EQ(1u, input_ports().size());
563 ASSERT_EQ(2u, output_ports().size()); 561 ASSERT_EQ(2u, output_ports().size());
564 ASSERT_TRUE(manager_->input_stream()); 562 ASSERT_TRUE(manager_->input_stream());
565 jacks = manager_->input_stream()->jacks(); 563 jacks = manager_->input_stream()->jacks();
566 ASSERT_EQ(2u, manager_->output_streams().size()); 564 ASSERT_EQ(2u, manager_->output_streams().size());
567 EXPECT_EQ(2u, manager_->output_streams()[0]->jack().jack_id); 565 EXPECT_EQ(2u, manager_->output_streams()[0]->jack().jack_id);
568 EXPECT_EQ(3u, manager_->output_streams()[1]->jack().jack_id); 566 EXPECT_EQ(3u, manager_->output_streams()[1]->jack().jack_id);
569 ASSERT_EQ(1u, jacks.size()); 567 ASSERT_EQ(1u, jacks.size());
570 EXPECT_EQ(2, jacks[0].endpoint_number()); 568 EXPECT_EQ(2, jacks[0].endpoint_number());
571 EXPECT_EQ("UsbMidiDevice::GetDescriptors\n", logger_.TakeLog()); 569 EXPECT_EQ("UsbMidiDevice::GetDescriptors\n", logger_.TakeLog());
572 } 570 }
573 571
574 } // namespace 572 } // namespace
575 573
576 } // namespace midi 574 } // namespace midi
577 } // namespace media 575 } // namespace media
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698