# Copyright 2019 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/cc_test_executable.gni")

group("blocking_mpsc_queue") {
  public_deps = [ ":blocking_mpsc_queue_sources" ]
}

group("tests") {
  testonly = true
  deps = [ ":blocking_mpsc_queue_unittests" ]
}

source_set("blocking_mpsc_queue_sources") {
  public = [ "blocking_mpsc_queue.h" ]

  public_deps = [
    "//src/lib/containers/cpp",
    "//zircon/system/ulib/zx",
  ]
}

cc_test_executable("blocking_mpsc_queue_unittest_bin") {
  output_name = "blocking_mpsc_queue_unittests"

  testonly = true

  sources = [ "blocking_mpsc_queue_unittests.cc" ]

  deps = [
    ":blocking_mpsc_queue",
    "//sdk/lib/async:async-cpp",
    "//sdk/lib/async-loop:async-loop-cpp",
    "//sdk/lib/async-loop:async-loop-default",
    "//src/lib/fxl/test:gtest_main",
  ]
}

fuchsia_unittest_package("blocking_mpsc_queue_unittests") {
  deps = [ ":blocking_mpsc_queue_unittest_bin" ]
  test_specs = {
    environments = basic_envs
  }
}
