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

group("tests") {
  testonly = true
  deps = [
    ":digest-fuzzers",
    ":digest-unit-tests",
  ]
}

test("digest") {
  output_name = "digest-unit-tests"
  if (is_fuchsia) {
    fdio_config = [ "//build/config/fuchsia:fdio_config" ]
    if (configs + fdio_config - fdio_config != configs) {
      configs -= fdio_config
    }
  }
  sources = [
    "digest.cc",
    "hash-list.cc",
    "merkle-tree.cc",
    "node-digest.cc",
  ]
  deps = [
    "//sdk/lib/fdio",
    "//src/lib/digest",
    "//src/lib/fxl/test:gtest_main",
    "//src/lib/testing/predicates",
    "//third_party/boringssl",
    "//third_party/googletest:gmock",
    "//third_party/googletest:gtest",
    "//zircon/system/ulib/fbl",
  ]
}

fuchsia_component("digest-unit-tests-component") {
  component_name = "digest-unit-tests"
  testonly = true

  manifest = "digest-unit-tests.cml"

  deps = [ ":digest" ]
}

fuchsia_test_package("digest-unit-tests") {
  test_components = [ ":digest-unit-tests-component" ]
}

fuchsia_library_fuzzer("merkle-tree-fuzzer") {
  sources = [ "merkle-tree-fuzzer.cc" ]
  deps = [ "//src/lib/digest" ]
}

fuchsia_fuzzer_component("merkle-tree-fuzzer-component") {
  manifest = "meta/merkle-tree-fuzzer.cml"
  deps = [ ":merkle-tree-fuzzer" ]
}

fuchsia_fuzzer_package("digest-fuzzers") {
  cpp_fuzzer_components = [ ":merkle-tree-fuzzer-component" ]
}
