| // Copyright 2018 The Chromium Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| #include "media/audio/alsa/alsa_util.h" |
| #include "media/audio/alsa/mock_alsa_wrapper.h" |
| #include "testing/gtest/include/gtest/gtest.h" |
| |
| namespace alsa_util { |
| |
| namespace { |
| |
| using ::testing::_; |
| using ::testing::InSequence; |
| using ::testing::Invoke; |
| using ::testing::Return; |
| |
| } // namespace |
| |
| TEST(AlsaUtilTest, FreeHwParams) { |
| InSequence seq; |
| media::MockAlsaWrapper mock_alsa_wrapper; |
| snd_pcm_hw_params_t* params_ptr = (snd_pcm_hw_params_t*)malloc(1); |
| EXPECT_CALL(mock_alsa_wrapper, PcmOpen(_, _, _, _)).WillOnce(Return(0)); |
| EXPECT_CALL(mock_alsa_wrapper, PcmSetParams(_, _, _, _, _, _, _)) |
| .WillOnce(Return(-1)); |
| EXPECT_CALL(mock_alsa_wrapper, StrError(_)).WillOnce(Return("error")); |
| EXPECT_CALL(mock_alsa_wrapper, PcmHwParamsMalloc(_)) |
| .WillOnce(Invoke([params_ptr](snd_pcm_hw_params_t** params) { |
| *params = params_ptr; |
| return 0; |
| })); |
| EXPECT_CALL(mock_alsa_wrapper, PcmHwParamsAny(_, _)).WillOnce(Return(-1)); |
| EXPECT_CALL(mock_alsa_wrapper, StrError(_)).WillOnce(Return("error")); |
| EXPECT_CALL(mock_alsa_wrapper, PcmHwParamsFree(params_ptr)); |
| EXPECT_CALL(mock_alsa_wrapper, PcmName(_)).WillOnce(Return("default")); |
| EXPECT_CALL(mock_alsa_wrapper, PcmClose(_)).WillOnce(Return(0)); |
| snd_pcm_t* handle = OpenCaptureDevice(&mock_alsa_wrapper, "default", 2, 48000, |
| SND_PCM_FORMAT_S16, 40000, 10000); |
| EXPECT_EQ(handle, nullptr); |
| free(params_ptr); |
| } |
| |
| } // namespace alsa_util |