# 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
  sources = [
    "fake_component_context.cc",
    "fake_component_context.h",
    "fit_adapter.h",
    "result_receiver.h",
  ]
  public_deps = [
    ":modular",
    "//base",
    "//third_party/fuchsia-sdk/sdk:modular",
  ]
}

# 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",
  ]
}
