/*
 *  Copyright (c) 2017 The WebRTC project authors. All Rights Reserved.
 *
 *  Use of this source code is governed by a BSD-style license
 *  that can be found in the LICENSE file in the root of the source
 *  tree. An additional intellectual property rights grant can be found
 *  in the file PATENTS.  All contributing project authors may
 *  be found in the AUTHORS file in the root of the source tree.
 */

#include "webrtc/modules/audio_processing/test/conversational_speech/mock_wavreader.h"

namespace webrtc {
namespace test {
namespace conversational_speech {

using testing::Return;

MockWavReader::MockWavReader(
    int sample_rate, size_t num_channels, size_t num_samples)
      : sample_rate_(sample_rate), num_channels_(num_channels),
          num_samples_(num_samples) {
  ON_CALL(*this, SampleRate()).WillByDefault(Return(sample_rate_));
  ON_CALL(*this, NumChannels()).WillByDefault(Return(num_channels_));
  ON_CALL(*this, NumSamples()).WillByDefault(Return(num_samples_));
}

MockWavReader::~MockWavReader() = default;

}  // namespace conversational_speech
}  // namespace test
}  // namespace webrtc
