# 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")

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

  deps = [
    "//garnet/public/lib/backoff:unittests",
    "//garnet/public/lib/callback:unittests",
    "//garnet/public/lib/cobalt/cpp:unittests",
    "//garnet/public/lib/gtest:unittests",
    "//garnet/public/lib/netconnector/cpp:unittests",
    "//garnet/public/lib/network_wrapper:unittests",
    "//third_party/googletest:gtest_main",
  ]
}

package("garnet_lib_tests") {
  testonly = true

  deps = [
    ":unittests",
  ]

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