# Copyright 2019 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.

source_set("common") {
  testonly = true
  visibility = [ ":*" ]
  sources = [
    "fidl_coded_types.cpp",
    "handle_closing_tests.cpp",
    "linearizing_tests.cpp",
    "llcpp_types_tests.cpp",
    "on_error_handle_tests.cpp",

    # Generated coding table for fidl/extra_messages.fidl Cannot yet use
    # the FIDL_LIBS directive, since FIDL Tables are not supported in the C
    # generator.  See ./fidl/README.md for details.
    "fidl/extra_messages.cpp",
  ]
  public_deps = [
    "$zx/system/ulib/fbl",
    "$zx/system/ulib/fdio",
    "$zx/system/ulib/fidl",
    "$zx/system/ulib/fit",
    "$zx/system/ulib/unittest",
    "$zx/system/ulib/zircon",
    "$zx/system/ulib/zx",
  ]
}

# Run the common tests under a strict invalid handle policy
executable("fidl-handle-policy-test-app") {
  testonly = true
  sources = []
  deps = [
    ":common",
  ]
}

test("fidl") {
  sources = [
    "abi_tests.cpp",
    "cpp_types_tests.cpp",
    "decoding_tests.cpp",
    "encoding_tests.cpp",
    "formatting_tests.cpp",
    "message_tests.cpp",
    "run_with_handle_policy_tests.cpp",
    "validating_tests.cpp",
  ]
  deps = [
    ":common",
    ":fidl-handle-policy-test-app",
  ]
}
