# Copyright 2018 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/fidl/fidl.gni")
import("//sdk/cts/build/cts.gni")

cts_source_set("test") {
  testonly = true

  public = [
    "fidl_types.h",
    "frobinator_impl.h",
  ]

  sources = [
    "fidl_types.cc",
    "frobinator_impl.cc",
  ]

  public_deps = [ ":frobinator" ]

  deps = [
    "//sdk/lib/fidl/cpp",
    "//zircon/public/lib/zxtest",
  ]

  public_configs = [ "//sdk/config" ]
}

fidl("frobinator") {
  # TODO(fxbug.dev/35879): Remove lint exclusions by fixing known FIDL lint violations in this target
  excluded_checks = [
    "event-names-must-start-with-on",
    "string-bounds-not-specified",
  ]

  name = "fidl.test.frobinator"

  sources = [ "frobinator.test.fidl" ]
}

fidl("fidl_test") {
  name = "fidl.test.misc"

  testonly = true

  sources = [ "fidl_test.test.fidl" ]
}

fidl("collision_test") {
  name = "fidl.test.collision"

  testonly = true

  sources = [ "collision.test.fidl" ]
}
