# Copyright 2019 The Chromium Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.

assert(is_fuchsia)

import("//build/config/fuchsia/fidl_library.gni")
import("//build/config/fuchsia/rules.gni")
import("//testing/test.gni")

# Integration helpers for commonly used fuchsia.* APIs.
source_set("base") {
  sources = [
    "mem_buffer_util.cc",
  ]
  public = [
    "mem_buffer_util.h",
  ]
  deps = [
    "//base",
    "//third_party/fuchsia-sdk/sdk:mem",
  ]
}

# Integration helpers for fuchsia.modular.
source_set("modular") {
  sources = [
    "agent_impl.cc",
    "agent_impl.h",
  ]
  deps = [
    "//base",
  ]
  public_deps = [
    "//third_party/fuchsia-sdk/sdk:modular",
  ]
}

source_set("test_support") {
  testonly = true
  public = [
    "fit_adapter.h",
    "result_receiver.h",
  ]
  public_deps = [
    "//base",
  ]
}

# Unit-tests for all //fuchsia/base utilities.
test("cr_fuchsia_base_unittests") {
  sources = [
    "agent_impl_unittests.cc",
  ]
  deps = [
    ":modular",
    ":test_support",
    "//base",
    "//base:testfidl",
    "//base/test:run_all_unittests",
    "//testing/gtest",
  ]
}
