# Copyright 2020 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/testing/environments.gni")

source_set("cpp") {
  sources = [
    "executor.cc",
    "executor.h",
  ]

  public_deps = [
    "//src/lib/fuchsia-async:fuchsia-async-staticlib",
    "//zircon/system/ulib/async",
  ]
}

executable("test_bin") {
  testonly = true
  output_name = "fuchsia-async-cpp-test"
  sources = [ "executor_test.cc" ]
  deps = [
    ":cpp",
    "//src/lib/fxl/test:gtest_main",
    "//third_party/googletest:gtest",
  ]
}

fuchsia_unittest_package("fuchsia-async-cpp-test") {
  deps = [ ":test_bin" ]
  test_specs = {
    environments = [ emu_env ]
  }
}

group("tests") {
  testonly = true
  deps = [
    ":fuchsia-async-cpp-test",
    ":test_bin($host_toolchain)",
  ]
}
