# 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_stream") {
  public_deps = [ ":lib" ]
}

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

source_set("impl_header") {
  visibility = [
    ":*",
    "//src/camera/lib/fake_camera/*",
    "//src/camera/lib/fake_controller/*",
  ]
  sources = [ "fake_stream.h" ]
  public = [ "fake_stream_impl.h" ]
}

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

executable("fake_stream_unittest_bin") {
  testonly = true
  sources = [ "fake_stream_unittest.cc" ]
  deps = [
    ":lib",
    "//src/lib/fxl/test:gtest_main",
    "//src/lib/testing/loop_fixture",
  ]
}

fuchsia_unittest_package("fake_stream_unittest") {
  deps = [ ":fake_stream_unittest_bin" ]
}
