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

source_set("fuzzing") {
  testonly = true
  sources = [
    "decoder_encoder.h",
    "fuzzer.h",
    "server_provider.h",
    "traits.h",
  ]
  public_deps = [
    "//sdk/lib/fidl/cpp",
    "//sdk/lib/fidl/llcpp",
    "//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"
  deps = [ ":fidl_hlcpp_fuzzing_unittests" ]
}

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