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