# 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/fidl/fidl.gni")
import("//build/package.gni")
import("//build/rust/rustc_library.gni")
import("//build/test/test_package.gni")

rustc_library("event-queue") {
  version = "0.0.1"
  edition = "2018"
  with_unit_tests = true

  deps = [
    "//src/lib/fuchsia-async",
    "//third_party/rust_crates:futures",
    "//third_party/rust_crates:thiserror",
  ]

  test_deps = [
    ":test.pkg.eventqueue-rustc",
    "//src/lib/fidl/rust/fidl",
    "//third_party/rust_crates:matches",
  ]

  sources = [
    "src/barrier.rs",
    "src/lib.rs",
  ]
}

group("tests") {
  testonly = true
  deps = [ ":event-queue-tests" ]
}

unittest_package("event-queue-tests") {
  deps = [ ":event-queue_test" ]

  tests = [
    {
      name = "event_queue_lib_test"
    },
  ]
}

fidl("test.pkg.eventqueue") {
  testonly = true
  sources = [ "test.fidl" ]
}
