# 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/host.gni")
import("//build/test.gni")
import("//src/sys/build/components.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/public/lib/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",
  ]
}

fuchsia_unittest_package("fuzzing_traits_tests") {
  manifest = "meta/fuzzing_traits_unittests.cmx"
  deps = [ ":fuzzing_traits_unittests" ]
}

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

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