load("@rules_cc//cc:cc_library.bzl", "cc_library")
load("@rules_cc//cc:cc_test.bzl", "cc_test")

package(default_visibility = ["//iamf/cli/tests:__subpackages__"])

# keep-sorted start block=yes prefix_order=cc_library,cc_test newline_separated=yes
cc_library(
    name = "cli_test_utils",
    testonly = True,
    srcs = ["cli_test_utils.cc"],
    hdrs = ["cli_test_utils.h"],
    visibility = [
        "//iamf:__subpackages__",
    ],
    deps = [
        "@googletest//:gtest",
        "@abseil-cpp//absl/container:flat_hash_map",
        "@abseil-cpp//absl/log:absl_log",
        "@abseil-cpp//absl/status",
        "@abseil-cpp//absl/status:status_matchers",
        "@abseil-cpp//absl/status:statusor",
        "@abseil-cpp//absl/strings",
        "@abseil-cpp//absl/types:span",
        "//iamf/cli:audio_element_with_data",
        "//iamf/cli:audio_frame_with_data",
        "//iamf/cli:channel_label",
        "//iamf/cli:demixing_module",
        "//iamf/cli:descriptor_obu_parser",
        "//iamf/cli:loudness_calculator_base",
        "//iamf/cli:loudness_calculator_factory_base",
        "//iamf/cli:obu_processor",
        "//iamf/cli:obu_sequencer_base",
        "//iamf/cli:obu_with_data_generator",
        "//iamf/cli:parameter_block_with_data",
        "//iamf/cli:sample_processor_base",
        "//iamf/cli:wav_reader",
        "//iamf/cli/proto:codec_config_cc_proto",
        "//iamf/cli/proto:mix_presentation_cc_proto",
        "//iamf/cli/proto:user_metadata_cc_proto",
        "//iamf/cli/proto_conversion/proto_to_obu:audio_element_generator",
        "//iamf/cli/proto_conversion/proto_to_obu:codec_config_generator",
        "//iamf/cli/proto_conversion/proto_to_obu:mix_presentation_generator",
        "//iamf/cli/renderer:audio_element_renderer_base",
        "//iamf/cli/user_metadata_builder:audio_element_metadata_builder",
        "//iamf/cli/user_metadata_builder:iamf_input_layout",
        "//iamf/common:leb_generator",
        "//iamf/common:q_format_or_floating_point",
        "//iamf/common:read_bit_buffer",
        "//iamf/common:write_bit_buffer",
        "//iamf/common/utils:macros",
        "//iamf/common/utils:numeric_utils",
        "//iamf/obu:audio_element",
        "//iamf/obu:codec_config",
        "//iamf/obu:mix_presentation",
        "//iamf/obu:obu_base",
        "//iamf/obu:obu_header",
        "//iamf/obu:parameter_data",
        "//iamf/obu:rendering_config",
        "//iamf/obu:types",
        "//iamf/obu/decoder_config:aac_decoder_config",
        "//iamf/obu/decoder_config:flac_decoder_config",
        "//iamf/obu/decoder_config:lpcm_decoder_config",
        "//iamf/obu/decoder_config:opus_decoder_config",
        "//iamf/obu/param_definitions:demixing_param_definition",
        "//iamf/obu/param_definitions:mix_gain_param_definition",
        "//iamf/obu/param_definitions:param_definition_base",
        "//iamf/obu/param_definitions:recon_gain_param_definition",
        "@protobuf",
        # [internal] Placeholder for fine-grained protobuf dependency: "io",
    ],
)

cc_test(
    name = "audio_frame_decoder_benchmark",
    srcs = ["audio_frame_decoder_benchmark.cc"],
    deps = [
        ":cli_test_utils",
        "//iamf/cli:audio_element_with_data",
        "//iamf/cli:audio_frame_decoder",
        "//iamf/cli:audio_frame_with_data",
        "//iamf/cli/codec:aac_encoder",
        "//iamf/cli/codec:encoder_base",
        "//iamf/cli/codec:flac_encoder",
        "//iamf/cli/codec:lpcm_encoder",
        "//iamf/cli/codec:opus_encoder",
        "//iamf/obu:audio_frame",
        "//iamf/obu:codec_config",
        "//iamf/obu:substream_channel_count",
        "//iamf/obu:types",
        "//iamf/obu/decoder_config:aac_decoder_config",
        "@abseil-cpp//absl/container:flat_hash_map",
        "@abseil-cpp//absl/log:absl_check",
        "@abseil-cpp//absl/memory",
        "@abseil-cpp//absl/types:span",
        "@google_benchmark//:benchmark_main",
        "@libopus",
    ],
)

cc_test(
    name = "audio_frame_decoder_test",
    srcs = ["audio_frame_decoder_test.cc"],
    deps = [
        ":cli_test_utils",
        "//iamf/cli:audio_element_with_data",
        "//iamf/cli:audio_frame_decoder",
        "//iamf/cli:audio_frame_with_data",
        "//iamf/cli:channel_label",
        "//iamf/obu:audio_frame",
        "//iamf/obu:codec_config",
        "//iamf/obu:obu_header",
        "//iamf/obu:parameter_data",
        "//iamf/obu:types",
        "@abseil-cpp//absl/container:flat_hash_map",
        "@abseil-cpp//absl/status:status_matchers",
        "@googletest//:gtest_main",
    ],
)

cc_test(
    name = "channel_label_test",
    srcs = ["channel_label_test.cc"],
    deps = [
        "//iamf/cli:channel_label",
        "//iamf/obu:audio_element",
        "//iamf/obu:parameter_data",
        "@abseil-cpp//absl/status:status_matchers",
        "@googletest//:gtest_main",
    ],
)

cc_test(
    name = "cli_test_utils_test",
    srcs = ["cli_test_utils_test.cc"],
    deps = [
        ":cli_test_utils",
        "//iamf/common:write_bit_buffer",
        "//iamf/obu:obu_base",
        "//iamf/obu:obu_header",
        "//iamf/obu:types",
        "//iamf/obu/tests:obu_test_utils",
        "@abseil-cpp//absl/status",
        "@abseil-cpp//absl/status:status_matchers",
        "@abseil-cpp//absl/strings:string_view",
        "@abseil-cpp//absl/types:span",
        "@googletest//:gtest_main",
    ],
)

cc_test(
    name = "cli_util_test",
    size = "small",
    srcs = ["cli_util_test.cc"],
    deps = [
        ":cli_test_utils",
        "//iamf/cli:audio_element_with_data",
        "//iamf/cli:cli_util",
        "//iamf/cli:obu_with_data_generator",
        "//iamf/cli/proto:obu_header_cc_proto",
        "//iamf/cli/proto:parameter_data_cc_proto",
        "//iamf/common:q_format_or_floating_point",
        "//iamf/obu:audio_element",
        "//iamf/obu:codec_config",
        "//iamf/obu:mix_presentation",
        "//iamf/obu:obu_header",
        "//iamf/obu:rendering_config",
        "//iamf/obu:types",
        "//iamf/obu/param_definitions:extended_param_definition",
        "//iamf/obu/param_definitions:param_definition_base",
        "//iamf/obu/param_definitions:param_definition_variant",
        "//iamf/obu/param_definitions:polar_param_definition",
        "//iamf/obu/param_definitions:recon_gain_param_definition",
        "@abseil-cpp//absl/container:flat_hash_map",
        "@abseil-cpp//absl/container:flat_hash_set",
        "@abseil-cpp//absl/status",
        "@abseil-cpp//absl/status:status_matchers",
        "@abseil-cpp//absl/types:span",
        "@googletest//:gtest_main",
    ],
)

cc_test(
    name = "demixing_module_benchmark",
    srcs = ["demixing_module_benchmark.cc"],
    deps = [
        "//iamf/cli:audio_element_with_data",
        "//iamf/cli:audio_frame_with_data",
        "//iamf/cli:channel_label",
        "//iamf/cli:demixing_module",
        "//iamf/cli:substream_frames",
        "//iamf/cli/proto:user_metadata_cc_proto",
        "//iamf/obu:audio_frame",
        "//iamf/obu:obu_header",
        "//iamf/obu:parameter_data",
        "//iamf/obu:types",
        "@abseil-cpp//absl/container:flat_hash_map",
        "@abseil-cpp//absl/log:absl_check",
        "@abseil-cpp//absl/status:statusor",
        "@abseil-cpp//absl/types:span",
        "@google_benchmark//:benchmark_main",
    ],
)

cc_test(
    name = "demixing_module_test",
    srcs = ["demixing_module_test.cc"],
    deps = [
        ":cli_test_utils",
        "//iamf/cli:audio_element_with_data",
        "//iamf/cli:audio_frame_with_data",
        "//iamf/cli:channel_label",
        "//iamf/cli:demixing_module",
        "//iamf/cli:substream_frames",
        "//iamf/cli/proto:user_metadata_cc_proto",
        "//iamf/common/utils:numeric_utils",
        "//iamf/obu:audio_element",
        "//iamf/obu:audio_frame",
        "//iamf/obu:codec_config",
        "//iamf/obu:obu_header",
        "//iamf/obu:parameter_data",
        "//iamf/obu:types",
        "@abseil-cpp//absl/container:flat_hash_map",
        "@abseil-cpp//absl/container:flat_hash_set",
        "@abseil-cpp//absl/status",
        "@abseil-cpp//absl/status:status_matchers",
        "@abseil-cpp//absl/status:statusor",
        "@abseil-cpp//absl/types:span",
        "@googletest//:gtest_main",
    ],
)

cc_test(
    name = "descriptor_obu_parser_test",
    srcs = ["descriptor_obu_parser_test.cc"],
    deps = [
        ":cli_test_utils",
        "//iamf/cli:audio_element_with_data",
        "//iamf/cli:descriptor_obu_parser",
        "//iamf/common:read_bit_buffer",
        "//iamf/obu:arbitrary_obu",
        "//iamf/obu:audio_element",
        "//iamf/obu:audio_frame",
        "//iamf/obu:codec_config",
        "//iamf/obu:ia_sequence_header",
        "//iamf/obu:mix_presentation",
        "//iamf/obu:obu_base",
        "//iamf/obu:obu_header",
        "//iamf/obu:types",
        "@abseil-cpp//absl/container:flat_hash_map",
        "@abseil-cpp//absl/status:status_matchers",
        "@abseil-cpp//absl/types:span",
        "@googletest//:gtest_main",
    ],
)

cc_test(
    name = "encoder_main_lib_test",
    size = "small",
    srcs = ["encoder_main_lib_test.cc"],
    data = [
        "//iamf/cli/testdata:input_wav_files",
        "//iamf/cli/testdata:test_vectors",
    ],
    shard_count = 32,
    deps = [
        ":cli_test_utils",
        "//iamf/cli:encoder_main_lib",
        "//iamf/cli/proto:codec_config_cc_proto",
        "//iamf/cli/proto:encoder_control_metadata_cc_proto",
        "//iamf/cli/proto:ia_sequence_header_cc_proto",
        "//iamf/cli/proto:output_audio_format_cc_proto",
        "//iamf/cli/proto:test_vector_metadata_cc_proto",
        "//iamf/cli/proto:user_metadata_cc_proto",
        "@abseil-cpp//absl/log:absl_log",
        "@abseil-cpp//absl/status",
        "@abseil-cpp//absl/status:status_matchers",
        "@abseil-cpp//absl/strings:string_view",
        "@googletest//:gtest_main",
        "@protobuf",
    ],
)

cc_test(
    name = "global_timing_module_test",
    srcs = ["global_timing_module_test.cc"],
    deps = [
        ":cli_test_utils",
        "//iamf/cli:audio_element_with_data",
        "//iamf/cli:global_timing_module",
        "//iamf/cli/proto:parameter_block_cc_proto",
        "//iamf/cli/proto:user_metadata_cc_proto",
        "//iamf/obu:codec_config",
        "//iamf/obu:types",
        "//iamf/obu/param_definitions:mix_gain_param_definition",
        "//iamf/obu/param_definitions:param_definition_variant",
        "@abseil-cpp//absl/container:flat_hash_map",
        "@abseil-cpp//absl/status:status_matchers",
        "@abseil-cpp//absl/types:span",
        "@googletest//:gtest_main",
    ],
)

cc_test(
    name = "iamf_components_test",
    srcs = ["iamf_components_test.cc"],
    deps = [
        ":cli_test_utils",
        "//iamf/cli:iamf_components",
        "//iamf/cli/proto:test_vector_metadata_cc_proto",
        "//iamf/cli/proto:user_metadata_cc_proto",
        "@googletest//:gtest_main",
        "@protobuf",
    ],
)

cc_test(
    name = "iamf_encoder_test",
    srcs = ["iamf_encoder_test.cc"],
    deps = [
        ":cli_test_utils",
        "//iamf/cli:audio_frame_with_data",
        "//iamf/cli:descriptor_obu_parser",
        "//iamf/cli:iamf_components",
        "//iamf/cli:iamf_encoder",
        "//iamf/cli:loudness_calculator_factory_base",
        "//iamf/cli:obu_processor",
        "//iamf/cli:parameter_block_with_data",
        "//iamf/cli:renderer_factory",
        "//iamf/cli:rendering_mix_presentation_finalizer",
        "//iamf/cli:wav_writer",
        "//iamf/cli/proto:arbitrary_obu_cc_proto",
        "//iamf/cli/proto:audio_element_cc_proto",
        "//iamf/cli/proto:codec_config_cc_proto",
        "//iamf/cli/proto:encoder_control_metadata_cc_proto",
        "//iamf/cli/proto:ia_sequence_header_cc_proto",
        "//iamf/cli/proto:metadata_obu_cc_proto",
        "//iamf/cli/proto:mix_presentation_cc_proto",
        "//iamf/cli/proto:output_audio_format_cc_proto",
        "//iamf/cli/proto:test_vector_metadata_cc_proto",
        "//iamf/cli/proto:user_metadata_cc_proto",
        "//iamf/cli/user_metadata_builder:audio_element_metadata_builder",
        "//iamf/cli/user_metadata_builder:iamf_input_layout",
        "//iamf/common:read_bit_buffer",
        "//iamf/include/iamf_tools:iamf_tools_encoder_api_types",
        "//iamf/obu:arbitrary_obu",
        "//iamf/obu:audio_frame",
        "//iamf/obu:ia_sequence_header",
        "//iamf/obu:mix_presentation",
        "//iamf/obu:obu_base",
        "//iamf/obu:obu_header",
        "//iamf/obu:types",
        "@abseil-cpp//absl/container:flat_hash_map",
        "@abseil-cpp//absl/status",
        "@abseil-cpp//absl/status:status_matchers",
        "@abseil-cpp//absl/strings:string_view",
        "@abseil-cpp//absl/types:span",
        "@googletest//:gtest_main",
        "@protobuf",
    ],
)

cc_test(
    name = "obu_processor_test",
    srcs = ["obu_processor_test.cc"],
    deps = [
        ":cli_test_utils",
        "//iamf/cli:audio_element_with_data",
        "//iamf/cli:audio_frame_with_data",
        "//iamf/cli:descriptor_obu_parser",
        "//iamf/cli:obu_processor",
        "//iamf/cli:parameter_block_with_data",
        "//iamf/cli/user_metadata_builder:iamf_input_layout",
        "//iamf/common:read_bit_buffer",
        "//iamf/common/utils:numeric_utils",
        "//iamf/obu:audio_element",
        "//iamf/obu:audio_frame",
        "//iamf/obu:codec_config",
        "//iamf/obu:ia_sequence_header",
        "//iamf/obu:mix_presentation",
        "//iamf/obu:obu_base",
        "//iamf/obu:obu_header",
        "//iamf/obu:parameter_block",
        "//iamf/obu:parameter_data",
        "//iamf/obu:temporal_delimiter",
        "//iamf/obu:types",
        "//iamf/obu/param_definitions:mix_gain_param_definition",
        "//iamf/obu/param_definitions:param_definition_variant",
        "@abseil-cpp//absl/container:flat_hash_map",
        "@abseil-cpp//absl/container:flat_hash_set",
        "@abseil-cpp//absl/status:status_matchers",
        "@abseil-cpp//absl/status:statusor",
        "@abseil-cpp//absl/types:span",
        "@googletest//:gtest_main",
    ],
)

cc_test(
    name = "obu_processor_utils_test",
    srcs = ["obu_processor_utils_test.cc"],
    deps = [
        ":cli_test_utils",
        "//iamf/cli:descriptor_obu_parser",
        "//iamf/cli:obu_processor_utils",
        "//iamf/cli/user_metadata_builder:iamf_input_layout",
        "//iamf/obu:mix_presentation",
        "//iamf/obu:obu_header",
        "//iamf/obu:rendering_config",
        "//iamf/obu:types",
        "//iamf/obu/param_definitions:mix_gain_param_definition",
        "@abseil-cpp//absl/status:status_matchers",
        "@abseil-cpp//absl/status:statusor",
        "@googletest//:gtest_main",
    ],
)

cc_test(
    name = "obu_sequencer_base_test",
    srcs = ["obu_sequencer_base_test.cc"],
    deps = [
        ":cli_test_utils",
        "//iamf/cli:audio_element_with_data",
        "//iamf/cli:audio_frame_with_data",
        "//iamf/cli:parameter_block_with_data",
        "//iamf/cli:temporal_unit_view",
        "//iamf/common:leb_generator",
        "//iamf/common:write_bit_buffer",
        "//iamf/obu:arbitrary_obu",
        "//iamf/obu:audio_frame",
        "//iamf/obu:codec_config",
        "//iamf/obu:ia_sequence_header",
        "//iamf/obu:metadata_obu",
        "//iamf/obu:mix_presentation",
        "//iamf/obu:obu_base",
        "//iamf/obu:obu_header",
        "//iamf/obu:parameter_block",
        "//iamf/obu:parameter_data",
        "//iamf/obu:temporal_delimiter",
        "//iamf/obu:types",
        "//iamf/obu/param_definitions:demixing_param_definition",
        "@abseil-cpp//absl/container:flat_hash_map",
        "@abseil-cpp//absl/status",
        "@abseil-cpp//absl/status:status_matchers",
        "@abseil-cpp//absl/types:span",
        "@googletest//:gtest_main",
    ],
)

cc_test(
    name = "obu_sequencer_iamf_test",
    srcs = ["obu_sequencer_iamf_test.cc"],
    deps = [
        ":cli_test_utils",
        "//iamf/cli:audio_element_with_data",
        "//iamf/cli:audio_frame_with_data",
        "//iamf/cli:descriptor_obu_parser",
        "//iamf/cli:obu_sequencer_iamf",
        "//iamf/cli:parameter_block_with_data",
        "//iamf/cli:temporal_unit_view",
        "//iamf/common:leb_generator",
        "//iamf/common:read_bit_buffer",
        "//iamf/obu:arbitrary_obu",
        "//iamf/obu:audio_frame",
        "//iamf/obu:codec_config",
        "//iamf/obu:ia_sequence_header",
        "//iamf/obu:mix_presentation",
        "//iamf/obu:obu_header",
        "//iamf/obu:parameter_block",
        "//iamf/obu:parameter_data",
        "//iamf/obu:types",
        "//iamf/obu/param_definitions:demixing_param_definition",
        "@abseil-cpp//absl/container:flat_hash_map",
        "@abseil-cpp//absl/status:status_matchers",
        "@abseil-cpp//absl/strings:string_view",
        "@googletest//:gtest_main",
    ],
)

cc_test(
    name = "obu_sequencer_streaming_iamf_test",
    srcs = ["obu_sequencer_streaming_iamf_test.cc"],
    deps = [
        ":cli_test_utils",
        "//iamf/cli:audio_element_with_data",
        "//iamf/cli:audio_frame_with_data",
        "//iamf/cli:obu_sequencer_streaming_iamf",
        "//iamf/cli:parameter_block_with_data",
        "//iamf/cli:temporal_unit_view",
        "//iamf/common:leb_generator",
        "//iamf/obu:arbitrary_obu",
        "//iamf/obu:audio_frame",
        "//iamf/obu:codec_config",
        "//iamf/obu:ia_sequence_header",
        "//iamf/obu:obu_base",
        "//iamf/obu:obu_header",
        "//iamf/obu:types",
        "@abseil-cpp//absl/container:flat_hash_map",
        "@abseil-cpp//absl/status:status_matchers",
        "@abseil-cpp//absl/types:span",
        "@googletest//:gtest_main",
    ],
)

cc_test(
    name = "obu_with_data_generator_test",
    srcs = ["obu_with_data_generator_test.cc"],
    deps = [
        ":cli_test_utils",
        "//iamf/cli:audio_element_with_data",
        "//iamf/cli:audio_frame_with_data",
        "//iamf/cli:channel_label",
        "//iamf/cli:global_timing_module",
        "//iamf/cli:obu_with_data_generator",
        "//iamf/cli:parameter_block_with_data",
        "//iamf/cli:parameters_manager",
        "//iamf/obu:audio_element",
        "//iamf/obu:audio_frame",
        "//iamf/obu:codec_config",
        "//iamf/obu:obu_header",
        "//iamf/obu:parameter_block",
        "//iamf/obu:parameter_data",
        "//iamf/obu:types",
        "//iamf/obu/param_definitions:demixing_param_definition",
        "//iamf/obu/param_definitions:param_definition_base",
        "//iamf/obu/param_definitions:param_definition_variant",
        "//iamf/obu/param_definitions:recon_gain_param_definition",
        "@abseil-cpp//absl/container:flat_hash_map",
        "@abseil-cpp//absl/status:status_matchers",
        "@abseil-cpp//absl/status:statusor",
        "@googletest//:gtest_main",
    ],
)

cc_test(
    name = "parameter_block_partitioner_test",
    size = "small",
    srcs = ["parameter_block_partitioner_test.cc"],
    deps = [
        "//iamf/cli:parameter_block_partitioner",
        "//iamf/cli/proto:parameter_block_cc_proto",
        "//iamf/cli/proto:parameter_data_cc_proto",
        "//iamf/obu:types",
        "@abseil-cpp//absl/status",
        "@abseil-cpp//absl/status:status_matchers",
        "@googletest//:gtest_main",
        "@protobuf",
    ],
)

cc_test(
    name = "parameters_manager_test",
    size = "small",
    srcs = ["parameters_manager_test.cc"],
    deps = [
        ":cli_test_utils",
        "//iamf/cli:audio_element_with_data",
        "//iamf/cli:parameter_block_with_data",
        "//iamf/cli:parameters_manager",
        "//iamf/obu:audio_element",
        "//iamf/obu:codec_config",
        "//iamf/obu:obu_header",
        "//iamf/obu:parameter_block",
        "//iamf/obu:parameter_data",
        "//iamf/obu:types",
        "//iamf/obu/param_definitions:demixing_param_definition",
        "//iamf/obu/param_definitions:param_definition_base",
        "//iamf/obu/param_definitions:recon_gain_param_definition",
        "@abseil-cpp//absl/container:flat_hash_map",
        "@abseil-cpp//absl/status",
        "@abseil-cpp//absl/status:status_matchers",
        "@googletest//:gtest_main",
    ],
)

cc_test(
    name = "profile_filter_test",
    srcs = ["profile_filter_test.cc"],
    deps = [
        ":cli_test_utils",
        "//iamf/cli:audio_element_with_data",
        "//iamf/cli:profile_filter",
        "//iamf/cli/proto:ia_sequence_header_cc_proto",
        "//iamf/cli/proto:obu_header_cc_proto",
        "//iamf/cli/proto:user_metadata_cc_proto",
        "//iamf/common:q_format_or_floating_point",
        "//iamf/obu:audio_element",
        "//iamf/obu:codec_config",
        "//iamf/obu:ia_sequence_header",
        "//iamf/obu:mix_presentation",
        "//iamf/obu:obu_header",
        "//iamf/obu:rendering_config",
        "//iamf/obu:types",
        "//iamf/obu/param_definitions:mix_gain_param_definition",
        "@abseil-cpp//absl/container:flat_hash_map",
        "@abseil-cpp//absl/container:flat_hash_set",
        "@abseil-cpp//absl/status",
        "@abseil-cpp//absl/status:status_matchers",
        "@googletest//:gtest_main",
    ],
)

cc_test(
    name = "recon_gain_generator_test",
    srcs = ["recon_gain_generator_test.cc"],
    deps = [
        ":cli_test_utils",
        "//iamf/cli:channel_label",
        "//iamf/cli:demixing_module",
        "//iamf/cli:recon_gain_generator",
        "//iamf/cli/proto:user_metadata_cc_proto",
        "//iamf/obu:types",
        "@abseil-cpp//absl/status:status_matchers",
        "@abseil-cpp//absl/types:span",
        "@googletest//:gtest_main",
    ],
)

cc_test(
    name = "renderer_factory_test",
    srcs = ["renderer_factory_test.cc"],
    deps = [
        "//iamf/cli:channel_label",
        "//iamf/cli:renderer_factory",
        "//iamf/cli/proto:obu_header_cc_proto",
        "//iamf/cli/proto:parameter_data_cc_proto",
        "//iamf/cli/proto:temporal_delimiter_cc_proto",
        "//iamf/cli/proto:user_metadata_cc_proto",
        "//iamf/obu:audio_element",
        "//iamf/obu:mix_presentation",
        "//iamf/obu:rendering_config",
        "@googletest//:gtest_main",
    ],
)

cc_test(
    name = "rendering_mix_presentation_finalizer_benchmark",
    srcs = ["rendering_mix_presentation_finalizer_benchmark.cc"],
    deps = [
        ":cli_test_utils",
        "//iamf/cli:audio_element_with_data",
        "//iamf/cli:channel_label",
        "//iamf/cli:demixing_module",
        "//iamf/cli:parameter_block_with_data",
        "//iamf/cli:renderer_factory",
        "//iamf/cli:rendering_mix_presentation_finalizer",
        "//iamf/cli/proto:codec_config_cc_proto",
        "//iamf/cli/proto:user_metadata_cc_proto",
        "//iamf/cli/user_metadata_builder:iamf_input_layout",
        "//iamf/obu:codec_config",
        "//iamf/obu:mix_presentation",
        "//iamf/obu:types",
        "@abseil-cpp//absl/container:flat_hash_map",
        "@abseil-cpp//absl/log:absl_check",
        "@abseil-cpp//absl/types:span",
        "@google_benchmark//:benchmark_main",
    ],
)

cc_test(
    name = "rendering_mix_presentation_finalizer_test",
    srcs = ["rendering_mix_presentation_finalizer_test.cc"],
    deps = [
        ":cli_test_utils",
        "//iamf/cli:audio_element_with_data",
        "//iamf/cli:channel_label",
        "//iamf/cli:demixing_module",
        "//iamf/cli:loudness_calculator_base",
        "//iamf/cli:loudness_calculator_factory_base",
        "//iamf/cli:parameter_block_with_data",
        "//iamf/cli:renderer_factory",
        "//iamf/cli:rendering_mix_presentation_finalizer",
        "//iamf/cli:wav_reader",
        "//iamf/cli:wav_writer",
        "//iamf/cli/proto:codec_config_cc_proto",
        "//iamf/cli/proto:output_audio_format_cc_proto",
        "//iamf/cli/proto_conversion:output_audio_format_utils",
        "//iamf/cli/proto_conversion/proto_to_obu:codec_config_generator",
        "//iamf/cli/renderer:audio_element_renderer_base",
        "//iamf/cli/user_metadata_builder:codec_config_obu_metadata_builder",
        "//iamf/cli/user_metadata_builder:iamf_input_layout",
        "//iamf/obu:audio_element",
        "//iamf/obu:codec_config",
        "//iamf/obu:mix_presentation",
        "//iamf/obu:rendering_config",
        "//iamf/obu:types",
        "@abseil-cpp//absl/base:core_headers",
        "@abseil-cpp//absl/container:flat_hash_map",
        "@abseil-cpp//absl/status",
        "@abseil-cpp//absl/status:status_matchers",
        "@abseil-cpp//absl/strings",
        "@abseil-cpp//absl/types:span",
        "@googletest//:gtest_main",
        "@protobuf",
    ],
)

cc_test(
    name = "sample_processor_base_test",
    srcs = ["sample_processor_base_test.cc"],
    deps = [
        ":cli_test_utils",
        "//iamf/obu:types",
        "@abseil-cpp//absl/status",
        "@abseil-cpp//absl/status:status_matchers",
        "@abseil-cpp//absl/types:span",
        "@googletest//:gtest_main",
    ],
)

cc_test(
    name = "temporal_unit_view_test",
    srcs = ["temporal_unit_view_test.cc"],
    deps = [
        ":cli_test_utils",
        "//iamf/cli:audio_element_with_data",
        "//iamf/cli:audio_frame_with_data",
        "//iamf/cli:parameter_block_with_data",
        "//iamf/cli:temporal_unit_view",
        "//iamf/obu:arbitrary_obu",
        "//iamf/obu:audio_frame",
        "//iamf/obu:codec_config",
        "//iamf/obu:obu_header",
        "//iamf/obu:parameter_block",
        "//iamf/obu:parameter_data",
        "//iamf/obu:types",
        "//iamf/obu/param_definitions:mix_gain_param_definition",
        "@abseil-cpp//absl/container:flat_hash_map",
        "@abseil-cpp//absl/status:status_matchers",
        "@abseil-cpp//absl/types:span",
        "@googletest//:gtest_main",
    ],
)

cc_test(
    name = "textproto_templates_test",
    srcs = ["textproto_templates_test.cc"],
    data = [
        "//iamf/cli/testdata:input_wav_files",
        "//iamf/cli/textproto_templates:textprotos",
    ],
    deps = [
        ":cli_test_utils",
        "//iamf/cli:encoder_main_lib",
        "//iamf/cli/proto:audio_frame_cc_proto",
        "//iamf/cli/proto:test_vector_metadata_cc_proto",
        "//iamf/cli/proto:user_metadata_cc_proto",
        "@abseil-cpp//absl/log:absl_log",
        "@abseil-cpp//absl/status:status_matchers",
        "@abseil-cpp//absl/strings:string_view",
        "@googletest//:gtest_main",
    ],
)

cc_test(
    name = "wav_reader_test",
    srcs = ["wav_reader_test.cc"],
    data = [
        "//iamf/cli/testdata:input_wav_files",
    ],
    deps = [
        ":cli_test_utils",
        "//iamf/cli:wav_reader",
        "@abseil-cpp//absl/status:status_matchers",
        "@abseil-cpp//absl/strings:string_view",
        "@googletest//:gtest_main",
    ],
)

cc_test(
    name = "wav_sample_provider_test",
    srcs = ["wav_sample_provider_test.cc"],
    data = [
        "//iamf/cli/testdata:input_wav_files",
    ],
    deps = [
        ":cli_test_utils",
        "//iamf/cli:audio_element_with_data",
        "//iamf/cli:channel_label",
        "//iamf/cli:demixing_module",
        "//iamf/cli:wav_sample_provider",
        "//iamf/cli/proto:audio_element_cc_proto",
        "//iamf/cli/proto:audio_frame_cc_proto",
        "//iamf/cli/proto:user_metadata_cc_proto",
        "//iamf/cli/user_metadata_builder:iamf_input_layout",
        "//iamf/obu:codec_config",
        "//iamf/obu:types",
        "@abseil-cpp//absl/container:flat_hash_map",
        "@abseil-cpp//absl/status:status_matchers",
        "@abseil-cpp//absl/strings:string_view",
        "@googletest//:gtest_main",
        "@protobuf",
    ],
)

cc_test(
    name = "wav_writer_test",
    srcs = ["wav_writer_test.cc"],
    deps = [
        ":cli_test_utils",
        "//iamf/cli:wav_writer",
        "//iamf/obu:types",
        "@abseil-cpp//absl/status:status_matchers",
        "@abseil-cpp//absl/types:span",
        "@googletest//:gtest_main",
    ],
)

# keep-sorted end
