Chromium Code Reviews| Index: media/midi/midi_manager_unittest.cc |
| diff --git a/media/midi/midi_manager_unittest.cc b/media/midi/midi_manager_unittest.cc |
| index 178b0f66d0382863d3d005127902114d994f2882..40ab8a67ef51d7506c0bc58cd46e8ed5f8adb9eb 100644 |
| --- a/media/midi/midi_manager_unittest.cc |
| +++ b/media/midi/midi_manager_unittest.cc |
| @@ -6,6 +6,7 @@ |
| #include "base/logging.h" |
| #include "base/memory/scoped_ptr.h" |
| +#include "base/message_loop/message_loop.h" |
| #include "testing/gtest/include/gtest/gtest.h" |
| namespace media { |
| @@ -53,13 +54,17 @@ class FakeMidiManager : public MidiManager { |
| class FakeMidiManagerClient : public MidiManagerClient { |
| public: |
| - FakeMidiManagerClient(int client_id) : client_id_(client_id) {} |
| + FakeMidiManagerClient(int client_id) |
|
yukawa
2014/05/04 23:16:02
explicit?
Takashi Toyoshima
2014/05/05 00:45:08
Done.
|
| + : client_id_(client_id), |
| + result_(MIDI_NOT_SUPPORTED), |
| + wait_for_result_(true) {} |
| virtual ~FakeMidiManagerClient() {} |
| // MidiManagerClient implementation. |
| virtual void CompleteStartSession(int client_id, MidiResult result) OVERRIDE { |
| - DCHECK_EQ(client_id_, client_id); |
| + CHECK_EQ(client_id_, client_id); |
| result_ = result; |
| + wait_for_result_ = false; |
| } |
| virtual void ReceiveMidiData(uint32 port_index, const uint8* data, |
| @@ -74,16 +79,24 @@ class FakeMidiManagerClient : public MidiManagerClient { |
| return result_; |
| } |
| + MidiResult WaitForResult() { |
| + while (wait_for_result_) |
| + base::MessageLoop::current()->Run(); |
| + return GetResult(); |
| + } |
| + |
| private: |
| int client_id_; |
| MidiResult result_; |
| + bool wait_for_result_; |
| DISALLOW_COPY_AND_ASSIGN(FakeMidiManagerClient); |
| }; |
| class MidiManagerTest : public ::testing::Test { |
| public: |
| - MidiManagerTest() : manager_(new FakeMidiManager) {} |
| + MidiManagerTest() |
| + : message_loop_(new base::MessageLoop), manager_(new FakeMidiManager) {} |
| virtual ~MidiManagerTest() {} |
| protected: |
| @@ -132,6 +145,7 @@ class MidiManagerTest : public ::testing::Test { |
| } |
| private: |
| + scoped_ptr<base::MessageLoop> message_loop_; |
| scoped_ptr<FakeMidiManager> manager_; |
| DISALLOW_COPY_AND_ASSIGN(MidiManagerTest); |
| @@ -182,6 +196,15 @@ TEST_F(MidiManagerTest, StartMultipleSessions) { |
| EndSession(client2.get(), 1U, 0U); |
| } |
| +TEST_F(MidiManagerTest, CreateMidiManager) { |
| + scoped_ptr<FakeMidiManagerClient> client; |
| + client.reset(new FakeMidiManagerClient(0)); |
| + |
| + scoped_ptr<MidiManager> manager(MidiManager::Create()); |
| + manager->StartSession(client.get(), client->GetClientId()); |
| + EXPECT_EQ(MIDI_OK, client->WaitForResult()); |
| +} |
| + |
| } // namespace |
| } // namespace media |