Index: media/midi/midi_manager_usb_unittest.cc |
diff --git a/media/midi/midi_manager_usb_unittest.cc b/media/midi/midi_manager_usb_unittest.cc |
index 8552403024765aad2ceef1427bd516ea73c5ee52..b8044cd8b079622ab7ee12e52d8ce10f7fde98e1 100644 |
--- a/media/midi/midi_manager_usb_unittest.cc |
+++ b/media/midi/midi_manager_usb_unittest.cc |
@@ -250,6 +250,51 @@ TEST_F(MidiManagerUsbTest, Initialize) { |
EXPECT_EQ("UsbMidiDevice::GetDescriptor\n", logger_.TakeLog()); |
} |
+TEST_F(MidiManagerUsbTest, InitializeMultipleDevices) { |
+ scoped_ptr<FakeUsbMidiDevice> device1(new FakeUsbMidiDevice(&logger_)); |
+ scoped_ptr<FakeUsbMidiDevice> device2(new FakeUsbMidiDevice(&logger_)); |
+ uint8 descriptor[] = { |
+ 0x12, 0x01, 0x10, 0x01, 0x00, 0x00, 0x00, 0x08, 0x86, 0x1a, 0x2d, 0x75, |
+ 0x54, 0x02, 0x00, 0x02, 0x00, 0x01, 0x09, 0x02, 0x75, 0x00, 0x02, 0x01, |
+ 0x00, 0x80, 0x30, 0x09, 0x04, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, |
+ 0x09, 0x24, 0x01, 0x00, 0x01, 0x09, 0x00, 0x01, 0x01, 0x09, 0x04, 0x01, |
+ 0x00, 0x02, 0x01, 0x03, 0x00, 0x00, 0x07, 0x24, 0x01, 0x00, 0x01, 0x51, |
+ 0x00, 0x06, 0x24, 0x02, 0x01, 0x02, 0x00, 0x06, 0x24, 0x02, 0x01, 0x03, |
+ 0x00, 0x06, 0x24, 0x02, 0x02, 0x06, 0x00, 0x09, 0x24, 0x03, 0x01, 0x07, |
+ 0x01, 0x06, 0x01, 0x00, 0x09, 0x24, 0x03, 0x02, 0x04, 0x01, 0x02, 0x01, |
+ 0x00, 0x09, 0x24, 0x03, 0x02, 0x05, 0x01, 0x03, 0x01, 0x00, 0x09, 0x05, |
+ 0x02, 0x02, 0x20, 0x00, 0x00, 0x00, 0x00, 0x06, 0x25, 0x01, 0x02, 0x02, |
+ 0x03, 0x09, 0x05, 0x82, 0x02, 0x20, 0x00, 0x00, 0x00, 0x00, 0x05, 0x25, |
+ 0x01, 0x01, 0x07, |
+ }; |
+ device1->SetDescriptor(ToVector(descriptor)); |
+ device2->SetDescriptor(ToVector(descriptor)); |
+ |
+ Initialize(); |
+ ScopedVector<UsbMidiDevice> devices; |
+ devices.push_back(device1.release()); |
+ devices.push_back(device2.release()); |
+ EXPECT_FALSE(IsInitializationCallbackInvoked()); |
+ RunCallbackUntilCallbackInvoked(true, &devices); |
+ EXPECT_EQ(MIDI_OK, GetInitializationResult()); |
+ |
+ ASSERT_EQ(2u, input_ports().size()); |
+ ASSERT_EQ(4u, output_ports().size()); |
+ ASSERT_TRUE(manager_->input_stream()); |
+ std::vector<UsbMidiInputStream::JackUniqueKey> keys = |
+ manager_->input_stream()->RegisteredJackKeysForTesting(); |
+ ASSERT_EQ(4u, manager_->output_streams().size()); |
+ EXPECT_EQ(2u, manager_->output_streams()[0]->jack().jack_id); |
+ EXPECT_EQ(3u, manager_->output_streams()[1]->jack().jack_id); |
+ ASSERT_EQ(2u, keys.size()); |
+ EXPECT_EQ(2, keys[0].endpoint_number); |
+ |
+ EXPECT_EQ( |
+ "UsbMidiDevice::GetDescriptor\n" |
+ "UsbMidiDevice::GetDescriptor\n", |
+ logger_.TakeLog()); |
+} |
+ |
TEST_F(MidiManagerUsbTest, InitializeFail) { |
Initialize(); |