# Copyright 2024 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/cpp/sdk_source_set.gni")
import("//build/test.gni")

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

sdk_source_set("cpp") {
  category = "partner"
  stable = true
  sdk_name = "driver_fake_object_cpp"
  include_base = "//sdk"

  sources = [
    "fake-handle.cc",
    "fake-object.cc",
    "internal.h",
  ]

  public = [ "fake-object.h" ]

  public_deps = [
    "//sdk/lib/fdio",
    "//zircon/system/ulib/zx",
  ]

  public_configs = [ "//sdk/config" ]
}

test("fake_object_test") {
  testonly = true
  output_name = "fake_object_test"
  sources = [
    "fake-object-test.cc",
    "internal.h",
  ]

  deps = [
    ":cpp",
    "//zircon/system/ulib/zxtest",
  ]
}

fuchsia_unittest_package("fake_object_test_package") {
  deps = [ ":fake_object_test" ]
}
