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

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

fidl("fuchsia.device.firmware.test") {
  testonly = true
  sources = [ "firmware.test.fidl" ]
  public_deps = [ "//zircon/vdso/zx" ]
}

driver_bind_rules("ddk-firmware-test-bind") {
  testonly = true
  bind_output = "test-driver-bind.bindbc"
  rules = "test-driver.bind"
  deps = [ "//src/devices/bind/fuchsia.test" ]
}

fuchsia_driver("ddk-firmware-test") {
  testonly = true
  configs += [
    "//build/config:all_source",
    "//build/config/fuchsia:enable_zircon_asserts",
  ]
  sources = [ "test-driver.cc" ]
  deps = [
    ":ddk-firmware-test-bind",
    ":fuchsia.device.firmware.test_cpp",
    "//sdk/lib/fdio",
    "//src/devices/lib/driver",
    "//src/lib/ddk",
    "//src/lib/ddktl",
    "//src/lib/files",
    "//zircon/system/ulib/sync",
  ]
}

fuchsia_driver_component("ddk-firmware-test-driver") {
  testonly = true
  deps = [ ":ddk-firmware-test" ]
  info = "ddk-firmware-test-driver-info.json"
  manifest = "meta/ddk-firmware-test-driver.cml"
}

resource("test-firmware-file") {
  sources = [ "test-firmware.txt" ]
  outputs = [ "lib/firmware/test-firmware" ]
}

fuchsia_unittest_component("ddk-firmware-test-component") {
  component_name = "ddk-firmware-test-component"
  deps = [ ":ddk_firmware_test" ]
}

rustc_test("ddk_firmware_test") {
  edition = "2021"
  source_root = "test.rs"

  deps = [
    ":fuchsia.device.firmware.test_rust",
    "//sdk/fidl/fuchsia.driver.test:fuchsia.driver.test_rust",
    "//sdk/lib/device-watcher/rust",
    "//sdk/lib/driver_test_realm/realm_builder/rust",
    "//src/lib/fuchsia",
    "//src/lib/fuchsia-component-test",
    "//src/lib/zircon/rust:fuchsia-zircon",
    "//third_party/rust_crates:anyhow",
  ]

  sources = [ "test.rs" ]
}

fuchsia_test_component("driver-manager-realm") {
  manifest = "meta/driver-manager-realm.cml"
}

fuchsia_test_package("ddk-firmware-test-package") {
  package_name = "ddk-firmware-test"
  test_components = [ ":ddk-firmware-test-component" ]
  deps = [
    ":ddk-firmware-test-driver",
    ":driver-manager-realm",
    ":test-firmware-file",
    "//sdk/lib/driver_test_realm:driver_manager_test",
    "//sdk/lib/driver_test_realm:fake_resolver",
    "//src/devices/bin/driver-index:component",
    "//src/devices/misc/drivers/test-parent",
  ]
}
