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 "webrtc/common_audio/channel_buffer.h"
12 #include "webrtc/test/gtest.h"
13 
14 namespace webrtc {
15 
16 namespace {
17 
18 const size_t kNumFrames = 480u;
19 const size_t kStereo = 2u;
20 const size_t kMono = 1u;
21 
ExpectNumChannels(const IFChannelBuffer & ifchb,size_t num_channels)22 void ExpectNumChannels(const IFChannelBuffer& ifchb, size_t num_channels) {
23   EXPECT_EQ(ifchb.ibuf_const()->num_channels(), num_channels);
24   EXPECT_EQ(ifchb.fbuf_const()->num_channels(), num_channels);
25   EXPECT_EQ(ifchb.num_channels(), num_channels);
26 }
27 
28 }  // namespace
29 
TEST(ChannelBufferTest,SetNumChannelsSetsNumChannels)30 TEST(ChannelBufferTest, SetNumChannelsSetsNumChannels) {
31   ChannelBuffer<float> chb(kNumFrames, kStereo);
32   EXPECT_EQ(chb.num_channels(), kStereo);
33   chb.set_num_channels(kMono);
34   EXPECT_EQ(chb.num_channels(), kMono);
35 }
36 
TEST(IFChannelBufferTest,SetNumChannelsSetsChannelBuffersNumChannels)37 TEST(IFChannelBufferTest, SetNumChannelsSetsChannelBuffersNumChannels) {
38   IFChannelBuffer ifchb(kNumFrames, kStereo);
39   ExpectNumChannels(ifchb, kStereo);
40   ifchb.set_num_channels(kMono);
41   ExpectNumChannels(ifchb, kMono);
42 }
43 
TEST(IFChannelBufferTest,SettingNumChannelsOfOneChannelBufferSetsTheOther)44 TEST(IFChannelBufferTest, SettingNumChannelsOfOneChannelBufferSetsTheOther) {
45   IFChannelBuffer ifchb(kNumFrames, kStereo);
46   ExpectNumChannels(ifchb, kStereo);
47   ifchb.ibuf()->set_num_channels(kMono);
48   ExpectNumChannels(ifchb, kMono);
49   ifchb.fbuf()->set_num_channels(kStereo);
50   ExpectNumChannels(ifchb, kStereo);
51 }
52 
53 #if RTC_DCHECK_IS_ON && GTEST_HAS_DEATH_TEST && !defined(WEBRTC_ANDROID)
TEST(ChannelBufferTest,SetNumChannelsDeathTest)54 TEST(ChannelBufferTest, SetNumChannelsDeathTest) {
55   ChannelBuffer<float> chb(kNumFrames, kMono);
56   EXPECT_DEATH(chb.set_num_channels(kStereo), "num_channels");
57 }
58 
TEST(IFChannelBufferTest,SetNumChannelsDeathTest)59 TEST(IFChannelBufferTest, SetNumChannelsDeathTest) {
60   IFChannelBuffer ifchb(kNumFrames, kMono);
61   EXPECT_DEATH(ifchb.ibuf()->set_num_channels(kStereo), "num_channels");
62 }
63 #endif
64 
65 }  // namespace webrtc
66