# Copyright 2018 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("camera_client_test_src") {
  sources = [
    "camera_client_test.cpp",
    "camera_client_test.h",
  ]
  deps = [
    "//zircon/public/fidl/fuchsia-hardware-camera:fuchsia-hardware-camera_c",
    "//zircon/public/lib/fzl",
  ]

  public_deps = [
    "//sdk/fidl/fuchsia.camera:fuchsia.camera",
    "//sdk/lib/fidl/cpp",
    "//sdk/lib/sys/cpp",
    "//src/lib/fxl",
  ]
}

executable("bin") {
  testonly = true
  output_name = "camera_client_test"

  sources = [
    "main.cpp",
  ]

  deps = [
    ":camera_client_test_src",
    "//zircon/public/lib/async-default",
    "//zircon/public/lib/async-loop-cpp",
  ]
}

test_package("camera_client_test") {
  deps = [
    ":bin",
  ]

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