# Copyright 2021 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")

source_set("mock-ddk") {
  testonly = true

  sources = [
    "libdriver-api.cc",
    "mock-device.cc",
    "mock-device.h",
  ]

  deps = [
    "//sdk/lib/component/incoming/cpp",
    "//sdk/lib/fdio",
    "//src/lib/ddk",
    "//zircon/system/ulib/sync",
    "//zircon/system/ulib/syslog",
    "//zircon/system/ulib/zx",
  ]
  public_deps = [
    "//sdk/fidl/fuchsia.io:fuchsia.io_cpp",
    "//sdk/lib/driver/runtime:driver_runtime_cpp",
    "//sdk/lib/driver/testing/cpp",
    "//sdk/lib/stdcompat",

    # mock_ddk.h has #include <ddk/device.h>.
    "//src/lib/ddk",

    # mock_ddk.h has #include <lib/sync/completion.h>.
    "//zircon/system/ulib/async",
    "//zircon/system/ulib/svc",
    "//zircon/system/ulib/sync",
  ]
}

group("tests") {
  testonly = true
  deps = [ ":mock-ddk-test" ]
}

test("mock-ddk-test-bin") {
  output_name = "mock-ddk-test"
  sources = [ "mock-ddk-test.cc" ]
  deps = [
    ":mock-ddk",
    "//sdk/lib/component/outgoing/cpp",
    "//sdk/lib/driver/outgoing/cpp",
    "//src/devices/tests/fidl-service:echo_cpp",
    "//src/lib/ddktl",
    "//zircon/system/ulib/async-loop:async-loop-cpp",
    "//zircon/system/ulib/fbl",
    "//zircon/system/ulib/zx",
    "//zircon/system/ulib/zxtest",
  ]
}

fuchsia_unittest_package("mock-ddk-test") {
  deps = [ ":mock-ddk-test-bin" ]
}
