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

Unified Diff: components/copresence/handlers/audio/audio_directive_handler_unittest.cc

Issue 637223011: Redesign the copresence audio handlers. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git/+/master
Patch Set: Created 6 years, 2 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: components/copresence/handlers/audio/audio_directive_handler_unittest.cc
diff --git a/components/copresence/handlers/audio/audio_directive_handler_unittest.cc b/components/copresence/handlers/audio/audio_directive_handler_unittest.cc
index 31c5f58adb911f6e5c7ccdeebf939b366de15c86..0d5afd01dc04ae256af05311e3c1ecdefc287889 100644
--- a/components/copresence/handlers/audio/audio_directive_handler_unittest.cc
+++ b/components/copresence/handlers/audio/audio_directive_handler_unittest.cc
@@ -5,74 +5,75 @@
#include "components/copresence/handlers/audio/audio_directive_handler.h"
#include "base/bind.h"
+#include "base/memory/scoped_ptr.h"
#include "base/message_loop/message_loop.h"
-#include "components/copresence/mediums/audio/audio_player.h"
-#include "components/copresence/mediums/audio/audio_recorder.h"
+#include "components/copresence/mediums/audio/audio_manager.h"
#include "components/copresence/test/audio_test_support.h"
-#include "media/base/audio_bus.h"
-#include "testing/gmock/include/gmock/gmock.h"
#include "testing/gtest/include/gtest/gtest.h"
-using ::testing::_;
-using ::testing::Le;
-
namespace copresence {
-class TestAudioPlayer : public AudioPlayer {
+namespace {
+
+class TestAudioManager final : public AudioManager {
Daniel Erat 2014/10/21 19:43:22 nit: AudioManagerStub
rkc 2014/10/22 00:06:20 Done.
public:
- TestAudioPlayer() {}
- virtual ~TestAudioPlayer() {}
-
- // AudioPlayer overrides:
- virtual void Initialize() override {}
- virtual void Play(
- const scoped_refptr<media::AudioBusRefCounted>& /* samples */) override {
- set_is_playing(true);
+ TestAudioManager() {}
+ virtual ~TestAudioManager() {}
+
+ // AudioManager overrides:
+ virtual void Initialize(const DecodeSamplesCallback& decode_cb,
+ const EncodeTokenCallback& encode_cb) override {}
+ virtual void StartPlaying(AudioType type) override { playing_[type] = true; }
+ virtual void StopPlaying(AudioType type) override { playing_[type] = false; }
+ virtual void StartRecording(AudioType type) override {
+ recording_[type] = true;
+ }
+ virtual void StopRecording(AudioType type) override {
+ recording_[type] = false;
+ }
+ virtual void SetToken(AudioType type,
+ const std::string& url_unsafe_token) override{};
Daniel Erat 2014/10/21 19:43:22 nit: "override {}"
rkc 2014/10/22 00:06:20 Done.
+ virtual const std::string& get_token(AudioType type) override {
+ return token_;
}
- virtual void Stop() override { set_is_playing(false); }
- virtual void Finalize() override { delete this; }
+ virtual bool IsRecording(AudioType type) override { return recording_[type]; }
+ virtual bool IsPlaying(AudioType type) override { return playing_[type]; }
private:
- DISALLOW_COPY_AND_ASSIGN(TestAudioPlayer);
-};
-
-class TestAudioRecorder : public AudioRecorder {
- public:
- TestAudioRecorder() : AudioRecorder(AudioRecorder::DecodeSamplesCallback()) {}
- virtual ~TestAudioRecorder() {}
+ // Indexed using enum AudioType.
+ bool playing_[2];
+ bool recording_[2];
- // AudioRecorder overrides:
- virtual void Initialize() override {}
- virtual void Record() override { set_is_recording(true); }
- virtual void Stop() override { set_is_recording(false); }
- virtual void Finalize() override { delete this; }
+ std::string token_;
Daniel Erat 2014/10/21 19:43:22 did you mean to set this in SetToken()? it's alway
rkc 2014/10/22 00:06:20 This returns a reference pointer. It needs a real
- private:
- DISALLOW_COPY_AND_ASSIGN(TestAudioRecorder);
+ DISALLOW_COPY_AND_ASSIGN(TestAudioManager);
};
+} // namespace
+
class AudioDirectiveHandlerTest : public testing::Test {
public:
AudioDirectiveHandlerTest()
- : directive_handler_(new AudioDirectiveHandler(
- AudioRecorder::DecodeSamplesCallback(),
- base::Bind(&AudioDirectiveHandlerTest::EncodeToken,
- base::Unretained(this)))) {
- directive_handler_->set_player_audible_for_testing(new TestAudioPlayer());
- directive_handler_->set_player_inaudible_for_testing(new TestAudioPlayer());
- directive_handler_->set_recorder_for_testing(new TestAudioRecorder());
+ : directive_handler_(new AudioDirectiveHandler()) {
+ scoped_ptr<TestAudioManager> manager(new TestAudioManager);
+ manager_ptr_ = manager.get();
+ directive_handler_->set_audio_manager_for_testing(manager.Pass());
+ directive_handler_->Initialize(
+ base::Bind(&AudioDirectiveHandlerTest::DecodeSamples,
Daniel Erat 2014/10/21 19:43:22 just pass a callback around an empty function in t
rkc 2014/10/22 00:06:20 Done.
+ base::Unretained(this)),
+ base::Bind(&AudioDirectiveHandlerTest::EncodeToken,
+ base::Unretained(this)));
}
virtual ~AudioDirectiveHandlerTest() {}
void DirectiveAdded() {}
protected:
- void EncodeToken(const std::string& token,
- bool audible,
- const AudioDirectiveHandler::SamplesCallback& callback) {
- callback.Run(
- token, audible, CreateRandomAudioRefCounted(0x1337, 1, 0x7331));
- }
+ // Callback stubs to pass into the directive handler.
+ void DecodeSamples(AudioType, const std::string&) {}
+ void EncodeToken(const std::string&,
+ AudioType,
+ const AudioManager::SamplesCallback& callback) {}
copresence::TokenInstruction CreateTransmitInstruction(
const std::string& token,
@@ -85,17 +86,24 @@ class AudioDirectiveHandlerTest : public testing::Test {
return instruction;
}
- copresence::TokenInstruction CreateReceiveInstruction() {
+ copresence::TokenInstruction CreateReceiveInstruction(bool audible) {
copresence::TokenInstruction instruction;
instruction.set_token_instruction_type(copresence::RECEIVE);
+ instruction.set_medium(audible ? AUDIO_AUDIBLE_DTMF
+ : AUDIO_ULTRASOUND_PASSBAND);
return instruction;
}
+ bool IsPlaying(AudioType type) { return manager_ptr_->IsPlaying(type); }
+
+ bool IsRecording(AudioType type) { return manager_ptr_->IsRecording(type); }
+
// This order is important. We want the message loop to get created before
// our the audio directive handler since the directive list ctor (invoked
// from the directive handler ctor) will post tasks.
base::MessageLoop message_loop_;
scoped_ptr<AudioDirectiveHandler> directive_handler_;
+ TestAudioManager* manager_ptr_;
Daniel Erat 2014/10/21 19:43:22 nit: document that this is unowned
rkc 2014/10/22 00:06:20 Done.
private:
DISALLOW_COPY_AND_ASSIGN(AudioDirectiveHandlerTest);
@@ -110,30 +118,34 @@ TEST_F(AudioDirectiveHandlerTest, Basic) {
directive_handler_->AddInstruction(
CreateTransmitInstruction("token", false), "op_id2", kTtl);
directive_handler_->AddInstruction(
- CreateReceiveInstruction(), "op_id1", kTtl);
+ CreateReceiveInstruction(false), "op_id1", kTtl);
directive_handler_->AddInstruction(
- CreateReceiveInstruction(), "op_id2", kTtl);
+ CreateReceiveInstruction(true), "op_id2", kTtl);
directive_handler_->AddInstruction(
- CreateReceiveInstruction(), "op_id3", kTtl);
+ CreateReceiveInstruction(false), "op_id3", kTtl);
- EXPECT_EQ(true, directive_handler_->player_audible_->IsPlaying());
- EXPECT_EQ(true, directive_handler_->player_inaudible_->IsPlaying());
- EXPECT_EQ(true, directive_handler_->recorder_->IsRecording());
+ EXPECT_TRUE(IsPlaying(AUDIBLE));
+ EXPECT_TRUE(IsPlaying(INAUDIBLE));
+ EXPECT_TRUE(IsRecording(AUDIBLE));
+ EXPECT_TRUE(IsRecording(INAUDIBLE));
directive_handler_->RemoveInstructions("op_id1");
- EXPECT_FALSE(directive_handler_->player_audible_->IsPlaying());
- EXPECT_EQ(true, directive_handler_->player_inaudible_->IsPlaying());
- EXPECT_EQ(true, directive_handler_->recorder_->IsRecording());
+ EXPECT_FALSE(IsPlaying(AUDIBLE));
+ EXPECT_TRUE(IsPlaying(INAUDIBLE));
+ EXPECT_TRUE(IsRecording(AUDIBLE));
+ EXPECT_TRUE(IsRecording(INAUDIBLE));
directive_handler_->RemoveInstructions("op_id2");
- EXPECT_FALSE(directive_handler_->player_inaudible_->IsPlaying());
- EXPECT_EQ(true, directive_handler_->recorder_->IsRecording());
+ EXPECT_FALSE(IsPlaying(INAUDIBLE));
+ EXPECT_FALSE(IsRecording(AUDIBLE));
+ EXPECT_TRUE(IsRecording(INAUDIBLE));
directive_handler_->RemoveInstructions("op_id3");
- EXPECT_FALSE(directive_handler_->recorder_->IsRecording());
+ EXPECT_FALSE(IsRecording(INAUDIBLE));
}
// TODO(rkc): Write more tests that check more convoluted sequences of
// transmits/receives.
+// TODO(rkc): Write tests to move time forward and test functionality.
} // namespace copresence

Powered by Google App Engine
This is Rietveld 408576698