# 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/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",
  ]
}
