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

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

  deps = [ "//src/lib/fxl:string_printf" ]
}

test("uuid_unittests") {
  sources = [ "uuid_unittest.cc" ]

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

fuchsia_unittest_package("uuid_tests") {
  deps = [ ":uuid_unittests" ]
}

group("tests") {
  testonly = true

  deps = [
    ":uuid_tests",
    ":uuid_unittests($host_toolchain)",
  ]
}
