# Copyright 2022 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/components/fuchsia_unittest_package.gni")

group("tokens") {
  public_deps = [ ":lib" ]
}

group("tests") {
  testonly = true
  public_deps = [ ":tokens-unittest" ]
}

source_set("lib") {
  visibility = [ ":*" ]
  public = [ "tokens.h" ]
  public_deps = [
    "//zircon/system/ulib/async:async-cpp",
    "//zircon/system/ulib/async-default",
  ]
}

executable("tokens-unittest-bin") {
  visibility = [ ":*" ]
  testonly = true
  sources = [ "tokens-unittest.cc" ]
  deps = [
    "//src/camera/lib/tokens",
    "//src/lib/fxl/test:gtest_main",
    "//zircon/system/ulib/async-loop:async-loop-cpp",
    "//zircon/system/ulib/async-loop:async-loop-default",
  ]
}

fuchsia_unittest_package("tokens-unittest") {
  visibility = [ ":*" ]
  deps = [ ":tokens-unittest-bin" ]
}
