# Copyright 2019 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.

import("//build/test/test_package.gni")

source_set("effects_loader") {
  sources = [
    "effect.cc",
    "effect.h",
    "effects_loader.cc",
    "effects_loader.h",
    "effects_module.cc",
    "effects_module.h",
    "effects_processor.cc",
    "effects_processor.h",
  ]

  public_deps = [
    "//sdk/fidl/fuchsia.media",
    "//sdk/lib/media/audio/effects",
    "//zircon/public/lib/fbl",
  ]

  deps = [
    "//sdk/lib/media/cpp:no_converters",
    "//src/lib/fxl",
  ]
}

executable("test") {
  testonly = true
  output_name = "audio_effects_loader_unittests"

  sources = [
    "effect_unittest.cc",
    "effects_loader_test_base.cc",
    "effects_loader_test_base.h",
    "effects_loader_unittest.cc",
    "effects_module_unittest.cc",
    "effects_processor_unittest.cc",
  ]

  deps = [
    ":effects_loader",
    "//src/lib/fxl/test:gtest_main",
  ]
}

unittest_package("audio_effects_loader_unittests") {
  deps = [
    ":test",
    "//src/media/audio/effects/test_effects",
  ]

  loadable_modules = [
    {
      name = "test_effects.so"
    },
  ]

  tests = [
    {
      name = "audio_effects_loader_unittests"
      environments = basic_envs
    },
  ]
}

group("tests") {
  testonly = true
  deps = [
    ":audio_effects_loader_unittests",
  ]
}
