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 |