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

source_set("fuzzing") {
  testonly = true
  sources = [
    "fuzzer.h",
    "server_provider.h",
    "traits.h",
  ]
  public_deps = [
    "//sdk/lib/fidl/cpp",
    "//sdk/lib/fuzzing/cpp",
    "//sdk/lib/fuzzing/cpp:traits",
    "//zircon/system/public",
    "//zircon/system/ulib/async:async-cpp",
    "//zircon/system/ulib/async-default",
    "//zircon/system/ulib/async-loop:async-loop-cpp",
    "//zircon/system/ulib/async-loop:async-loop-default",
  ]
  public_configs = [ "//sdk/config" ]
}

test("fidl_hlcpp_fuzzing_unittests") {
  sources = [ "traits_unittest.cc" ]
  deps = [
    ":fuzzing",
    "//src/lib/fxl/test:gtest_main",
  ]
}

fuchsia_unittest_package("fidl-hlcpp-fuzzing-tests") {
  component_name = "fidl_hlcpp_fuzzing_tests"
  manifest = "meta/fidl_hlcpp_fuzzing_tests.cmx"
  deps = [ ":fidl_hlcpp_fuzzing_unittests" ]
}

group("tests") {
  testonly = true
  deps = [ ":fidl-hlcpp-fuzzing-tests" ]
}
