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

test("framebuffer-test") {
  output_name = "framebuffer-test"
  if (is_fuchsia) {
    configs += [ "//build/unification/config:zircon-migrated" ]
  }
  deps = [
    "//sdk/banjo/fuchsia.hardware.display.controller",
    "//sdk/fidl/fuchsia.hardware.display:fuchsia.hardware.display_llcpp",
    "//sdk/fidl/fuchsia.sysmem:fuchsia.sysmem_llcpp",
    "//sdk/lib/fdio",
    "//src/lib/framebuffer",
    "//src/lib/fsl",
    "//zircon/public/lib/zxtest",
    "//zircon/system/ulib/async-loop:async-loop-cpp",
    "//zircon/system/ulib/async-loop:async-loop-default",
    "//zircon/system/ulib/fidl-async:fidl-async-cpp",
    "//zircon/system/ulib/image-format:image-format-llcpp",
  ]
  sources = [ "framebuffer-test.cc" ]

  # 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" ]
}

group("test") {
  testonly = true
  deps = [ ":framebuffer-test" ]
}

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

fuchsia_component("framebuffer-test-component") {
  component_name = "framebuffer-test"
  testonly = true
  manifest = "meta/framebuffer-test.cmx"
  deps = [ ":framebuffer-test" ]
}

fuchsia_test_package("framebuffer-test-package") {
  package_name = "framebuffer-test"
  test_components = [ ":framebuffer-test-component" ]
}
