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

Side by Side Diff: chrome/renderer/media/audio_renderer_impl_unittest.cc

Issue 404016: Replace hard-coded media_format() methods with Google Mock methods declared in mock_filters.h. (Closed)
Patch Set: Created 11 years, 1 month 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
« no previous file with comments | « AUTHORS ('k') | media/base/mock_filters.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2009 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2009 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 "chrome/common/render_messages.h" 5 #include "chrome/common/render_messages.h"
6 #include "chrome/renderer/media/audio_renderer_impl.h" 6 #include "chrome/renderer/media/audio_renderer_impl.h"
7 #include "media/base/data_buffer.h" 7 #include "media/base/data_buffer.h"
8 #include "media/base/media_format.h"
8 #include "media/base/mock_filter_host.h" 9 #include "media/base/mock_filter_host.h"
9 #include "media/base/mock_filters.h" 10 #include "media/base/mock_filters.h"
10 #include "testing/gtest/include/gtest/gtest.h" 11 #include "testing/gtest/include/gtest/gtest.h"
11 12
13 using ::testing::ReturnRef;
14
12 class AudioRendererImplTest : public ::testing::Test { 15 class AudioRendererImplTest : public ::testing::Test {
13 public: 16 public:
14 static const int kRouteId = 0; 17 static const int kRouteId = 0;
15 static const int kSize = 1024; 18 static const int kSize = 1024;
16 19
17 AudioRendererImplTest() { 20 AudioRendererImplTest() {
18 message_loop_.reset(new MessageLoop(MessageLoop::TYPE_IO)); 21 message_loop_.reset(new MessageLoop(MessageLoop::TYPE_IO));
19 22
20 // TODO(scherkus): use gmock with AudioMessageFilter to verify 23 // TODO(scherkus): use gmock with AudioMessageFilter to verify
21 // AudioRendererImpl calls or doesn't call Send(). 24 // AudioRendererImpl calls or doesn't call Send().
22 filter_ = new AudioMessageFilter(kRouteId); 25 filter_ = new AudioMessageFilter(kRouteId);
23 filter_->message_loop_ = message_loop_.get(); 26 filter_->message_loop_ = message_loop_.get();
24 27
25 // Create temporary shared memory. 28 // Create temporary shared memory.
26 CHECK(shared_mem_.Create(L"", false, false, kSize)); 29 CHECK(shared_mem_.Create(L"", false, false, kSize));
27 30
28 // Setup expectations for initialization. 31 // Setup expectations for initialization.
29 EXPECT_CALL(callback_, OnFilterCallback()); 32 EXPECT_CALL(callback_, OnFilterCallback());
30 EXPECT_CALL(callback_, OnCallbackDestroyed()); 33 EXPECT_CALL(callback_, OnCallbackDestroyed());
31 decoder_ = new media::MockAudioDecoder(2, 48000, 16); 34 decoder_ = new media::MockAudioDecoder();
35
36 // Associate media format with decoder
37 decoder_media_format_.SetAsString(media::MediaFormat::kMimeType,
38 media::mime_type::kUncompressedAudio);
39 decoder_media_format_.SetAsInteger(media::MediaFormat::kChannels, 2);
40 decoder_media_format_.SetAsInteger(media::MediaFormat::kSampleRate, 48000);
41 decoder_media_format_.SetAsInteger(media::MediaFormat::kSampleBits, 16);
42 EXPECT_CALL(*decoder_, media_format())
43 .WillRepeatedly(ReturnRef(decoder_media_format_));
32 44
33 // Create and initialize audio renderer. 45 // Create and initialize audio renderer.
34 renderer_ = new AudioRendererImpl(filter_); 46 renderer_ = new AudioRendererImpl(filter_);
35 renderer_->set_host(&host_); 47 renderer_->set_host(&host_);
36 renderer_->set_message_loop(message_loop_.get()); 48 renderer_->set_message_loop(message_loop_.get());
37 renderer_->Initialize(decoder_, callback_.NewCallback()); 49 renderer_->Initialize(decoder_, callback_.NewCallback());
38 50
39 // Run pending tasks and simulate responding with a created audio stream. 51 // Run pending tasks and simulate responding with a created audio stream.
40 message_loop_->RunAllPending(); 52 message_loop_->RunAllPending();
41 renderer_->OnCreated(shared_mem_.handle(), kSize); 53 renderer_->OnCreated(shared_mem_.handle(), kSize);
42 } 54 }
43 55
44 virtual ~AudioRendererImplTest() { 56 virtual ~AudioRendererImplTest() {
45 } 57 }
46 58
47 protected: 59 protected:
48 // Fixtures. 60 // Fixtures.
49 scoped_ptr<MessageLoop> message_loop_; 61 scoped_ptr<MessageLoop> message_loop_;
50 scoped_refptr<AudioMessageFilter> filter_; 62 scoped_refptr<AudioMessageFilter> filter_;
51 base::SharedMemory shared_mem_; 63 base::SharedMemory shared_mem_;
52 media::MockFilterHost host_; 64 media::MockFilterHost host_;
53 media::MockFilterCallback callback_; 65 media::MockFilterCallback callback_;
54 scoped_refptr<media::MockAudioDecoder> decoder_; 66 scoped_refptr<media::MockAudioDecoder> decoder_;
55 scoped_refptr<AudioRendererImpl> renderer_; 67 scoped_refptr<AudioRendererImpl> renderer_;
68 media::MediaFormat decoder_media_format_;
56 69
57 private: 70 private:
58 DISALLOW_COPY_AND_ASSIGN(AudioRendererImplTest); 71 DISALLOW_COPY_AND_ASSIGN(AudioRendererImplTest);
59 }; 72 };
60 73
61 TEST_F(AudioRendererImplTest, SetPlaybackRate) { 74 TEST_F(AudioRendererImplTest, SetPlaybackRate) {
62 // Execute SetPlaybackRate() codepath to create an IPC message. 75 // Execute SetPlaybackRate() codepath to create an IPC message.
63 76
64 // Toggle play/pause to generate some IPC messages. 77 // Toggle play/pause to generate some IPC messages.
65 renderer_->SetPlaybackRate(0.0f); 78 renderer_->SetPlaybackRate(0.0f);
66 renderer_->SetPlaybackRate(1.0f); 79 renderer_->SetPlaybackRate(1.0f);
67 renderer_->SetPlaybackRate(0.0f); 80 renderer_->SetPlaybackRate(0.0f);
68 81
82 renderer_->Stop();
69 message_loop_->RunAllPending(); 83 message_loop_->RunAllPending();
70 renderer_->Stop();
71 } 84 }
72 85
73 TEST_F(AudioRendererImplTest, SetVolume) { 86 TEST_F(AudioRendererImplTest, SetVolume) {
74 // Execute SetVolume() codepath to create an IPC message. 87 // Execute SetVolume() codepath to create an IPC message.
75 renderer_->SetVolume(0.5f); 88 renderer_->SetVolume(0.5f);
89 renderer_->Stop();
76 message_loop_->RunAllPending(); 90 message_loop_->RunAllPending();
77 renderer_->Stop();
78 } 91 }
79 92
80 TEST_F(AudioRendererImplTest, Stop) { 93 TEST_F(AudioRendererImplTest, Stop) {
81 // Declare some state messages. 94 // Declare some state messages.
82 const ViewMsg_AudioStreamState kError = 95 const ViewMsg_AudioStreamState kError =
83 { ViewMsg_AudioStreamState::kError }; 96 { ViewMsg_AudioStreamState::kError };
84 const ViewMsg_AudioStreamState kPlaying = 97 const ViewMsg_AudioStreamState kPlaying =
85 { ViewMsg_AudioStreamState::kPlaying }; 98 { ViewMsg_AudioStreamState::kPlaying };
86 const ViewMsg_AudioStreamState kPaused = 99 const ViewMsg_AudioStreamState kPaused =
87 { ViewMsg_AudioStreamState::kPaused }; 100 { ViewMsg_AudioStreamState::kPaused };
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after
120 renderer_->Stop(); 133 renderer_->Stop();
121 } 134 }
122 135
123 TEST_F(AudioRendererImplTest, DestroyedMessageLoop_OnReadComplete) { 136 TEST_F(AudioRendererImplTest, DestroyedMessageLoop_OnReadComplete) {
124 // Kill the message loop and verify OnReadComplete() still works. 137 // Kill the message loop and verify OnReadComplete() still works.
125 message_loop_.reset(); 138 message_loop_.reset();
126 scoped_refptr<media::Buffer> buffer = new media::DataBuffer(kSize); 139 scoped_refptr<media::Buffer> buffer = new media::DataBuffer(kSize);
127 renderer_->OnReadComplete(buffer); 140 renderer_->OnReadComplete(buffer);
128 renderer_->Stop(); 141 renderer_->Stop();
129 } 142 }
OLDNEW
« no previous file with comments | « AUTHORS ('k') | media/base/mock_filters.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698