| // Copyright (c) 2012 The Chromium OS Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| #include <gtest/gtest.h> |
| #include <stdio.h> |
| |
| extern "C" { |
| #include "cras_volume_curve.h" |
| } |
| |
| namespace { |
| |
| TEST(VolumeCurve, DefaultCurve) { |
| struct cras_volume_curve* curve; |
| curve = cras_volume_curve_create_default(); |
| ASSERT_NE(static_cast<struct cras_volume_curve*>(NULL), curve); |
| EXPECT_EQ(0 - 50 * 50, curve->get_dBFS(curve, 50)); |
| EXPECT_EQ(0, curve->get_dBFS(curve, 100)); |
| EXPECT_EQ(0 - 100 * 50, curve->get_dBFS(curve, 0)); |
| EXPECT_EQ(0 - 25 * 50, curve->get_dBFS(curve, 75)); |
| cras_volume_curve_destroy(curve); |
| } |
| |
| TEST(VolumeCurve, SteppedCurve) { |
| struct cras_volume_curve* curve; |
| curve = cras_volume_curve_create_simple_step(-600, 75); |
| ASSERT_NE(static_cast<struct cras_volume_curve*>(NULL), curve); |
| EXPECT_EQ(-600 - 50 * 75, curve->get_dBFS(curve, 50)); |
| EXPECT_EQ(-600, curve->get_dBFS(curve, 100)); |
| EXPECT_EQ(-600 - 100 * 75, curve->get_dBFS(curve, 0)); |
| EXPECT_EQ(-600 - 25 * 75, curve->get_dBFS(curve, 75)); |
| cras_volume_curve_destroy(curve); |
| } |
| |
| TEST(VolumeCurve, ExplicitCurve) { |
| struct cras_volume_curve* curve; |
| long dB_vals[101]; |
| |
| for (unsigned int i = 0; i < 101; i++) |
| dB_vals[i] = i * 2 + -400; |
| curve = cras_volume_curve_create_explicit(dB_vals); |
| ASSERT_NE(static_cast<struct cras_volume_curve*>(NULL), curve); |
| for (unsigned int i = 0; i < 101; i++) |
| EXPECT_EQ(i * 2 - 400, curve->get_dBFS(curve, i)); |
| cras_volume_curve_destroy(curve); |
| } |
| |
| } // namespace |
| |
| int main(int argc, char** argv) { |
| ::testing::InitGoogleTest(&argc, argv); |
| return RUN_ALL_TESTS(); |
| } |