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

Unified Diff: media/midi/midi_manager_unittest.cc

Issue 261263002: Web MIDI: add an unit test to check MidiManager instantiation (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: clean up for review Created 6 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 side-by-side diff with in-line comments
Download patch
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

Powered by Google App Engine
This is Rietveld 408576698