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

executable("unittests") {
  testonly = true
  output_name = "garnet_lib_unittests"

  deps = [
    "//garnet/public/lib/backoff:unittests",
    "//garnet/public/lib/callback:unittests",
    "//garnet/public/lib/gtest:unittests",
    "//garnet/public/lib/netconnector/cpp:unittests",
    "//garnet/public/lib/network_wrapper:unittests",
    "//garnet/public/lib/timekeeper:unittests",
    "//src/lib/fxl/test:gtest_main",
  ]
}

unittest_package("garnet_lib_tests") {
  deps = [
    ":unittests",
  ]

  tests = [
    {
      name = "garnet_lib_unittests"
      environments = basic_envs
    },
  ]
}
