170d6201e47271fe06c920b26cbf781c67fa3d4d8Dylan Reid// Copyright (c) 2012 The Chromium OS Authors. All rights reserved. 270d6201e47271fe06c920b26cbf781c67fa3d4d8Dylan Reid// Use of this source code is governed by a BSD-style license that can be 370d6201e47271fe06c920b26cbf781c67fa3d4d8Dylan Reid// found in the LICENSE file. 470d6201e47271fe06c920b26cbf781c67fa3d4d8Dylan Reid 570d6201e47271fe06c920b26cbf781c67fa3d4d8Dylan Reid#include <stdio.h> 670d6201e47271fe06c920b26cbf781c67fa3d4d8Dylan Reid#include <gtest/gtest.h> 770d6201e47271fe06c920b26cbf781c67fa3d4d8Dylan Reid 870d6201e47271fe06c920b26cbf781c67fa3d4d8Dylan Reidextern "C" { 970d6201e47271fe06c920b26cbf781c67fa3d4d8Dylan Reid#include "cras_volume_curve.h" 1070d6201e47271fe06c920b26cbf781c67fa3d4d8Dylan Reid} 1170d6201e47271fe06c920b26cbf781c67fa3d4d8Dylan Reid 1270d6201e47271fe06c920b26cbf781c67fa3d4d8Dylan Reidnamespace { 1370d6201e47271fe06c920b26cbf781c67fa3d4d8Dylan Reid 1470d6201e47271fe06c920b26cbf781c67fa3d4d8Dylan ReidTEST(VolumeCurve, DefaultCurve) { 1578957c7652b9c0061b74b8eedadf83b6e8f8bb88Dylan Reid struct cras_volume_curve *curve; 1678957c7652b9c0061b74b8eedadf83b6e8f8bb88Dylan Reid curve = cras_volume_curve_create_default(); 1778957c7652b9c0061b74b8eedadf83b6e8f8bb88Dylan Reid ASSERT_NE(static_cast<struct cras_volume_curve *>(NULL), curve); 18527df3b2645a5dc48ffa616e3c1500ba585fbca1Dylan Reid EXPECT_EQ(0 - 50 * 50, curve->get_dBFS(curve, 50)); 1978957c7652b9c0061b74b8eedadf83b6e8f8bb88Dylan Reid EXPECT_EQ(0, curve->get_dBFS(curve, 100)); 20527df3b2645a5dc48ffa616e3c1500ba585fbca1Dylan Reid EXPECT_EQ(0 - 100 * 50, curve->get_dBFS(curve, 0)); 21527df3b2645a5dc48ffa616e3c1500ba585fbca1Dylan Reid EXPECT_EQ(0 - 25 * 50, curve->get_dBFS(curve, 75)); 229ea33930817a59cd1ec72cfb3540611f7069a618Dylan Reid cras_volume_curve_destroy(curve); 239ea33930817a59cd1ec72cfb3540611f7069a618Dylan Reid} 249ea33930817a59cd1ec72cfb3540611f7069a618Dylan Reid 259ea33930817a59cd1ec72cfb3540611f7069a618Dylan ReidTEST(VolumeCurve, SteppedCurve) { 269ea33930817a59cd1ec72cfb3540611f7069a618Dylan Reid struct cras_volume_curve *curve; 279ea33930817a59cd1ec72cfb3540611f7069a618Dylan Reid curve = cras_volume_curve_create_simple_step(-600, 75); 289ea33930817a59cd1ec72cfb3540611f7069a618Dylan Reid ASSERT_NE(static_cast<struct cras_volume_curve *>(NULL), curve); 299ea33930817a59cd1ec72cfb3540611f7069a618Dylan Reid EXPECT_EQ(-600 - 50 * 75, curve->get_dBFS(curve, 50)); 309ea33930817a59cd1ec72cfb3540611f7069a618Dylan Reid EXPECT_EQ(-600, curve->get_dBFS(curve, 100)); 319ea33930817a59cd1ec72cfb3540611f7069a618Dylan Reid EXPECT_EQ(-600 - 100 * 75, curve->get_dBFS(curve, 0)); 329ea33930817a59cd1ec72cfb3540611f7069a618Dylan Reid EXPECT_EQ(-600 - 25 * 75, curve->get_dBFS(curve, 75)); 339ea33930817a59cd1ec72cfb3540611f7069a618Dylan Reid cras_volume_curve_destroy(curve); 3470d6201e47271fe06c920b26cbf781c67fa3d4d8Dylan Reid} 3570d6201e47271fe06c920b26cbf781c67fa3d4d8Dylan Reid 3614f8c2e948cc896d033a9a2597a646bb9110d28eDylan ReidTEST(VolumeCurve, ExplicitCurve) { 3714f8c2e948cc896d033a9a2597a646bb9110d28eDylan Reid struct cras_volume_curve *curve; 3814f8c2e948cc896d033a9a2597a646bb9110d28eDylan Reid long dB_vals[101]; 3914f8c2e948cc896d033a9a2597a646bb9110d28eDylan Reid 4014f8c2e948cc896d033a9a2597a646bb9110d28eDylan Reid for (unsigned int i = 0; i < 101; i++) 4114f8c2e948cc896d033a9a2597a646bb9110d28eDylan Reid dB_vals[i] = i * 2 + -400; 4214f8c2e948cc896d033a9a2597a646bb9110d28eDylan Reid curve = cras_volume_curve_create_explicit(dB_vals); 4314f8c2e948cc896d033a9a2597a646bb9110d28eDylan Reid ASSERT_NE(static_cast<struct cras_volume_curve *>(NULL), curve); 4414f8c2e948cc896d033a9a2597a646bb9110d28eDylan Reid for (unsigned int i = 0; i < 101; i++) 4514f8c2e948cc896d033a9a2597a646bb9110d28eDylan Reid EXPECT_EQ(i * 2 - 400, curve->get_dBFS(curve, i)); 4614f8c2e948cc896d033a9a2597a646bb9110d28eDylan Reid cras_volume_curve_destroy(curve); 4714f8c2e948cc896d033a9a2597a646bb9110d28eDylan Reid} 4814f8c2e948cc896d033a9a2597a646bb9110d28eDylan Reid 4970d6201e47271fe06c920b26cbf781c67fa3d4d8Dylan Reid} // namespace 5070d6201e47271fe06c920b26cbf781c67fa3d4d8Dylan Reid 5170d6201e47271fe06c920b26cbf781c67fa3d4d8Dylan Reidint main(int argc, char **argv) { 5270d6201e47271fe06c920b26cbf781c67fa3d4d8Dylan Reid ::testing::InitGoogleTest(&argc, argv); 5370d6201e47271fe06c920b26cbf781c67fa3d4d8Dylan Reid return RUN_ALL_TESTS(); 5470d6201e47271fe06c920b26cbf781c67fa3d4d8Dylan Reid} 55