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

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

source_set("fake-lib") {
  configs += [ "//build/config:all_source" ]
  sources = [
    "fake-display.cc",
    "fake-display.h",
    "image-info.cc",
    "image-info.h",
  ]
  public_deps = [
    "//sdk/banjo/fuchsia.hardware.display.controller:fuchsia.hardware.display.controller_banjo_cpp",
    "//sdk/fidl/fuchsia.hardware.platform.device:fuchsia.hardware.platform.device_cpp",
    "//sdk/fidl/fuchsia.hardware.sysmem:fuchsia.hardware.sysmem_cpp",
    "//sdk/fidl/fuchsia.sysmem:fuchsia.sysmem_bindlib_cpp",
    "//sdk/fidl/fuchsia.sysmem:fuchsia.sysmem_cpp",
    "//sdk/fidl/fuchsia.sysmem2:fuchsia.sysmem2_cpp",
    "//src/devices/bus/lib/device-protocol-pdev",
    "//src/graphics/display/lib/api-types-cpp",
    "//src/lib/ddk",
    "//src/lib/ddktl",
    "//src/lib/fsl",
    "//zircon/system/ulib/fbl",
    "//zircon/system/ulib/fzl",
    "//zircon/system/ulib/image-format",
    "//zircon/system/ulib/inspect",
    "//zircon/system/ulib/zircon-internal",
    "//zircon/system/ulib/zx",
  ]
  deps = [
    "//src/graphics/display/drivers/coordinator:preferred-scanout-image-type",
  ]
}

static_library("sysmem-proxy-device") {
  testonly = true

  sources = [
    "sysmem-proxy-device.cc",
    "sysmem-proxy-device.h",
  ]

  public_deps = [
    "//sdk/fidl/fuchsia.sysmem:fuchsia.sysmem_cpp",
    "//src/devices/sysmem/drivers/sysmem:sysmem_common_srcs",
    "//zircon/system/ulib/async-loop:async-loop-cpp",
  ]

  deps = [
    "//sdk/lib/fdio",
    "//zircon/system/ulib/sysmem-version",
  ]
}

static_library("fake-display-stack") {
  testonly = true

  configs += [ "//build/config:all_source" ]

  sources = [
    "fake-display-stack.cc",
    "fake-display-stack.h",
    "sysmem-device-wrapper.h",
  ]
  public_deps = [
    ":fake-lib",
    "//sdk/fidl/fuchsia.hardware.display:fuchsia.hardware.display_cpp",
    "//sdk/fidl/fuchsia.hardware.sysmem:fuchsia.hardware.sysmem_cpp",
    "//sdk/fidl/fuchsia.sysmem2:fuchsia.sysmem2_cpp",
    "//src/devices/bus/testing/fake-pdev",
    "//src/devices/sysmem/drivers/sysmem:sysmem_common_srcs",
    "//src/devices/testing/mock-ddk",
    "//src/graphics/display/drivers/coordinator:shared",
    "//src/lib/ddktl",
    "//zircon/system/ulib/sync:sync-cpp",
  ]
}

test("fake-display-unittests-bin") {
  sources = [ "fake-display-test.cc" ]
  configs += [ "//build/config:all_source" ]

  deps = [
    ":fake-display-stack",
    "//src/devices/testing/mock-ddk",
    "//src/lib/fxl/test:gtest_main",
    "//src/lib/testing/predicates",
    "//third_party/googletest:gmock",
    "//third_party/googletest:gtest",
  ]
}

fuchsia_unittest_package("fake-display-unittests") {
  test_specs = {
    log_settings = {
      max_severity = "ERROR"
    }
  }
  deps = [ ":fake-display-unittests-bin" ]
}
