1 /*
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
11 #include "common_audio/channel_buffer.h"
12
13 #include "test/gtest.h"
14 #include "test/testsupport/rtc_expect_death.h"
15
16 namespace webrtc {
17
18 namespace {
19
20 const size_t kNumFrames = 480u;
21 const size_t kStereo = 2u;
22 const size_t kMono = 1u;
23
ExpectNumChannels(const IFChannelBuffer & ifchb,size_t num_channels)24 void 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
TEST(ChannelBufferTest,SetNumChannelsSetsNumChannels)32 TEST(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
TEST(IFChannelBufferTest,SetNumChannelsSetsChannelBuffersNumChannels)39 TEST(IFChannelBufferTest, SetNumChannelsSetsChannelBuffersNumChannels) {
40 IFChannelBuffer ifchb(kNumFrames, kStereo);
41 ExpectNumChannels(ifchb, kStereo);
42 ifchb.set_num_channels(kMono);
43 ExpectNumChannels(ifchb, kMono);
44 }
45
TEST(IFChannelBufferTest,SettingNumChannelsOfOneChannelBufferSetsTheOther)46 TEST(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)
TEST(ChannelBufferDeathTest,SetNumChannelsDeathTest)56 TEST(ChannelBufferDeathTest, SetNumChannelsDeathTest) {
57 ChannelBuffer<float> chb(kNumFrames, kMono);
58 RTC_EXPECT_DEATH(chb.set_num_channels(kStereo), "num_channels");
59 }
60
TEST(IFChannelBufferDeathTest,SetNumChannelsDeathTest)61 TEST(IFChannelBufferDeathTest, SetNumChannelsDeathTest) {
62 IFChannelBuffer ifchb(kNumFrames, kMono);
63 RTC_EXPECT_DEATH(ifchb.ibuf()->set_num_channels(kStereo), "num_channels");
64 }
65 #endif
66
67 } // namespace webrtc
68