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

fidl("fuchsia.driver.transport.test") {
  sources = [ "test.fidl" ]
  visibility = [ ":*" ]
  public_deps = [ "//zircon/vdso/zx" ]
  contains_drivers = true
}

test("test") {
  output_name = "driver-transport-test"

  sources = [ "test.cc" ]
  deps = [
    ":fuchsia.driver.transport.test_cpp",
    "//sdk/fidl/fuchsia.driver.test:fuchsia.driver.test_hlcpp",
    "//sdk/fidl/fuchsia.io:fuchsia.io_hlcpp",
    "//sdk/lib/component/outgoing/cpp",
    "//sdk/lib/device-watcher/cpp",
    "//sdk/lib/driver_test_realm/realm_builder/cpp",
    "//src/lib/fxl/test:gtest_main",
    "//src/lib/testing/loop_fixture",
    "//zircon/system/ulib/fbl",
  ]
}

fuchsia_unittest_package("driver-transport-test") {
  deps = [
    ":child",
    ":parent",
    ":test",
    "//src/devices/misc/drivers/test-parent",
  ]
}

driver_bind_rules("parent-driver-bind") {
  rules = "parent-driver.bind"
  deps = [ "//src/devices/bind/fuchsia.test" ]
}

fuchsia_driver("parent-drv") {
  sources = [ "parent-driver.cc" ]
  deps = [
    ":fuchsia.driver.transport.test_cpp",
    ":fuchsia.driver.transport.test_cpp",
    ":parent-driver-bind",
    "//sdk/lib/driver/component/cpp:cpp",
    "//sdk/lib/driver/runtime:driver_runtime_cpp",
    "//sdk/lib/fdio",
    "//src/devices/lib/driver",
    "//src/devices/lib/driver:driver_runtime",
    "//src/lib/ddk",
    "//src/lib/ddktl",
    "//zircon/system/ulib/fbl",
  ]
}

fuchsia_driver_component("parent") {
  component_name = "parent"
  deps = [ ":parent-drv" ]
  info = "parent-info.json"
  manifest = "meta/parent.cml"
}

driver_bind_rules("child-driver-bind") {
  rules = "child-driver.bind"
  deps = [ "//src/devices/bind/fuchsia.test" ]
}

fuchsia_driver("child-drv") {
  sources = [ "child-driver.cc" ]
  deps = [
    ":child-driver-bind",
    ":fuchsia.driver.transport.test_cpp",
    ":fuchsia.driver.transport.test_cpp",
    "//sdk/lib/driver/runtime:driver_runtime_cpp",
    "//src/devices/lib/driver",
    "//src/devices/lib/driver:driver_runtime",
    "//src/lib/ddk",
    "//src/lib/ddktl",
    "//zircon/system/ulib/fbl",
  ]
}

fuchsia_driver_component("child") {
  component_name = "child"
  deps = [ ":child-drv" ]
  info = "child-info.json"
  manifest = "meta/child.cml"
}

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