Index: media/audio/sounds/audio_stream_handler_unittest.cc |
diff --git a/media/audio/sounds/audio_stream_handler_unittest.cc b/media/audio/sounds/audio_stream_handler_unittest.cc |
index 50bc301c38abed23f5a72eadcd39e2764a4802c4..cd31b0badd919560d63679b1be9359baa03667bd 100644 |
--- a/media/audio/sounds/audio_stream_handler_unittest.cc |
+++ b/media/audio/sounds/audio_stream_handler_unittest.cc |
@@ -14,6 +14,7 @@ |
#include "media/audio/simple_sources.h" |
#include "media/audio/sounds/audio_stream_handler.h" |
#include "media/audio/sounds/test_data.h" |
+#include "media/audio/sounds/wav_reader.h" |
#include "media/base/channel_layout.h" |
#include "testing/gtest/include/gtest/gtest.h" |
@@ -49,6 +50,14 @@ class AudioStreamHandlerTest : public testing::Test { |
AudioStreamHandler::SetAudioSourceForTesting(source); |
} |
+ void SetWavReaderForTesting(WavReader* reader) { |
+ audio_stream_handler_->SetWavReaderForTesting(reader); |
+ } |
+ |
+ void AllowReplayOnceForTesting() { |
+ audio_stream_handler_->AllowReplayOnceForTesting(); |
+ } |
+ |
private: |
scoped_ptr<AudioManager> audio_manager_; |
scoped_ptr<AudioStreamHandler> audio_stream_handler_; |
@@ -74,34 +83,44 @@ TEST_F(AudioStreamHandlerTest, Play) { |
ASSERT_EQ(4, observer.cursor()); |
} |
-TEST_F(AudioStreamHandlerTest, Rewind) { |
+TEST_F(AudioStreamHandlerTest, Replay) { |
+ // As we're trying to test replay logic, "infinite" sound is played. |
+ // "Infinite" sound is simulated by TestWavReader and, after 1 |
+ // second, end of this sound (which is necessary for replay) is |
+ // simulated. |
+ |
base::RunLoop run_loop; |
TestObserver observer(run_loop.QuitClosure()); |
- SineWaveAudioSource source(CHANNEL_LAYOUT_STEREO, 200.0, 8000); |
- |
+ TestWavReader* reader = |
+ new TestWavReader(audio_stream_handler()->wav_parser()); |
DaleCurtis
2013/12/17 19:28:52
scoped_ptr?
ygorshenin1
2013/12/18 14:33:12
I'm not sure that smart pointers are helpful in th
|
SetObserverForTesting(&observer); |
- SetAudioSourceForTesting(&source); |
+ SetWavReaderForTesting(reader); |
ASSERT_TRUE(audio_stream_handler()->IsInitialized()); |
ASSERT_TRUE(audio_stream_handler()->Play()); |
+ |
+ AllowReplayOnceForTesting(); |
+ ASSERT_TRUE(audio_stream_handler()->Play()); |
+ |
base::MessageLoop::current()->PostDelayedTask( |
FROM_HERE, |
- base::Bind(base::IgnoreResult(&AudioStreamHandler::Play), |
- base::Unretained(audio_stream_handler())), |
- base::TimeDelta::FromSeconds(3)); |
+ base::Bind(&TestWavReader::SimulateAtEndOnce, |
+ base::Unretained(reader)), |
+ base::TimeDelta::FromSeconds(1)); |
base::MessageLoop::current()->PostDelayedTask( |
FROM_HERE, |
base::Bind(&AudioStreamHandler::Stop, |
base::Unretained(audio_stream_handler())), |
- base::TimeDelta::FromSeconds(6)); |
+ base::TimeDelta::FromSeconds(2)); |
run_loop.Run(); |
SetObserverForTesting(NULL); |
SetAudioSourceForTesting(NULL); |
- ASSERT_EQ(2, observer.num_play_requests()); |
+ ASSERT_EQ(1, observer.num_play_requests()); |
+ ASSERT_EQ(1, observer.num_replays()); |
ASSERT_EQ(1, observer.num_stop_requests()); |
} |