# 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/public/lib/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)",
  ]
}
