blob: 479f968bb5d651cb3db033eb16856650b8d0549d [file] [log] [blame]
// Copyright 2020 The Fuchsia 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 "src/media/audio/audio_core/loudness_transform.h"
#include <gtest/gtest.h>
#include "src/lib/testing/loop_fixture/test_loop_fixture.h"
namespace media::audio {
namespace {
TEST(MappedLoudnessTransformTest, VolumesMapped) {
const auto volume_curve = VolumeCurve::DefaultForMinGain(Gain::kMinGainDb);
auto tf = MappedLoudnessTransform(volume_curve);
EXPECT_FLOAT_EQ(tf.Evaluate<2>({VolumeValue{1.}, VolumeValue{1.}}), Gain::kUnityGainDb);
EXPECT_LT(tf.Evaluate<2>({VolumeValue{1.}, VolumeValue{0.1}}), Gain::kUnityGainDb);
EXPECT_FLOAT_EQ(tf.Evaluate<2>({VolumeValue{1.}, VolumeValue{0.}}), Gain::kMinGainDb);
}
TEST(MappedLoudnessTransformTest, GainApplied) {
const auto volume_curve = VolumeCurve::DefaultForMinGain(Gain::kMinGainDb);
auto tf = MappedLoudnessTransform(volume_curve);
EXPECT_FLOAT_EQ(
tf.Evaluate<2>({GainDbFsValue{Gain::kUnityGainDb}, GainDbFsValue{Gain::kUnityGainDb}}),
Gain::kUnityGainDb);
EXPECT_LT(tf.Evaluate<2>({VolumeValue{1.}, GainDbFsValue{-10.}}), Gain::kUnityGainDb);
EXPECT_FLOAT_EQ(tf.Evaluate<2>({VolumeValue{1.}, GainDbFsValue{Gain::kMinGainDb}}),
Gain::kMinGainDb);
}
TEST(NoOpLoudnessTransformTest, IsNoOp) {
auto tf = NoOpLoudnessTransform();
EXPECT_FLOAT_EQ(
tf.Evaluate<2>({GainDbFsValue{Gain::kUnityGainDb}, GainDbFsValue{Gain::kUnityGainDb}}),
Gain::kUnityGainDb);
EXPECT_FLOAT_EQ(tf.Evaluate<2>({VolumeValue{1.}, GainDbFsValue{-10.}}), Gain::kUnityGainDb);
EXPECT_FLOAT_EQ(tf.Evaluate<2>({VolumeValue{1.}, GainDbFsValue{Gain::kMinGainDb}}),
Gain::kUnityGainDb);
EXPECT_FLOAT_EQ(tf.Evaluate<2>({VolumeValue{Gain::kMinGainDb}, GainDbFsValue{Gain::kMinGainDb}}),
Gain::kUnityGainDb);
}
} // namespace
} // namespace media::audio