# 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 = "coding_tables_tests"

  sources = [ "coding_tables_tests.cc" ]

  deps = [
    ":fidl.test.example.codingtables_hlcpp",
    "//sdk/lib/fdio",
    "//sdk/lib/fidl",
    "//zircon/system/ulib/fbl",
    "//zircon/system/ulib/zx",
    "//zircon/system/ulib/zxtest",
  ]
}

fidl("fidl.test.example.codingtablesdeps") {
  testonly = true
  visibility = [ ":*" ]
  sources = [ "coding_tables_deps.test.fidl" ]
  enable_hlcpp = true
}

fidl("fidl.test.example.codingtables") {
  testonly = true
  visibility = [ ":*" ]
  sources = [ "coding_tables.test.fidl" ]
  public_deps = [ ":fidl.test.example.codingtablesdeps" ]
  enable_hlcpp = true
}
