# Copyright 2018 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")

source_set("callback") {
  sources = [
    "auto_cleanable.h",
    "capture.h",
    "destruction_sentinel.cc",
    "destruction_sentinel.h",
    "scoped_callback.h",
    "scoped_task_runner.cc",
    "scoped_task_runner.h",
    "trace_callback.h",
  ]

  public_deps = [
    "//sdk/lib/fit",
    "//sdk/lib/syslog/cpp",
    "//src/lib/fxl",
    "//zircon/system/ulib/async-default",
    "//zircon/system/ulib/trace",
    "//zircon/system/ulib/zx",
  ]

  deps = [ "//zircon/system/ulib/async:async-cpp" ]
}

executable("callback_unittests") {
  testonly = true

  sources = [
    "auto_cleanable_unittest.cc",
    "capture_unittest.cc",
    "destruction_sentinel_unittest.cc",
    "scoped_callback_unittest.cc",
    "scoped_task_runner_unittest.cc",
  ]

  deps = [
    ":callback",
    "//src/lib/fxl/test:gtest_main",
    "//src/lib/testing/loop_fixture",
    "//third_party/googletest:gmock",
    "//third_party/googletest:gtest",
    "//zircon/system/ulib/async-testing",
  ]
}

fuchsia_unittest_package("callback_tests") {
  deps = [ ":callback_unittests" ]
}

group("tests") {
  testonly = true

  deps = [ ":callback_tests" ]
}
