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

group("tests") {
  testonly = true
  deps = [
    ":listnode-package",
    ":listnode-tests($host_toolchain)",
  ]
}

source_set("listnode") {
  sources = [ "listnode.h" ]
}

test("listnode-tests") {
  output_name = "listnode-tests"

  # listnode should work in both C and C++.
  sources = [
    "listnode-test.c",
    "listnode-test.cc",
  ]
  deps = [
    ":listnode",
    "//zircon/public/lib/zxtest",
  ]

  # TODO(fxbug.dev/58162): delete the below and fix compiler warnings
  configs += [ "//build/config:Wno-conversion" ]
}

unittest_package("listnode-package") {
  deps = [ ":listnode-tests" ]

  tests = [
    {
      name = "listnode-tests"
    },
  ]
}
