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

driver_bind_rules("metadata-test-bind") {
  testonly = true
  rules = "metadata-test.bind"
  deps = [ "//src/devices/bind/fuchsia.test.platform" ]
}

fidl("fuchsia.device.manager.test") {
  testonly = true
  sources = [ "metadata.test.fidl" ]
}

fuchsia_driver("isolateddevmgr-test-driver-driver") {
  testonly = true
  output_name = "isolateddevmgr-test-driver"
  sources = [ "test-driver.cc" ]
  deps = [
    ":fuchsia.device.manager.test_cpp",
    ":metadata-test-bind",
    "//sdk/lib/fdio",
    "//src/devices/lib/driver",
    "//src/lib/ddk",
    "//src/lib/ddktl",
    "//zircon/system/ulib/fbl",
  ]
}

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

test("isolateddevmgr") {
  output_name = "isolateddevmgr-test"
  sources = [ "test.cc" ]
  deps = [
    ":fuchsia.device.manager.test_cpp",
    "//sdk/lib/fdio",
    "//src/devices/testing/driver-integration-test-shim",
    "//src/lib/ddk",
    "//zircon/system/ulib/fbl",
    "//zircon/system/ulib/zx",
    "//zircon/system/ulib/zxtest",
  ]
}

fuchsia_unittest_package("isolateddevmgr-test") {
  package_name = "isolateddevmgr"

  deps = [
    ":isolateddevmgr",
    ":isolateddevmgr-test-driver",
    "//src/devices/board/drivers/integration-test",
    "//src/devices/bus/drivers/platform",
  ]
}

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