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

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