- add sources.
[platform/framework/web/crosswalk.git] / src / media / audio / audio_parameters_unittest.cc
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4
5 #include "base/basictypes.h"
6 #include "base/strings/string_number_conversions.h"
7 #include "media/audio/audio_parameters.h"
8 #include "testing/gtest/include/gtest/gtest.h"
9
10 namespace media {
11
12 TEST(AudioParameters, Constructor_Default) {
13   AudioParameters::Format expected_format = AudioParameters::AUDIO_PCM_LINEAR;
14   int expected_bits = 0;
15   int expected_channels = 0;
16   ChannelLayout expected_channel_layout = CHANNEL_LAYOUT_NONE;
17   int expected_rate = 0;
18   int expected_samples = 0;
19
20   AudioParameters params;
21
22   EXPECT_EQ(expected_format, params.format());
23   EXPECT_EQ(expected_bits, params.bits_per_sample());
24   EXPECT_EQ(expected_channels, params.channels());
25   EXPECT_EQ(expected_channel_layout, params.channel_layout());
26   EXPECT_EQ(expected_rate, params.sample_rate());
27   EXPECT_EQ(expected_samples, params.frames_per_buffer());
28 }
29
30 TEST(AudioParameters, Constructor_ParameterValues) {
31   AudioParameters::Format expected_format =
32       AudioParameters::AUDIO_PCM_LOW_LATENCY;
33   int expected_bits = 16;
34   int expected_channels = 6;
35   ChannelLayout expected_channel_layout = CHANNEL_LAYOUT_5_1;
36   int expected_rate = 44100;
37   int expected_samples = 880;
38
39   AudioParameters params(expected_format, expected_channel_layout,
40                          expected_rate, expected_bits, expected_samples);
41
42   EXPECT_EQ(expected_format, params.format());
43   EXPECT_EQ(expected_bits, params.bits_per_sample());
44   EXPECT_EQ(expected_channels, params.channels());
45   EXPECT_EQ(expected_channel_layout, params.channel_layout());
46   EXPECT_EQ(expected_rate, params.sample_rate());
47   EXPECT_EQ(expected_samples, params.frames_per_buffer());
48 }
49
50 TEST(AudioParameters, GetBytesPerBuffer) {
51   EXPECT_EQ(100, AudioParameters(AudioParameters::AUDIO_PCM_LINEAR,
52                                  CHANNEL_LAYOUT_MONO, 1000,  8, 100)
53                                  .GetBytesPerBuffer());
54   EXPECT_EQ(200, AudioParameters(AudioParameters::AUDIO_PCM_LINEAR,
55                                  CHANNEL_LAYOUT_MONO, 1000,  16, 100)
56                                  .GetBytesPerBuffer());
57   EXPECT_EQ(200, AudioParameters(AudioParameters::AUDIO_PCM_LINEAR,
58                                  CHANNEL_LAYOUT_STEREO, 1000,  8, 100)
59                                  .GetBytesPerBuffer());
60   EXPECT_EQ(200, AudioParameters(AudioParameters::AUDIO_PCM_LINEAR,
61                                  CHANNEL_LAYOUT_MONO, 1000,  8, 200)
62                                  .GetBytesPerBuffer());
63   EXPECT_EQ(800, AudioParameters(AudioParameters::AUDIO_PCM_LINEAR,
64                                  CHANNEL_LAYOUT_STEREO, 1000,  16, 200)
65                                  .GetBytesPerBuffer());
66 }
67
68 TEST(AudioParameters, GetBytesPerSecond) {
69   EXPECT_EQ(0, AudioParameters(AudioParameters::AUDIO_PCM_LINEAR,
70                                CHANNEL_LAYOUT_NONE, 0, 0, 0)
71                                .GetBytesPerSecond());
72   EXPECT_EQ(0, AudioParameters(AudioParameters::AUDIO_PCM_LINEAR,
73                                CHANNEL_LAYOUT_STEREO, 0, 0, 0)
74                                .GetBytesPerSecond());
75   EXPECT_EQ(0, AudioParameters(AudioParameters::AUDIO_PCM_LINEAR,
76                                CHANNEL_LAYOUT_NONE, 100, 0, 0)
77                                .GetBytesPerSecond());
78   EXPECT_EQ(0, AudioParameters(AudioParameters::AUDIO_PCM_LINEAR,
79                                CHANNEL_LAYOUT_NONE, 0, 8, 0)
80                                .GetBytesPerSecond());
81   EXPECT_EQ(200, AudioParameters(AudioParameters::AUDIO_PCM_LINEAR,
82                                  CHANNEL_LAYOUT_STEREO, 100, 8, 0)
83                                  .GetBytesPerSecond());
84 }
85
86 TEST(AudioParameters, Compare) {
87   AudioParameters values[] = {
88     AudioParameters(AudioParameters::AUDIO_PCM_LINEAR, CHANNEL_LAYOUT_MONO,
89                     1000,  8, 100),
90     AudioParameters(AudioParameters::AUDIO_PCM_LINEAR, CHANNEL_LAYOUT_MONO,
91                     1000,  8, 200),
92     AudioParameters(AudioParameters::AUDIO_PCM_LINEAR, CHANNEL_LAYOUT_MONO,
93                     1000, 16, 100),
94     AudioParameters(AudioParameters::AUDIO_PCM_LINEAR, CHANNEL_LAYOUT_MONO,
95                     1000, 16, 200),
96     AudioParameters(AudioParameters::AUDIO_PCM_LINEAR, CHANNEL_LAYOUT_MONO,
97                     2000,  8, 100),
98     AudioParameters(AudioParameters::AUDIO_PCM_LINEAR, CHANNEL_LAYOUT_MONO,
99                     2000,  8, 200),
100     AudioParameters(AudioParameters::AUDIO_PCM_LINEAR, CHANNEL_LAYOUT_MONO,
101                     2000, 16, 100),
102     AudioParameters(AudioParameters::AUDIO_PCM_LINEAR, CHANNEL_LAYOUT_MONO,
103                     2000, 16, 200),
104
105     AudioParameters(AudioParameters::AUDIO_PCM_LINEAR, CHANNEL_LAYOUT_STEREO,
106                     1000,  8, 100),
107     AudioParameters(AudioParameters::AUDIO_PCM_LINEAR, CHANNEL_LAYOUT_STEREO,
108                     1000,  8, 200),
109     AudioParameters(AudioParameters::AUDIO_PCM_LINEAR, CHANNEL_LAYOUT_STEREO,
110                     1000, 16, 100),
111     AudioParameters(AudioParameters::AUDIO_PCM_LINEAR, CHANNEL_LAYOUT_STEREO,
112                     1000, 16, 200),
113     AudioParameters(AudioParameters::AUDIO_PCM_LINEAR, CHANNEL_LAYOUT_STEREO,
114                     2000,  8, 100),
115     AudioParameters(AudioParameters::AUDIO_PCM_LINEAR, CHANNEL_LAYOUT_STEREO,
116                     2000,  8, 200),
117     AudioParameters(AudioParameters::AUDIO_PCM_LINEAR, CHANNEL_LAYOUT_STEREO,
118                     2000, 16, 100),
119     AudioParameters(AudioParameters::AUDIO_PCM_LINEAR, CHANNEL_LAYOUT_STEREO,
120                     2000, 16, 200),
121
122     AudioParameters(AudioParameters::AUDIO_PCM_LOW_LATENCY, CHANNEL_LAYOUT_MONO,
123                     1000,  8, 100),
124     AudioParameters(AudioParameters::AUDIO_PCM_LOW_LATENCY, CHANNEL_LAYOUT_MONO,
125                     1000,  8, 200),
126     AudioParameters(AudioParameters::AUDIO_PCM_LOW_LATENCY, CHANNEL_LAYOUT_MONO,
127                     1000, 16, 100),
128     AudioParameters(AudioParameters::AUDIO_PCM_LOW_LATENCY, CHANNEL_LAYOUT_MONO,
129                     1000, 16, 200),
130     AudioParameters(AudioParameters::AUDIO_PCM_LOW_LATENCY, CHANNEL_LAYOUT_MONO,
131                     2000,  8, 100),
132     AudioParameters(AudioParameters::AUDIO_PCM_LOW_LATENCY, CHANNEL_LAYOUT_MONO,
133                     2000,  8, 200),
134     AudioParameters(AudioParameters::AUDIO_PCM_LOW_LATENCY, CHANNEL_LAYOUT_MONO,
135                     2000, 16, 100),
136     AudioParameters(AudioParameters::AUDIO_PCM_LOW_LATENCY, CHANNEL_LAYOUT_MONO,
137                     2000, 16, 200),
138
139     AudioParameters(AudioParameters::AUDIO_PCM_LOW_LATENCY,
140                     CHANNEL_LAYOUT_STEREO, 1000,  8, 100),
141     AudioParameters(AudioParameters::AUDIO_PCM_LOW_LATENCY,
142                     CHANNEL_LAYOUT_STEREO, 1000,  8, 200),
143     AudioParameters(AudioParameters::AUDIO_PCM_LOW_LATENCY,
144                     CHANNEL_LAYOUT_STEREO, 1000, 16, 100),
145     AudioParameters(AudioParameters::AUDIO_PCM_LOW_LATENCY,
146                     CHANNEL_LAYOUT_STEREO, 1000, 16, 200),
147     AudioParameters(AudioParameters::AUDIO_PCM_LOW_LATENCY,
148                     CHANNEL_LAYOUT_STEREO, 2000,  8, 100),
149     AudioParameters(AudioParameters::AUDIO_PCM_LOW_LATENCY,
150                     CHANNEL_LAYOUT_STEREO, 2000,  8, 200),
151     AudioParameters(AudioParameters::AUDIO_PCM_LOW_LATENCY,
152                     CHANNEL_LAYOUT_STEREO, 2000, 16, 100),
153     AudioParameters(AudioParameters::AUDIO_PCM_LOW_LATENCY,
154                     CHANNEL_LAYOUT_STEREO, 2000, 16, 200),
155   };
156
157   for (size_t i = 0; i < arraysize(values); ++i) {
158     for (size_t j = 0; j < arraysize(values); ++j) {
159       SCOPED_TRACE("i=" + base::IntToString(i) + " j=" + base::IntToString(j));
160       EXPECT_EQ(i < j, values[i] < values[j]);
161     }
162
163     // Verify that a value is never less than itself.
164     EXPECT_FALSE(values[i] < values[i]);
165   }
166 }
167
168 }  // namespace media