1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
|
/*
Copyright 2018 Google Inc. All Rights Reserved.
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS-IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/
#include "graph/source_parameters_manager.h"
#include "third_party/googletest/googletest/include/gtest/gtest.h"
namespace vraudio {
namespace {
// Tests that the manager registers/unregisters source parameters as expected
// for given arbitrary source ids.
TEST(SourceParametersManagerTest, RegisterUnregisterTest) {
const SourceId kSourceIds[] = {0, 1, 5, 10};
// Initialize a new |SourceParametersManager|.
SourceParametersManager source_parameters_manager;
for (const auto source_id : kSourceIds) {
// Verify that no parameters are registered for given |source_id|.
EXPECT_TRUE(source_parameters_manager.GetParameters(source_id) == nullptr);
// Verify that the parameters are initialized after |Register|.
source_parameters_manager.Register(source_id);
EXPECT_FALSE(source_parameters_manager.GetParameters(source_id) == nullptr);
// Verify that the parameters are destroyed after |Unregister|.
source_parameters_manager.Unregister(source_id);
EXPECT_TRUE(source_parameters_manager.GetParameters(source_id) == nullptr);
}
}
// Tests that the manager correctly applies and returns parameter values of a
// source for a given arbitrary modifier.
TEST(SourceParametersManagerTest, ParametersAccessTest) {
const SourceId kSourceId = 1;
const float kSourceGain = 0.25f;
// Initialize a new |SourceParametersManager| and register the source.
SourceParametersManager source_parameters_manager;
source_parameters_manager.Register(kSourceId);
// Modify the gain parameter.
auto mutable_parameters =
source_parameters_manager.GetMutableParameters(kSourceId);
EXPECT_TRUE(mutable_parameters != nullptr);
mutable_parameters->gain = kSourceGain;
// Access the parameters to verify the gain value was applied correctly.
const auto parameters = source_parameters_manager.GetParameters(kSourceId);
EXPECT_TRUE(parameters != nullptr);
EXPECT_EQ(kSourceGain, parameters->gain);
}
// Tests that the manager correctly executes a given arbitrary call to process
// all parameters for all the sources contained within.
TEST(SourceParametersManagerTest, ProcessAllParametersTest) {
const SourceId kSourceIds[] = {0, 1, 2, 3, 4, 5};
const float kDistanceAttenuation = 0.75f;
const auto kProcess = [kDistanceAttenuation](SourceParameters* parameters) {
parameters->distance_attenuation = kDistanceAttenuation;
};
// Initialize a new |SourceParametersManager| and register all the sources.
SourceParametersManager source_parameters_manager;
for (const auto source_id : kSourceIds) {
source_parameters_manager.Register(source_id);
}
// Process all parameters to apply the distance attenuation.
source_parameters_manager.ProcessAllParameters(kProcess);
// Verify that the distance attenuation value was applied correctly to all the
// sources.
for (const auto source_id : kSourceIds) {
const auto parameters = source_parameters_manager.GetParameters(source_id);
EXPECT_TRUE(parameters != nullptr);
EXPECT_EQ(kDistanceAttenuation, parameters->distance_attenuation);
}
}
} // namespace
} // namespace vraudio
|