# 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/fidl/fidl.gni")
import("//build/package.gni")

executable("bin") {
  output_name = "display_capture_test"
  testonly = true
  sources = [
    "alpha_tests.cc",
    "basic_tests.cc",
    "context.cc",
    "context.h",
    "image.cc",
    "image.h",
    "layer.cc",
    "layer.h",
    "main.cc",
    "position_tests.cc",
    "runner.cc",
    "runner.h",
    "test.h",
  ]

  deps = [
    "//garnet/lib/media/camera/simple_camera_lib",
    "//garnet/public/lib/fsl",
    "//zircon/public/fidl/fuchsia-hardware-camera:fuchsia-hardware-camera_c",
    "//zircon/public/fidl/fuchsia-hardware-display",
    "//zircon/public/fidl/fuchsia-hardware-display:fuchsia-hardware-display_c",
    "//zircon/public/lib/async-loop-cpp",
    "//zircon/public/lib/fzl",
  ]
}

package("display_capture_test") {
  testonly = true

  deps = [
    ":bin",
  ]

  binary = "display_capture_test"

  meta = [
    {
      path = rebase_path("meta/display_capture_test.cmx")
      dest = "display_capture_test.cmx"
    },
  ]
}
