# 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("//src/sys/build/components.gni")

source_set("backoff") {
  sources = [
    "backoff.h",
    "exponential_backoff.cc",
    "exponential_backoff.h",
  ]

  public_deps = [
    "//sdk/lib/fit",
    "//src/lib/fxl",
    "//zircon/public/lib/zx",
  ]

  public_configs = [ "//garnet/public:config" ]

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

executable("backoff_unittests") {
  testonly = true

  sources = [ "exponential_backoff_unittest.cc" ]

  deps = [
    ":backoff",
    "//src/lib/fxl/test:gtest_main",
    "//third_party/googletest:gtest",
  ]
}

fuchsia_unittest_package("backoff_tests") {
  deps = [ ":backoff_unittests" ]
}

group("tests") {
  testonly = true

  deps = [ ":backoff_tests" ]
}
