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

test("display-coordinator-unittests") {
  configs += [ "//build/config:all_source" ]
  sources = [
    "display-info-unittest.cc",
    "display-test.cc",
    "fence-test.cc",
    "image-test.cc",
    "inspect-test.cc",
    "integration-test.cc",
    "layer-test.cc",
    "post-task-test.cc",
  ]
  include_dirs = [ ".." ]
  deps = [
    ":base",
    "//sdk/fidl/fuchsia.hardware.display:fuchsia.hardware.display_cpp_testing",
    "//sdk/fidl/fuchsia.hardware.display.types:fuchsia.hardware.display.types_cpp_testing",
    "//sdk/fidl/fuchsia.sysmem:fuchsia.sysmem_cpp",
    "//sdk/fidl/fuchsia.sysmem2:fuchsia.sysmem2_cpp",
    "//sdk/lib/driver/testing/cpp",
    "//src/graphics/display/lib/edid-values",
    "//src/lib/fxl/test:gtest_main",
    "//src/lib/testing/predicates",
    "//third_party/googletest:gtest",
    "//zircon/system/ulib/async-testing",
    "//zircon/system/ulib/fbl",
    "//zircon/system/ulib/sync:sync-cpp",
    "//zircon/system/ulib/zircon-internal",
  ]
}

static_library("base") {
  configs += [ "//build/config:all_source" ]
  testonly = true
  sources = [
    "base.cc",
    "base.h",
    "fidl_client.cc",
    "fidl_client.h",
  ]
  deps = [
    "//src/devices/testing/mock-ddk",
    "//src/lib/fsl",
  ]
  public_deps = [
    "//sdk/fidl/fuchsia.hardware.display:fuchsia.hardware.display_cpp",
    "//sdk/fidl/fuchsia.hardware.display.types:fuchsia.hardware.display.types_cpp",
    "//sdk/fidl/fuchsia.sysmem:fuchsia.sysmem_cpp",
    "//sdk/fidl/fuchsia.sysmem2:fuchsia.sysmem2_cpp",
    "//src/devices/sysmem/drivers/sysmem:sysmem_common_srcs",
    "//src/graphics/display/drivers/coordinator:shared",
    "//src/graphics/display/drivers/fake:fake-display-stack",
    "//src/graphics/display/lib/driver-framework-migration-utils/logging:logging-dfv1",
    "//src/lib/fxl/test:gtest_main",
    "//src/lib/testing/predicates",
    "//third_party/googletest:gtest",
    "//zircon/system/ulib/async-testing",
    "//zircon/system/ulib/zircon-internal",
  ]
}

group("tests") {
  testonly = true
  deps = [ ":display-coordinator-unittests-package" ]
}

fuchsia_unittest_package("display-coordinator-unittests-package") {
  package_name = "display-coordinator-unittests"
  deps = [ ":display-coordinator-unittests" ]
  test_specs = {
    log_settings = {
      max_severity = "ERROR"
    }
  }
}
