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

test("core-display") {
  output_name = "core-display-test"
  configs += [ "//build/unification/config:zircon-migrated" ]
  sources = [ "core-display-test.cc" ]
  deps = [
    "//sdk/banjo/fuchsia.hardware.display.controller",
    "//sdk/fidl/fuchsia.hardware.display:fuchsia.hardware.display_llcpp",
    "//sdk/fidl/fuchsia.sysinfo:fuchsia.sysinfo_llcpp",
    "//sdk/fidl/fuchsia.sysmem:fuchsia.sysmem_llcpp",
    "//sdk/lib/fdio",
    "//zircon/public/lib/fbl",
    "//zircon/public/lib/fidl",
    "//zircon/public/lib/zx",
    "//zircon/public/lib/zxtest",
    "//zircon/system/ulib/fdio-caller",
    "//zircon/system/ulib/fidl-async-2",
    "//zircon/system/ulib/fzl",
  ]

  # TODO(fxbug.dev/69585): This target uses raw zx::channel with LLCPP which is deprecated.
  # Please migrate to typed channel APIs (fidl::ClientEnd<T>, fidl::ServerEnd<T>).
  # See linked bug for details.
  configs += [ "//build/cpp:fidl-llcpp-deprecated-raw-channels" ]
}

bootfs_test("core-display-bootfs-test") {
  name = "core-display-test"
  deps = [ ":core-display" ]
}
