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

executable("bin") {
  testonly = true

  output_name = "simple_tests"

  sources = [
    "client_tests.c",
    "ldsvc_tests.c",
    "server_tests.c",
    "spaceship_tests.c",
    "spaceship_tests.cc",
  ]

  deps = [
    ":fidl.test.echo_c",
    ":fidl.test.spaceship_c",
    "//sdk/fidl/fuchsia.ldsvc:fuchsia.ldsvc_c",
    "//sdk/fidl/fuchsia.mem:fuchsia.mem_c",
    "//sdk/lib/fdio",
    "//zircon/public/lib/async",
    "//zircon/public/lib/fbl",
    "//zircon/public/lib/ldmsg",
    "//zircon/public/lib/zx",
    "//zircon/public/lib/zxtest",
    "//zircon/system/ulib/async-default",
    "//zircon/system/ulib/async-loop",
    "//zircon/system/ulib/async-loop:async-loop-default",
    "//zircon/system/ulib/fidl-utils",
  ]
}

fidl("fidl.test.echo") {
  visibility = [ ":*" ]
  sources = [ "echo.test.fidl" ]
  public_deps = [ "//zircon/vdso/zx" ]
}

fidl("fidl.test.spaceship") {
  visibility = [ ":*" ]
  sources = [ "spaceship.test.fidl" ]
  public_deps = [ "//zircon/vdso/zx" ]
}
