# Copyright 2020 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/components.gni")

group("fake_camera") {
  public_deps = [ ":lib" ]
}

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

source_set("lib") {
  visibility = [ ":*" ]
  sources = [
    "fake_camera_impl.cc",
    "fake_camera_impl.h",
  ]
  public = [ "fake_camera.h" ]
  deps = [
    "//sdk/lib/syslog/cpp",
    "//src/camera/lib/fake_stream:impl_header",
    "//zircon/system/ulib/async:async-cpp",
    "//zircon/system/ulib/async-loop:async-loop-cpp",
    "//zircon/system/ulib/async-loop:async-loop-default",
    "//zircon/system/ulib/fzl",
  ]
  public_deps = [
    "//sdk/fidl/fuchsia.camera3:fuchsia.camera3_hlcpp",
    "//sdk/lib/fidl/cpp",
    "//sdk/lib/fit-promise",
    "//src/camera/lib/fake_stream",
  ]
}

executable("fake_camera_unittest_bin") {
  testonly = true
  sources = [ "fake_camera_unittest.cc" ]
  deps = [
    ":lib",
    "//sdk/fidl/fuchsia.sysmem:fuchsia.sysmem_hlcpp",
    "//sdk/lib/sys/cpp",
    "//src/lib/fsl",
    "//src/lib/fxl/test:gtest_main",
    "//src/lib/testing/loop_fixture",
  ]
}

fuchsia_unittest_package("fake_camera_unittest") {
  manifest = "meta/fake_camera_unittest.cml"
  deps = [ ":fake_camera_unittest_bin" ]
  test_type = "system"
}
