# 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/drivers.gni")

driver_bind_rules("test_bind") {
  rules = "test.bind"
  tests = "bind_tests.json"
  deps = [
    "//src/devices/bind/fuchsia.test",
    "//src/devices/bind/fuchsia.test.platform",
  ]
}

group("tests") {
  testonly = true
  deps = [ ":test_bind_test" ]
}

fuchsia_driver("test-driver") {
  output_name = "test"
  configs += [
    "//build/config:all_source",
    "//build/config/fuchsia:enable_zircon_asserts",
  ]
  sources = [ "test.cc" ]
  deps = [
    ":test_bind",
    "//sdk/banjo/fuchsia.hardware.test:fuchsia.hardware.test_banjo_cpp",
    "//sdk/fidl/fuchsia.device.test:fuchsia.device.test_cpp",
    "//src/devices/lib/driver",
    "//src/lib/ddk",
    "//src/lib/ddktl",
    "//zircon/system/ulib/fbl",
    "//zircon/system/ulib/zircon-internal",
  ]
}

fuchsia_driver_component("test") {
  visibility = [ ":*" ]
  component_name = "test"
  deps = [ ":test-driver" ]
  info = "test-info.json"
  manifest = "meta/test.cml"
}
