# 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("//build/test/test_package.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",
  ]
}

test_package("fuzzing_traits_tests") {
  deps = [ ":fuzzing_traits_unittests" ]
  tests = [
    {
      name = "fuzzing_traits_unittests"
    },
  ]
}

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

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