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

Side by Side Diff: media/audio/audio_input_controller_unittest.cc

Issue 9691001: Audio software mixer. (Closed) Base URL: http://src.chromium.org/svn/trunk/src/
Patch Set: Created 8 years, 9 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 | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 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 "base/basictypes.h" 5 #include "base/basictypes.h"
6 #include "base/bind.h" 6 #include "base/bind.h"
7 #include "base/message_loop.h" 7 #include "base/message_loop.h"
8 #include "base/synchronization/waitable_event.h" 8 #include "base/synchronization/waitable_event.h"
9 #include "base/test/test_timeouts.h" 9 #include "base/test/test_timeouts.h"
10 #include "media/audio/audio_input_controller.h" 10 #include "media/audio/audio_input_controller.h"
(...skipping 62 matching lines...) Expand 10 before | Expand all | Expand 10 after
73 73
74 // Test AudioInputController for create and close without recording audio. 74 // Test AudioInputController for create and close without recording audio.
75 TEST_F(AudioInputControllerTest, CreateAndClose) { 75 TEST_F(AudioInputControllerTest, CreateAndClose) {
76 MockAudioInputControllerEventHandler event_handler; 76 MockAudioInputControllerEventHandler event_handler;
77 77
78 // OnCreated() will be posted once. 78 // OnCreated() will be posted once.
79 EXPECT_CALL(event_handler, OnCreated(NotNull())) 79 EXPECT_CALL(event_handler, OnCreated(NotNull()))
80 .WillOnce(QuitMessageLoop(message_loop_.message_loop_proxy())); 80 .WillOnce(QuitMessageLoop(message_loop_.message_loop_proxy()));
81 81
82 scoped_ptr<AudioManager> audio_manager(AudioManager::Create()); 82 scoped_ptr<AudioManager> audio_manager(AudioManager::Create());
83 AudioParameters params(AudioParameters::AUDIO_MOCK, kChannelLayout, 83 AudioParameters params(AudioParameters::AUDIO_MOCK, false, kChannelLayout,
84 kSampleRate, kBitsPerSample, kSamplesPerPacket); 84 kSampleRate, kBitsPerSample, kSamplesPerPacket);
85 scoped_refptr<AudioInputController> controller = 85 scoped_refptr<AudioInputController> controller =
86 AudioInputController::Create(audio_manager.get(), &event_handler, params); 86 AudioInputController::Create(audio_manager.get(), &event_handler, params);
87 ASSERT_TRUE(controller.get()); 87 ASSERT_TRUE(controller.get());
88 88
89 // Close the AudioInputController synchronously. 89 // Close the AudioInputController synchronously.
90 CloseAudioController(controller); 90 CloseAudioController(controller);
91 } 91 }
92 92
93 // Test a normal call sequence of create, record and close. 93 // Test a normal call sequence of create, record and close.
94 TEST_F(AudioInputControllerTest, RecordAndClose) { 94 TEST_F(AudioInputControllerTest, RecordAndClose) {
95 MockAudioInputControllerEventHandler event_handler; 95 MockAudioInputControllerEventHandler event_handler;
96 int count = 0; 96 int count = 0;
97 97
98 // OnCreated() will be called once. 98 // OnCreated() will be called once.
99 EXPECT_CALL(event_handler, OnCreated(NotNull())) 99 EXPECT_CALL(event_handler, OnCreated(NotNull()))
100 .Times(Exactly(1)); 100 .Times(Exactly(1));
101 101
102 // OnRecording() will be called only once. 102 // OnRecording() will be called only once.
103 EXPECT_CALL(event_handler, OnRecording(NotNull())) 103 EXPECT_CALL(event_handler, OnRecording(NotNull()))
104 .Times(Exactly(1)); 104 .Times(Exactly(1));
105 105
106 // OnData() shall be called ten times. 106 // OnData() shall be called ten times.
107 EXPECT_CALL(event_handler, OnData(NotNull(), NotNull(), _)) 107 EXPECT_CALL(event_handler, OnData(NotNull(), NotNull(), _))
108 .Times(AtLeast(10)) 108 .Times(AtLeast(10))
109 .WillRepeatedly(CheckCountAndPostQuitTask(&count, 10, 109 .WillRepeatedly(CheckCountAndPostQuitTask(&count, 10,
110 message_loop_.message_loop_proxy())); 110 message_loop_.message_loop_proxy()));
111 111
112 scoped_ptr<AudioManager> audio_manager(AudioManager::Create()); 112 scoped_ptr<AudioManager> audio_manager(AudioManager::Create());
113 AudioParameters params(AudioParameters::AUDIO_MOCK, kChannelLayout, 113 AudioParameters params(AudioParameters::AUDIO_MOCK, false, kChannelLayout,
114 kSampleRate, kBitsPerSample, kSamplesPerPacket); 114 kSampleRate, kBitsPerSample, kSamplesPerPacket);
115 115
116 // Creating the AudioInputController should render an OnCreated() call. 116 // Creating the AudioInputController should render an OnCreated() call.
117 scoped_refptr<AudioInputController> controller = 117 scoped_refptr<AudioInputController> controller =
118 AudioInputController::Create(audio_manager.get(), &event_handler, params); 118 AudioInputController::Create(audio_manager.get(), &event_handler, params);
119 ASSERT_TRUE(controller.get()); 119 ASSERT_TRUE(controller.get());
120 120
121 // Start recording and trigger one OnRecording() call. 121 // Start recording and trigger one OnRecording() call.
122 controller->Record(); 122 controller->Record();
123 123
(...skipping 25 matching lines...) Expand all
149 .WillRepeatedly(CheckCountAndPostQuitTask(&count, 10, 149 .WillRepeatedly(CheckCountAndPostQuitTask(&count, 10,
150 message_loop_.message_loop_proxy())); 150 message_loop_.message_loop_proxy()));
151 151
152 // OnError() will be called after the data stream stops while the 152 // OnError() will be called after the data stream stops while the
153 // controller is in a recording state. 153 // controller is in a recording state.
154 EXPECT_CALL(event_handler, OnError(NotNull(), 0)) 154 EXPECT_CALL(event_handler, OnError(NotNull(), 0))
155 .Times(Exactly(1)) 155 .Times(Exactly(1))
156 .WillOnce(QuitMessageLoop(message_loop_.message_loop_proxy())); 156 .WillOnce(QuitMessageLoop(message_loop_.message_loop_proxy()));
157 157
158 scoped_ptr<AudioManager> audio_manager(AudioManager::Create()); 158 scoped_ptr<AudioManager> audio_manager(AudioManager::Create());
159 AudioParameters params(AudioParameters::AUDIO_MOCK, kChannelLayout, 159 AudioParameters params(AudioParameters::AUDIO_MOCK, false, kChannelLayout,
160 kSampleRate, kBitsPerSample, kSamplesPerPacket); 160 kSampleRate, kBitsPerSample, kSamplesPerPacket);
161 161
162 // Creating the AudioInputController should render an OnCreated() call. 162 // Creating the AudioInputController should render an OnCreated() call.
163 scoped_refptr<AudioInputController> controller = 163 scoped_refptr<AudioInputController> controller =
164 AudioInputController::Create(audio_manager.get(), &event_handler, params); 164 AudioInputController::Create(audio_manager.get(), &event_handler, params);
165 ASSERT_TRUE(controller.get()); 165 ASSERT_TRUE(controller.get());
166 166
167 // Start recording and trigger one OnRecording() call. 167 // Start recording and trigger one OnRecording() call.
168 controller->Record(); 168 controller->Record();
169 169
(...skipping 12 matching lines...) Expand all
182 // Test that AudioInputController rejects insanely large packet sizes. 182 // Test that AudioInputController rejects insanely large packet sizes.
183 TEST_F(AudioInputControllerTest, SamplesPerPacketTooLarge) { 183 TEST_F(AudioInputControllerTest, SamplesPerPacketTooLarge) {
184 // Create an audio device with a very large packet size. 184 // Create an audio device with a very large packet size.
185 MockAudioInputControllerEventHandler event_handler; 185 MockAudioInputControllerEventHandler event_handler;
186 186
187 // OnCreated() shall not be called in this test. 187 // OnCreated() shall not be called in this test.
188 EXPECT_CALL(event_handler, OnCreated(NotNull())) 188 EXPECT_CALL(event_handler, OnCreated(NotNull()))
189 .Times(Exactly(0)); 189 .Times(Exactly(0));
190 190
191 scoped_ptr<AudioManager> audio_manager(AudioManager::Create()); 191 scoped_ptr<AudioManager> audio_manager(AudioManager::Create());
192 AudioParameters params(AudioParameters::AUDIO_MOCK, kChannelLayout, 192 AudioParameters params(AudioParameters::AUDIO_MOCK, false, kChannelLayout,
193 kSampleRate, kBitsPerSample, kSamplesPerPacket * 1000); 193 kSampleRate, kBitsPerSample, kSamplesPerPacket * 1000);
194 scoped_refptr<AudioInputController> controller = 194 scoped_refptr<AudioInputController> controller =
195 AudioInputController::Create(audio_manager.get(), &event_handler, params); 195 AudioInputController::Create(audio_manager.get(), &event_handler, params);
196 ASSERT_FALSE(controller); 196 ASSERT_FALSE(controller);
197 } 197 }
198 198
199 // Test calling AudioInputController::Close multiple times. 199 // Test calling AudioInputController::Close multiple times.
200 TEST_F(AudioInputControllerTest, CloseTwice) { 200 TEST_F(AudioInputControllerTest, CloseTwice) {
201 MockAudioInputControllerEventHandler event_handler; 201 MockAudioInputControllerEventHandler event_handler;
202 202
203 // OnRecording() will be called only once. 203 // OnRecording() will be called only once.
204 EXPECT_CALL(event_handler, OnCreated(NotNull())); 204 EXPECT_CALL(event_handler, OnCreated(NotNull()));
205 205
206 // OnRecording() will be called only once. 206 // OnRecording() will be called only once.
207 EXPECT_CALL(event_handler, OnRecording(NotNull())) 207 EXPECT_CALL(event_handler, OnRecording(NotNull()))
208 .Times(Exactly(1)); 208 .Times(Exactly(1));
209 209
210 scoped_ptr<AudioManager> audio_manager(AudioManager::Create()); 210 scoped_ptr<AudioManager> audio_manager(AudioManager::Create());
211 AudioParameters params(AudioParameters::AUDIO_MOCK, kChannelLayout, 211 AudioParameters params(AudioParameters::AUDIO_MOCK, false, kChannelLayout,
212 kSampleRate, kBitsPerSample, kSamplesPerPacket); 212 kSampleRate, kBitsPerSample, kSamplesPerPacket);
213 scoped_refptr<AudioInputController> controller = 213 scoped_refptr<AudioInputController> controller =
214 AudioInputController::Create(audio_manager.get(), &event_handler, params); 214 AudioInputController::Create(audio_manager.get(), &event_handler, params);
215 ASSERT_TRUE(controller.get()); 215 ASSERT_TRUE(controller.get());
216 216
217 controller->Record(); 217 controller->Record();
218 218
219 base::WaitableEvent closed_event_1(true, false); 219 base::WaitableEvent closed_event_1(true, false);
220 controller->Close(base::Bind(&base::WaitableEvent::Signal, 220 controller->Close(base::Bind(&base::WaitableEvent::Signal,
221 base::Unretained(&closed_event_1))); 221 base::Unretained(&closed_event_1)));
222 222
223 base::WaitableEvent closed_event_2(true, false); 223 base::WaitableEvent closed_event_2(true, false);
224 controller->Close(base::Bind(&base::WaitableEvent::Signal, 224 controller->Close(base::Bind(&base::WaitableEvent::Signal,
225 base::Unretained(&closed_event_2))); 225 base::Unretained(&closed_event_2)));
226 226
227 closed_event_1.Wait(); 227 closed_event_1.Wait();
228 closed_event_2.Wait(); 228 closed_event_2.Wait();
229 } 229 }
230 230
231 } // namespace media 231 } // namespace media
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698