# 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",
    "//third_party/googletest:gtest",
  ]

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