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

Side by Side Diff: components/copresence/handlers/audio/audio_directive_handler_unittest.cc

Issue 865483005: Creating the audio_modem component (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Merging again Created 5 years, 10 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 unified diff | Download patch
OLDNEW
1 // Copyright 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include <string> 5 #include <string>
6 #include <vector> 6 #include <vector>
7 7
8 #include "base/bind.h" 8 #include "base/bind.h"
9 #include "base/memory/scoped_ptr.h" 9 #include "base/memory/scoped_ptr.h"
10 #include "base/message_loop/message_loop.h" 10 #include "base/message_loop/message_loop.h"
11 #include "base/test/simple_test_tick_clock.h" 11 #include "base/test/simple_test_tick_clock.h"
12 #include "base/timer/mock_timer.h" 12 #include "base/timer/mock_timer.h"
13 #include "components/audio_modem/public/modem.h"
14 #include "components/audio_modem/test/random_samples.h"
13 #include "components/copresence/handlers/audio/audio_directive_handler_impl.h" 15 #include "components/copresence/handlers/audio/audio_directive_handler_impl.h"
14 #include "components/copresence/handlers/audio/tick_clock_ref_counted.h" 16 #include "components/copresence/handlers/audio/tick_clock_ref_counted.h"
15 #include "components/copresence/mediums/audio/audio_manager.h"
16 #include "components/copresence/proto/data.pb.h" 17 #include "components/copresence/proto/data.pb.h"
17 #include "components/copresence/test/audio_test_support.h"
18 #include "testing/gtest/include/gtest/gtest.h" 18 #include "testing/gtest/include/gtest/gtest.h"
19 19
20 using audio_modem::AUDIBLE;
21 using audio_modem::AudioType;
22 using audio_modem::INAUDIBLE;
23
20 namespace copresence { 24 namespace copresence {
21 25
22 namespace { 26 namespace {
23 27
24 const Directive CreateDirective(TokenInstructionType type, 28 const Directive CreateDirective(TokenInstructionType type,
25 bool audible, 29 bool audible,
26 int64 ttl) { 30 int64 ttl) {
27 Directive directive; 31 Directive directive;
28 directive.mutable_token_instruction()->set_token_instruction_type(type); 32 directive.mutable_token_instruction()->set_token_instruction_type(type);
29 directive.mutable_token_instruction()->set_token_id("token"); 33 directive.mutable_token_instruction()->set_token_id("token");
30 directive.mutable_token_instruction()->set_medium(audible ? 34 directive.mutable_token_instruction()->set_medium(audible ?
31 AUDIO_AUDIBLE_DTMF : AUDIO_ULTRASOUND_PASSBAND); 35 AUDIO_AUDIBLE_DTMF : AUDIO_ULTRASOUND_PASSBAND);
32 directive.set_ttl_millis(ttl); 36 directive.set_ttl_millis(ttl);
33 return directive; 37 return directive;
34 } 38 }
35 39
36 } // namespace 40 } // namespace
37 41
38 class AudioManagerStub final : public AudioManager { 42 class StubModem final : public audio_modem::Modem {
39 public: 43 public:
40 AudioManagerStub() {} 44 StubModem() {}
41 ~AudioManagerStub() override {} 45 ~StubModem() override {}
42 46
43 // AudioManager overrides: 47 // AudioManager overrides:
44 void Initialize(WhispernetClient* whispernet_client, 48 void Initialize(audio_modem::WhispernetClient* whispernet_client,
45 const TokensCallback& tokens_cb) override {} 49 const audio_modem::TokensCallback& tokens_cb) override {}
46 void StartPlaying(AudioType type) override { playing_[type] = true; } 50 void StartPlaying(AudioType type) override { playing_[type] = true; }
47 void StopPlaying(AudioType type) override { playing_[type] = false; } 51 void StopPlaying(AudioType type) override { playing_[type] = false; }
48 void StartRecording(AudioType type) override { recording_[type] = true; } 52 void StartRecording(AudioType type) override { recording_[type] = true; }
49 void StopRecording(AudioType type) override { recording_[type] = false; } 53 void StopRecording(AudioType type) override { recording_[type] = false; }
50 void SetToken(AudioType type, const std::string& url_unsafe_token) override {} 54 void SetToken(AudioType type, const std::string& url_unsafe_token) override {}
51 const std::string GetToken(AudioType type) override { return std::string(); } 55 const std::string GetToken(AudioType type) override { return std::string(); }
52 bool IsPlayingTokenHeard(AudioType type) override { return false; } 56 bool IsPlayingTokenHeard(AudioType type) override { return false; }
53 void SetTokenLength(AudioType type, size_t token_length) override {} 57 void SetTokenLength(AudioType type, size_t token_length) override {}
54 58
55 bool IsRecording(AudioType type) { return recording_[type]; } 59 bool IsRecording(AudioType type) { return recording_[type]; }
56 bool IsPlaying(AudioType type) { return playing_[type]; } 60 bool IsPlaying(AudioType type) { return playing_[type]; }
57 61
58 private: 62 private:
59 // Indexed using enum AudioType. 63 // Indexed using enum AudioType.
60 bool playing_[2]; 64 bool playing_[2];
61 bool recording_[2]; 65 bool recording_[2];
62 66
63 DISALLOW_COPY_AND_ASSIGN(AudioManagerStub); 67 DISALLOW_COPY_AND_ASSIGN(StubModem);
64 }; 68 };
65 69
66 class AudioDirectiveHandlerTest : public testing::Test { 70 class AudioDirectiveHandlerTest : public testing::Test {
67 public: 71 public:
68 AudioDirectiveHandlerTest() { 72 AudioDirectiveHandlerTest() {
69 manager_ptr_ = new AudioManagerStub; 73 modem_ptr_ = new StubModem;
70 timer_ptr_ = new base::MockTimer(false, false); 74 timer_ptr_ = new base::MockTimer(false, false);
71 clock_ptr_ = new base::SimpleTestTickClock; 75 clock_ptr_ = new base::SimpleTestTickClock;
72 76
73 directive_handler_.reset(new AudioDirectiveHandlerImpl( 77 directive_handler_.reset(new AudioDirectiveHandlerImpl(
74 base::Bind(&AudioDirectiveHandlerTest::GetDirectiveUpdates, 78 base::Bind(&AudioDirectiveHandlerTest::GetDirectiveUpdates,
75 base::Unretained(this)), 79 base::Unretained(this)),
76 make_scoped_ptr<AudioManager>(manager_ptr_), 80 make_scoped_ptr<audio_modem::Modem>(modem_ptr_),
77 make_scoped_ptr<base::Timer>(timer_ptr_), 81 make_scoped_ptr<base::Timer>(timer_ptr_),
78 make_scoped_refptr(new TickClockRefCounted(clock_ptr_)))); 82 make_scoped_refptr(new TickClockRefCounted(clock_ptr_))));
79 directive_handler_->Initialize(nullptr, TokensCallback()); 83 directive_handler_->Initialize(nullptr, audio_modem::TokensCallback());
80 } 84 }
81 ~AudioDirectiveHandlerTest() override {} 85 ~AudioDirectiveHandlerTest() override {}
82 86
83 protected: 87 protected:
84 const std::vector<Directive>& current_directives() { 88 const std::vector<Directive>& current_directives() {
85 return current_directives_; 89 return current_directives_;
86 } 90 }
87 91
88 bool IsPlaying(AudioType type) { return manager_ptr_->IsPlaying(type); } 92 bool IsPlaying(AudioType type) { return modem_ptr_->IsPlaying(type); }
89 93
90 bool IsRecording(AudioType type) { return manager_ptr_->IsRecording(type); } 94 bool IsRecording(AudioType type) { return modem_ptr_->IsRecording(type); }
91 95
92 // This order is important. We want the message loop to get created before 96 // This order is important. We want the message loop to get created before
93 // our the audio directive handler since the directive list ctor (invoked 97 // our the audio directive handler since the directive list ctor (invoked
94 // from the directive handler ctor) will post tasks. 98 // from the directive handler ctor) will post tasks.
95 base::MessageLoop message_loop_; 99 base::MessageLoop message_loop_;
96 scoped_ptr<AudioDirectiveHandler> directive_handler_; 100 scoped_ptr<AudioDirectiveHandler> directive_handler_;
97 101
98 std::vector<Directive> current_directives_; 102 std::vector<Directive> current_directives_;
99 103
100 // Unowned. 104 // Unowned.
101 AudioManagerStub* manager_ptr_; 105 StubModem* modem_ptr_;
102 base::MockTimer* timer_ptr_; 106 base::MockTimer* timer_ptr_;
103 base::SimpleTestTickClock* clock_ptr_; 107 base::SimpleTestTickClock* clock_ptr_;
104 108
105 private: 109 private:
106 void GetDirectiveUpdates(const std::vector<Directive>& current_directives) { 110 void GetDirectiveUpdates(const std::vector<Directive>& current_directives) {
107 current_directives_ = current_directives; 111 current_directives_ = current_directives;
108 } 112 }
109 113
110 DISALLOW_COPY_AND_ASSIGN(AudioDirectiveHandlerTest); 114 DISALLOW_COPY_AND_ASSIGN(AudioDirectiveHandlerTest);
111 }; 115 };
(...skipping 76 matching lines...) Expand 10 before | Expand all | Expand 10 after
188 // Advance to +11ms. 192 // Advance to +11ms.
189 clock_ptr_->Advance(twoMs); 193 clock_ptr_->Advance(twoMs);
190 timer_ptr_->Fire(); 194 timer_ptr_->Fire();
191 EXPECT_FALSE(IsRecording(AUDIBLE)); 195 EXPECT_FALSE(IsRecording(AUDIBLE));
192 } 196 }
193 197
194 // TODO(rkc): Write more tests that check more convoluted sequences of 198 // TODO(rkc): Write more tests that check more convoluted sequences of
195 // transmits/receives. 199 // transmits/receives.
196 200
197 } // namespace copresence 201 } // namespace copresence
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698