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

source_set("cpp") {
  testonly = true
  sources = [
    "fuzz_input.cc",
    "fuzz_input.h",
  ]
  public_configs = [ "//sdk/config" ]
}

source_set("traits") {
  testonly = true
  sources = [ "traits.h" ]
  public_configs = [ "//sdk/config" ]
  public_deps = [
    ":cpp",
    "//sdk/lib/fidl/cpp:cpp_sync",
    "//zircon/system/ulib/zx",
  ]
}

group("tests") {
  testonly = true
  deps = [
    ":fuzz_input_unittests(${host_toolchain})",
    ":fuzzing_traits_unittests",
  ]
}

test("fuzzing_traits_unittests") {
  sources = [ "traits_unittest.cc" ]
  deps = [
    ":traits",
    "//src/lib/fxl/test:gtest_main",
    "//src/sys/test_runners/gtest:death_test",
  ]
}

fuchsia_unittest_package("fuzzing_traits_tests") {
  deps = [ ":fuzzing_traits_unittests" ]
}

test("fuzz_input_unittests") {
  sources = [ "fuzz_input_unittest.cc" ]

  deps = [
    ":cpp",
    "//src/lib/fxl/test:gtest_main",
  ]
}
