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

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

  sources = [
    "composed_service_dir.h",
    "lazy_dir.h",
    "node.h",
    "pseudo_dir.h",
    "pseudo_file.h",
    "remote_dir.h",
    "service.h",
    "vmo_file.h",
  ]

  public_deps = [
    "//sdk/fidl/fuchsia.io:fuchsia.io_cpp",
    "//sdk/fidl/fuchsia.io:fuchsia.io_hlcpp",
    "//sdk/lib/async",
    "//sdk/lib/fdio",
    "//sdk/lib/vfs/internal:vfs_internal",
    "//zircon/system/ulib/zx",
  ]

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

test("vfs_cpp_unittests") {
  sources = [
    "tests/composed_service_dir_test.cc",
    "tests/lazy_dir_test.cc",
    "tests/pseudo_dir_test.cc",
    "tests/pseudo_file_test.cc",
    "tests/remote_dir_test.cc",
    "tests/service_test.cc",
    "tests/vmo_file_test.cc",
  ]

  deps = [
    ":cpp",
    "//sdk/lib/fdio",
    "//src/lib/fxl/test:gtest_main",
    "//src/lib/testing/loop_fixture",
    "//src/testing/fidl:placeholders_cpp",
  ]
}

fuchsia_unittest_package("vfs_cpp_tests") {
  deps = [ ":vfs_cpp_unittests" ]
}

group("tests") {
  testonly = true
  public_deps = [ ":vfs_cpp_tests" ]
}
