# 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/zircon/zx_library.gni")

import("//build/components.gni")
import("//build/test.gni")

group("tests") {
  testonly = true
  deps = [ ":operation-test" ]
}

zx_library("dev-operation") {
  sdk = "source"
  sdk_publishable = "experimental"
  sdk_name = "dev-operation"
  sdk_headers = [
    "lib/operation/operation.h",
    "lib/operation/helpers/algorithm.h",
    "lib/operation/helpers/alloc_checker.h",
    "lib/operation/helpers/intrusive_container_node_utils.h",
    "lib/operation/helpers/intrusive_container_utils.h",
    "lib/operation/helpers/intrusive_double_list.h",
    "lib/operation/helpers/intrusive_pointer_traits.h",
    "lib/operation/helpers/macros.h",
  ]
  sources = [ "alloc_checker.cc" ]
  deps = [
    "//src/lib/ddk",
    "//zircon/system/ulib/zx",
  ]
}

test("operation-test-bin") {
  output_name = "operation-test"
  sources = [
    "operation-list-test.cc",
    "operation-pool-test.cc",
    "operation-queue-test.cc",
    "operation-test.cc",
  ]
  deps = [
    ":dev-operation",
    "//sdk/lib/fdio",
    "//src/devices/testing/no_ddk",
    "//src/lib/ddk",
    "//zircon/system/ulib/zxtest",
  ]
}

fuchsia_unittest_package("operation-test") {
  deps = [ ":operation-test-bin" ]
}
