# 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" ]

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

cts_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" ]
}

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

  testonly = true

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

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

  testonly = true

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