blob: d931ae2660d808d7f91e894307e904af1ab968aa [file] [log] [blame]
// Copyright 2015 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.
#ifndef CHROMECAST_MEDIA_CMA_BACKEND_ALSA_MOCK_ALSA_WRAPPER_H_
#define CHROMECAST_MEDIA_CMA_BACKEND_ALSA_MOCK_ALSA_WRAPPER_H_
#include <memory>
#include <vector>
#include "base/macros.h"
#include "chromecast/media/cma/backend/alsa/alsa_wrapper.h"
#include "media/audio/alsa/alsa_wrapper.h"
#include "testing/gmock/include/gmock/gmock.h"
namespace chromecast {
namespace media {
class MockAlsaWrapper : public AlsaWrapper {
public:
MockAlsaWrapper();
~MockAlsaWrapper() override;
MOCK_METHOD3(DeviceNameHint, int(int card, const char* iface, void*** hints));
MOCK_METHOD2(DeviceNameGetHint, char*(const void* hint, const char* id));
MOCK_METHOD1(DeviceNameFreeHint, int(void** hints));
MOCK_METHOD4(PcmOpen,
int(snd_pcm_t** handle,
const char* name,
snd_pcm_stream_t stream,
int mode));
MOCK_METHOD1(PcmClose, int(snd_pcm_t* handle));
MOCK_METHOD1(PcmPrepare, int(snd_pcm_t* handle));
MOCK_METHOD1(PcmDrain, int(snd_pcm_t* handle));
MOCK_METHOD1(PcmDrop, int(snd_pcm_t* handle));
MOCK_METHOD2(PcmDelay, int(snd_pcm_t* handle, snd_pcm_sframes_t* delay));
MOCK_METHOD3(PcmWritei,
snd_pcm_sframes_t(snd_pcm_t* handle,
const void* buffer,
snd_pcm_uframes_t size));
MOCK_METHOD3(PcmReadi,
snd_pcm_sframes_t(snd_pcm_t* handle,
void* buffer,
snd_pcm_uframes_t size));
MOCK_METHOD3(PcmRecover, int(snd_pcm_t* handle, int err, int silent));
MOCK_METHOD7(PcmSetParams,
int(snd_pcm_t* handle,
snd_pcm_format_t format,
snd_pcm_access_t access,
unsigned int channels,
unsigned int rate,
int soft_resample,
unsigned int latency));
MOCK_METHOD3(PcmGetParams,
int(snd_pcm_t* handle,
snd_pcm_uframes_t* buffer_size,
snd_pcm_uframes_t* period_size));
MOCK_METHOD1(PcmName, const char*(snd_pcm_t* handle));
MOCK_METHOD1(PcmAvailUpdate, snd_pcm_sframes_t(snd_pcm_t* handle));
MOCK_METHOD1(PcmState, snd_pcm_state_t(snd_pcm_t* handle));
MOCK_METHOD1(PcmStart, int(snd_pcm_t* handle));
MOCK_METHOD2(PcmFormatSize, ssize_t(snd_pcm_format_t format, size_t samples));
MOCK_METHOD1(StrError, const char*(int errnum));
MOCK_METHOD2(PcmPause, int(snd_pcm_t* handle, int enable));
MOCK_METHOD1(PcmStatusMalloc, int(snd_pcm_status_t** ptr));
MOCK_METHOD1(PcmStatusFree, void(snd_pcm_status_t* obj));
MOCK_METHOD2(PcmStatus, int(snd_pcm_t* handle, snd_pcm_status_t* status));
MOCK_METHOD1(PcmStatusGetDelay,
snd_pcm_sframes_t(const snd_pcm_status_t* obj));
MOCK_METHOD1(PcmStatusGetAvail,
snd_pcm_uframes_t(const snd_pcm_status_t* obj));
MOCK_METHOD2(PcmStatusGetHtstamp,
void(const snd_pcm_status_t* obj, snd_htimestamp_t* ptr));
MOCK_METHOD1(PcmStatusGetState, snd_pcm_state_t(const snd_pcm_status_t* obj));
MOCK_METHOD1(PcmHwParamsMalloc, int(snd_pcm_hw_params_t** ptr));
MOCK_METHOD1(PcmHwParamsFree, void(snd_pcm_hw_params_t* obj));
MOCK_METHOD2(PcmHwParamsCurrent,
int(snd_pcm_t* handle, snd_pcm_hw_params_t* params));
MOCK_METHOD1(PcmHwParamsCanPause, int(const snd_pcm_hw_params_t* params));
MOCK_METHOD2(PcmHwParamsAny,
int(snd_pcm_t* handle, snd_pcm_hw_params_t* params));
MOCK_METHOD3(PcmHwParamsSetRateResample,
int(snd_pcm_t* handle, snd_pcm_hw_params_t* params, bool val));
MOCK_METHOD3(PcmHwParamsSetAccess,
int(snd_pcm_t* handle,
snd_pcm_hw_params_t* params,
snd_pcm_access_t access));
MOCK_METHOD3(PcmHwParamsSetFormat,
int(snd_pcm_t* handle,
snd_pcm_hw_params_t* params,
snd_pcm_format_t format));
MOCK_METHOD3(PcmHwParamsSetChannels,
int(snd_pcm_t* handle,
snd_pcm_hw_params_t* params,
unsigned int num_channels));
MOCK_METHOD4(PcmHwParamsSetRateNear,
int(snd_pcm_t* handle,
snd_pcm_hw_params_t* params,
unsigned int* rate,
int* dir));
MOCK_METHOD3(PcmHwParamsSetBufferSizeNear,
int(snd_pcm_t* handle,
snd_pcm_hw_params_t* params,
snd_pcm_uframes_t* val));
MOCK_METHOD4(PcmHwParamsSetPeriodSizeNear,
int(snd_pcm_t* handle,
snd_pcm_hw_params_t* params,
snd_pcm_uframes_t* val,
int* dir));
MOCK_METHOD3(PcmHwParamsTestFormat,
int(snd_pcm_t* handle,
snd_pcm_hw_params_t* params,
snd_pcm_format_t format));
MOCK_METHOD4(PcmHwParamsTestRate,
int(snd_pcm_t* handle,
snd_pcm_hw_params_t* params,
unsigned int rate,
int dir));
MOCK_METHOD2(PcmHwParams,
int(snd_pcm_t* handle, snd_pcm_hw_params_t* params));
MOCK_METHOD1(PcmSwParamsMalloc, int(snd_pcm_sw_params_t** params));
MOCK_METHOD1(PcmSwParamsFree, void(snd_pcm_sw_params_t* params));
MOCK_METHOD2(PcmSwParamsCurrent,
int(snd_pcm_t* handle, snd_pcm_sw_params_t* params));
MOCK_METHOD3(PcmSwParamsSetStartThreshold,
int(snd_pcm_t* handle,
snd_pcm_sw_params_t* params,
snd_pcm_uframes_t val));
MOCK_METHOD3(PcmSwParamsSetAvailMin,
int(snd_pcm_t* handle,
snd_pcm_sw_params_t* params,
snd_pcm_uframes_t val));
MOCK_METHOD3(PcmSwParamsSetTstampMode,
int(snd_pcm_t* handle,
snd_pcm_sw_params_t* obj,
snd_pcm_tstamp_t val));
MOCK_METHOD3(PcmSwParamsSetTstampType,
int(snd_pcm_t* handle, snd_pcm_sw_params_t* obj, int val));
MOCK_METHOD2(PcmSwParams, int(snd_pcm_t* handle, snd_pcm_sw_params_t* obj));
// Getters/setters for test control.
snd_pcm_state_t state();
void set_state(snd_pcm_state_t state);
void set_avail(snd_pcm_uframes_t avail);
const std::vector<uint8_t>& data();
private:
class FakeAlsaWrapper;
// Certain calls will be delegated to this class.
std::unique_ptr<FakeAlsaWrapper> fake_;
DISALLOW_COPY_AND_ASSIGN(MockAlsaWrapper);
};
} // namespace media
} // namespace chromecast
#endif // CHROMECAST_MEDIA_CMA_BACKEND_ALSA_MOCK_ALSA_WRAPPER_H_