blob: a8b64891d6fd48ad90509f5f02b6ed697b523e8a [file] [log] [blame]
Alejandro Luebsa181c9a2016-06-30 22:33:371/*
2 * Copyright (c) 2016 The WebRTC project authors. All Rights Reserved.
3 *
4 * Use of this source code is governed by a BSD-style license
5 * that can be found in the LICENSE file in the root of the source
6 * tree. An additional intellectual property rights grant can be found
7 * in the file PATENTS. All contributing project authors may
8 * be found in the AUTHORS file in the root of the source tree.
9 */
10
Mirko Bonadei92ea95e2017-09-15 04:47:3111#include "common_audio/channel_buffer.h"
Jonas Olssona4d87372019-07-05 17:08:3312
Mirko Bonadei92ea95e2017-09-15 04:47:3113#include "test/gtest.h"
Artem Titov9dc209a2019-11-28 16:09:3014#include "test/testsupport/rtc_expect_death.h"
Alejandro Luebsa181c9a2016-06-30 22:33:3715
16namespace webrtc {
17
18namespace {
19
20const size_t kNumFrames = 480u;
21const size_t kStereo = 2u;
22const size_t kMono = 1u;
23
24void ExpectNumChannels(const IFChannelBuffer& ifchb, size_t num_channels) {
25 EXPECT_EQ(ifchb.ibuf_const()->num_channels(), num_channels);
26 EXPECT_EQ(ifchb.fbuf_const()->num_channels(), num_channels);
27 EXPECT_EQ(ifchb.num_channels(), num_channels);
28}
29
30} // namespace
31
32TEST(ChannelBufferTest, SetNumChannelsSetsNumChannels) {
33 ChannelBuffer<float> chb(kNumFrames, kStereo);
34 EXPECT_EQ(chb.num_channels(), kStereo);
35 chb.set_num_channels(kMono);
36 EXPECT_EQ(chb.num_channels(), kMono);
37}
38
39TEST(IFChannelBufferTest, SetNumChannelsSetsChannelBuffersNumChannels) {
40 IFChannelBuffer ifchb(kNumFrames, kStereo);
41 ExpectNumChannels(ifchb, kStereo);
42 ifchb.set_num_channels(kMono);
43 ExpectNumChannels(ifchb, kMono);
44}
45
46TEST(IFChannelBufferTest, SettingNumChannelsOfOneChannelBufferSetsTheOther) {
47 IFChannelBuffer ifchb(kNumFrames, kStereo);
48 ExpectNumChannels(ifchb, kStereo);
49 ifchb.ibuf()->set_num_channels(kMono);
50 ExpectNumChannels(ifchb, kMono);
51 ifchb.fbuf()->set_num_channels(kStereo);
52 ExpectNumChannels(ifchb, kStereo);
53}
54
55#if RTC_DCHECK_IS_ON && GTEST_HAS_DEATH_TEST && !defined(WEBRTC_ANDROID)
Tommi909f3a52020-05-18 14:47:5656TEST(ChannelBufferDeathTest, SetNumChannelsDeathTest) {
Alejandro Luebsa181c9a2016-06-30 22:33:3757 ChannelBuffer<float> chb(kNumFrames, kMono);
Artem Titov9dc209a2019-11-28 16:09:3058 RTC_EXPECT_DEATH(chb.set_num_channels(kStereo), "num_channels");
Alejandro Luebsa181c9a2016-06-30 22:33:3759}
60
Tommi909f3a52020-05-18 14:47:5661TEST(IFChannelBufferDeathTest, SetNumChannelsDeathTest) {
Alejandro Luebsa181c9a2016-06-30 22:33:3762 IFChannelBuffer ifchb(kNumFrames, kMono);
Artem Titov9dc209a2019-11-28 16:09:3063 RTC_EXPECT_DEATH(ifchb.ibuf()->set_num_channels(kStereo), "num_channels");
Alejandro Luebsa181c9a2016-06-30 22:33:3764}
65#endif
66
67} // namespace webrtc