# 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/package.gni")
import("//build/test.gni")
import("//build/test/test_package.gni")
import("//build/testing/environments.gni")

group("camera") {
  testonly = true
  deps = [
    ":tools",
    "bin",
    "calibration",
    "drivers",
    "lib",
  ]
}

group("service") {
  public_deps = [
    "//src/camera/bin/device",
    "//src/camera/bin/device_watcher",
  ]
}

# Add targets here that are useful for general development.
group("tools") {
}

group("tests") {
  testonly = true

  # Build dependencies should be captured in the "camera_tests" target below. Cross-package
  # dependencies must be included in this target due to transitively included packages being
  # ignored. See fxb/44251 for details.
  deps = [
    ":camera_tests",
    "bin",
    "examples/camera_display",
  ]
}

test_package("camera_tests") {
  deps = [
    "//src/camera/bin/device/test",
    "//src/camera/bin/device_watcher/test",
    "//src/camera/calibration/algorithms/test",
    "//src/camera/calibration/factory/test",
    "//src/camera/drivers/controller/configs/sherlock/test",
    "//src/camera/drivers/controller/test",
    "//src/camera/drivers/hw_accel/gdc/test",
    "//src/camera/drivers/hw_accel/ge2d/test",
    "//src/camera/drivers/test_utils/test:button_checker_test",
    "//src/camera/drivers/test_utils/test:test_utils_test",
    "//src/camera/drivers/virtual_camera/test",
    "//src/camera/examples/camera_display/stream_provider/test",
    "//src/camera/lib/fake_camera/test",
    "//src/camera/lib/fake_legacy_stream/test",
    "//src/camera/lib/fake_stream/test",
    "//src/camera/lib/hanging_get_helper/test",
    "//src/camera/lib/image_writer/test",
    "//src/camera/lib/stream_utils/test",
    "//src/camera/lib/virtual_camera/test",
  ]

  tests = [
    {
      name = "gdc-test"
      manifest = "drivers/hw_accel/gdc/test/meta/gdc-test.cmx"
      environments = basic_envs
    },
    {
      name = "ge2d-test"
      manifest = "drivers/hw_accel/ge2d/test/meta/ge2d-test.cmx"
      environments = basic_envs
    },
    {
      name = "controller-test"
      manifest = "drivers/controller/test/meta/controller-test.cmx"
      environments = basic_envs
    },
    {
      name = "configs_test"
      manifest =
          "drivers/controller/configs/sherlock/test/meta/configs_test.cmx"
      environments = basic_envs
    },
    {
      name = "button_checker_test"
      manifest = "drivers/test_utils/test/meta/button_checker_test.cmx"
      environments = [
        sherlock_env,
        astro_env,
      ]
    },
    {
      name = "test_utils_test"
      manifest = "drivers/test_utils/test/meta/test_utils_test.cmx"
      environments = basic_envs
    },
    {
      name = "virtual_camera_driver_test"
      manifest =
          "drivers/virtual_camera/test/meta/virtual_camera_driver_test.cmx"
      environments = basic_envs
    },
    {
      name = "image_writer_test"
      manifest = "lib/image_writer/test/meta/image_writer_test.cmx"
      environments = basic_envs
    },
    {
      name = "algorithms_test"
      manifest = "calibration/algorithms/test/meta/algorithms_test.cmx"
      environments = basic_envs
    },
    {
      name = "stream_utils_test"
      manifest = "lib/stream_utils/test/meta/stream_utils_test.cmx"
      environments = basic_envs
    },
    {
      name = "stream_provider_test"
      manifest = "examples/camera_display/stream_provider/test/test.cmx"
      environments = [ sherlock_env ]
    },
    {
      name = "fake_legacy_stream_test"
      manifest = "lib/fake_legacy_stream/test/test.cmx"
      environments = basic_envs
    },
    {
      name = "factory_test"
      manifest = "//src/camera/calibration/factory/test/meta/factory_test.cmx"
      environments = [ sherlock_env ]
    },
    {
      name = "device_watcher_test"
      manifest = "//src/camera/bin/device_watcher/test/test.cmx"
      environments = [ sherlock_env ]
    },
    {
      name = "device_test"
      manifest = "//src/camera/bin/device/test/test.cmx"
      environments = basic_envs
    },
    {
      name = "fake_stream_test"
      manifest = "//src/camera/lib/fake_stream/test/test.cmx"
      environments = basic_envs
    },
    {
      name = "fake_camera_test"
      manifest = "//src/camera/lib/fake_camera/test/test.cmx"
      environments = basic_envs
    },
    {
      name = "virtual_camera_test"
      manifest = "//src/camera/lib/virtual_camera/test/test.cmx"
      environments = basic_envs
    },
    {
      name = "hanging_get_helper_test"
      manifest = "//src/camera/lib/hanging_get_helper/test/test.cmx"
      environments = basic_envs
    },

    # Put additional camera tests here
  ]
}
