blob: f657b68d5f3e92b87b4cda1edfdcbc7e9ef58913 [file] [log] [blame]
// Copyright 2024 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.
#ifndef SRC_MEDIA_AUDIO_SERVICES_DEVICE_REGISTRY_SIGNAL_PROCESSING_UTILS_UNITTEST_H_
#define SRC_MEDIA_AUDIO_SERVICES_DEVICE_REGISTRY_SIGNAL_PROCESSING_UTILS_UNITTEST_H_
#include <fidl/fuchsia.hardware.audio.signalprocessing/cpp/common_types.h>
#include <fidl/fuchsia.hardware.audio.signalprocessing/cpp/natural_types.h>
#include <vector>
#include "src/media/audio/services/device_registry/basic_types.h"
namespace media_audio {
constexpr ElementId kElementId1 = 1;
constexpr ElementId kElementId2 = 2;
constexpr ElementId kElementId3 = 42;
constexpr ElementId kElementId4 = 0;
constexpr ElementId kOtherElementId = 68;
const fuchsia_hardware_audio_signalprocessing::ElementState kElementState1{{
.type_specific =
fuchsia_hardware_audio_signalprocessing::TypeSpecificElementState::WithEndpoint({{
.plug_state = fuchsia_hardware_audio_signalprocessing::PlugState{{
.plugged = true,
.plug_state_time = 0,
}},
}}),
}};
const fuchsia_hardware_audio_signalprocessing::ElementState kElementStateEmpty{};
const fuchsia_hardware_audio_signalprocessing::Element kElement1{{
.id = kElementId1,
.type = fuchsia_hardware_audio_signalprocessing::ElementType::kEndpoint,
.type_specific = fuchsia_hardware_audio_signalprocessing::TypeSpecificElement::WithEndpoint({{
.type = fuchsia_hardware_audio_signalprocessing::EndpointType::kDaiInterconnect,
.plug_detect_capabilities =
fuchsia_hardware_audio_signalprocessing::PlugDetectCapabilities::kCanAsyncNotify,
}}),
.can_disable = false,
.description = " ",
}};
const fuchsia_hardware_audio_signalprocessing::Element kElement2{{
.id = kElementId2,
.type = fuchsia_hardware_audio_signalprocessing::ElementType::kAutomaticGainControl,
// .type_specific is missing
// .can_disable is missing
// .description is missing
}};
const fuchsia_hardware_audio_signalprocessing::Element kElement3{{
.id = kElementId3,
.type = fuchsia_hardware_audio_signalprocessing::ElementType::kDynamics,
.type_specific = fuchsia_hardware_audio_signalprocessing::TypeSpecificElement::WithDynamics({{
.bands = {{
{{.id = 0}},
}},
.supported_controls =
fuchsia_hardware_audio_signalprocessing::DynamicsSupportedControls::kKneeWidth,
}}),
.can_disable = true,
.description = std::string("Test signalprocessing element description ") +
std::string(" At this point, we are nearing the end of the ") +
std::string(" maximal-length 256-char string. Note that this string ") +
std::string(" has an upper-case 'x' as the last character. 54321X"),
}};
const fuchsia_hardware_audio_signalprocessing::Element kElement4{{
.id = kElementId4,
.type = fuchsia_hardware_audio_signalprocessing::ElementType::kEndpoint,
.type_specific = fuchsia_hardware_audio_signalprocessing::TypeSpecificElement::WithEndpoint({{
.type = fuchsia_hardware_audio_signalprocessing::EndpointType::kRingBuffer,
.plug_detect_capabilities =
fuchsia_hardware_audio_signalprocessing::PlugDetectCapabilities::kHardwired,
}}),
// .can_disable is missing
// .description is missing
}};
const fuchsia_hardware_audio_signalprocessing::Element kElementNoId{{
.type = fuchsia_hardware_audio_signalprocessing::ElementType::kAutomaticGainControl,
}};
const fuchsia_hardware_audio_signalprocessing::Element kElementNoType{{
.id = kOtherElementId,
}};
const fuchsia_hardware_audio_signalprocessing::Element kElementNoRequiredTypeSpecific{{
.id = kOtherElementId,
.type = fuchsia_hardware_audio_signalprocessing::ElementType::kEndpoint,
}};
const fuchsia_hardware_audio_signalprocessing::Element kElementWrongTypeSpecific{{
.id = kOtherElementId,
.type = fuchsia_hardware_audio_signalprocessing::ElementType::kDynamics,
.type_specific = fuchsia_hardware_audio_signalprocessing::TypeSpecificElement::WithEndpoint({{
.type = fuchsia_hardware_audio_signalprocessing::EndpointType::kDaiInterconnect,
.plug_detect_capabilities =
fuchsia_hardware_audio_signalprocessing::PlugDetectCapabilities::kCanAsyncNotify,
}}),
}};
const fuchsia_hardware_audio_signalprocessing::Element kElementEmptyDescription{{
.id = kOtherElementId,
.type = fuchsia_hardware_audio_signalprocessing::ElementType::kAutomaticGainControl,
.description = "",
}};
const std::vector<fuchsia_hardware_audio_signalprocessing::Element> kElements{kElement1, kElement2,
kElement3, kElement4};
const std::vector<fuchsia_hardware_audio_signalprocessing::Element> kEmptyElements{};
const std::vector<fuchsia_hardware_audio_signalprocessing::Element> kElementsDuplicateId{kElement1,
kElement1};
const std::vector<fuchsia_hardware_audio_signalprocessing::Element> kElementsWithNoId{
kElement1, kElement2, kElement3, kElement4, kElementNoId};
const std::vector<fuchsia_hardware_audio_signalprocessing::Element> kElementsWithNoType{
kElement1, kElement2, kElement3, kElement4, kElementNoType};
const std::vector<fuchsia_hardware_audio_signalprocessing::Element>
kElementsWithNoRequiredTypeSpecific{kElement1, kElement2, kElement3, kElement4,
kElementNoRequiredTypeSpecific};
const std::vector<fuchsia_hardware_audio_signalprocessing::Element> kElementsWithWrongTypeSpecific{
kElement1, kElement2, kElement3, kElement4, kElementWrongTypeSpecific};
const std::vector<fuchsia_hardware_audio_signalprocessing::Element> kElementsWithEmptyDescription{
kElement1, kElement2, kElement3, kElement4, kElementEmptyDescription};
constexpr TopologyId kTopologyId1234 = 0;
constexpr TopologyId kTopologyId14 = 10;
constexpr TopologyId kTopologyId41 = 7;
constexpr TopologyId kOtherTopologyId = 42;
const fuchsia_hardware_audio_signalprocessing::EdgePair kEdge12{{kElementId1, kElementId2}};
const fuchsia_hardware_audio_signalprocessing::EdgePair kEdge23{{kElementId2, kElementId3}};
const fuchsia_hardware_audio_signalprocessing::EdgePair kEdge34{{kElementId3, kElementId4}};
const fuchsia_hardware_audio_signalprocessing::EdgePair kEdge14{{kElementId1, kElementId4}};
const fuchsia_hardware_audio_signalprocessing::EdgePair kEdge41{{kElementId4, kElementId1}};
const fuchsia_hardware_audio_signalprocessing::EdgePair kEdgeToSelf{{kElementId4, kElementId4}};
const fuchsia_hardware_audio_signalprocessing::EdgePair kEdgeUnknownId{
{kElementId4, kOtherElementId}};
const fuchsia_hardware_audio_signalprocessing::Topology kTopology1234{{
.id = kTopologyId1234,
.processing_elements_edge_pairs = {{kEdge12, kEdge23, kEdge34}},
}};
const fuchsia_hardware_audio_signalprocessing::Topology kTopology14{{
.id = kTopologyId14,
.processing_elements_edge_pairs = {{kEdge14}},
}};
const fuchsia_hardware_audio_signalprocessing::Topology kTopology41{{
.id = kTopologyId41,
.processing_elements_edge_pairs = {{kEdge41}},
}};
const fuchsia_hardware_audio_signalprocessing::Topology kTopologyMissingId{{
.processing_elements_edge_pairs = {{kEdge14}},
}};
const fuchsia_hardware_audio_signalprocessing::Topology kTopologyMissingEdgePairs{{
.id = kOtherTopologyId,
}};
const fuchsia_hardware_audio_signalprocessing::Topology kTopologyEmptyEdgePairs{{
.id = kOtherTopologyId,
.processing_elements_edge_pairs = {{}},
}};
const fuchsia_hardware_audio_signalprocessing::Topology kTopologyUnknownElementId{{
.id = kOtherTopologyId,
.processing_elements_edge_pairs = {{kEdge12, kEdge23, kEdge34, kEdgeUnknownId}},
}};
const fuchsia_hardware_audio_signalprocessing::Topology kTopologyEdgePairLoop{{
.id = kOtherTopologyId,
.processing_elements_edge_pairs = {{kEdge12, kEdge23, kEdge34, kEdgeToSelf}},
}};
const fuchsia_hardware_audio_signalprocessing::Topology kTopologyTerminalNotEndpoint{{
.id = kOtherTopologyId,
.processing_elements_edge_pairs = {{kEdge41, kEdge12, kEdge23}},
}};
const std::vector<fuchsia_hardware_audio_signalprocessing::Topology> kTopologies{
kTopology1234, kTopology14, kTopology41};
const std::vector<fuchsia_hardware_audio_signalprocessing::Topology> kEmptyTopologies{};
const std::vector<fuchsia_hardware_audio_signalprocessing::Topology> kTopologiesWithDuplicateId{
kTopology1234, kTopology1234};
const std::vector<fuchsia_hardware_audio_signalprocessing::Topology> kTopologiesWithoutAllElements{
kTopology14};
const std::vector<fuchsia_hardware_audio_signalprocessing::Topology> kTopologiesWithMissingId{
kTopology1234, kTopologyMissingId};
const std::vector<fuchsia_hardware_audio_signalprocessing::Topology>
kTopologiesWithMissingEdgePairs{kTopology1234, kTopologyMissingEdgePairs};
const std::vector<fuchsia_hardware_audio_signalprocessing::Topology> kTopologiesWithEmptyEdgePairs{
kTopology1234, kTopologyEmptyEdgePairs};
const std::vector<fuchsia_hardware_audio_signalprocessing::Topology>
kTopologiesWithUnknownElementId{kTopology1234, kTopologyUnknownElementId};
const std::vector<fuchsia_hardware_audio_signalprocessing::Topology> kTopologiesWithLoop{
kTopology1234, kTopologyEdgePairLoop};
const std::vector<fuchsia_hardware_audio_signalprocessing::Topology>
kTopologiesWithTerminalNotEndpoint{kTopology1234, kTopologyTerminalNotEndpoint};
const std::unordered_map<ElementId, ElementRecord> kEmptyElementMap{};
} // namespace media_audio
#endif // SRC_MEDIA_AUDIO_SERVICES_DEVICE_REGISTRY_SIGNAL_PROCESSING_UTILS_UNITTEST_H_