# Copyright 2017 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("//peridot/build/executable_package.gni")

source_set("defs") {
  testonly = true

  sources = [
    "defs.h",
  ]
}

executable_package("link_data_test_session_shell") {
  testonly = true

  sources = [
    "link_data_test_session_shell.cc",
  ]

  meta = [
    {
      path = "meta/link_data_test_session_shell.cmx"
      dest = "link_data_test_session_shell.cmx"
    },
  ]


  deps = [
    ":defs",
    "//garnet/public/fidl/fuchsia.testing.runner",
    "//garnet/public/fidl/fuchsia.ui.viewsv1",
    "//garnet/public/lib/fidl/cpp",
    "//garnet/public/lib/fxl",
    "//peridot/lib/common:names",
    "//peridot/lib/rapidjson",
    "//peridot/public/lib/integration_testing/cpp",
    "//peridot/lib/testing:component_main",
    "//peridot/lib/testing:session_shell_base",
    "//peridot/public/fidl/fuchsia.modular",
    "//peridot/public/fidl/fuchsia.modular.internal",
    "//peridot/tests/common:defs",
  ]
}

executable_package("link_data_test_module0") {
  testonly = true

  sources = [
    "link_data_test_module0.cc",
  ]

  meta = [
    {
      path = "meta/link_data_test_module0.cmx"
      dest = "link_data_test_module0.cmx"
    },
  ]

  deps = [
    ":defs",
    "//garnet/public/fidl/fuchsia.ui.viewsv1",
    "//peridot/lib/rapidjson",
    "//peridot/public/lib/integration_testing/cpp",
    "//peridot/public/fidl/fuchsia.modular",
    "//peridot/public/lib/app_driver/cpp:module_driver",
    "//peridot/tests/common:defs",
    "//zircon/public/lib/async-loop-cpp",
  ]
}

executable_package("link_data_test_module1") {
  testonly = true

  sources = [
    "link_data_test_module1.cc",
  ]

  meta = [
    {
      path = "meta/link_data_test_module1.cmx"
      dest = "link_data_test_module1.cmx"
    },
  ]

  deps = [
    ":defs",
    "//garnet/public/fidl/fuchsia.ui.viewsv1",
    "//peridot/lib/rapidjson",
    "//peridot/public/lib/integration_testing/cpp",
    "//peridot/public/fidl/fuchsia.modular",
    "//peridot/public/lib/app_driver/cpp:module_driver",
    "//peridot/tests/common:defs",
    "//zircon/public/lib/async-loop-cpp",
  ]
}

executable_package("link_data_test_module2") {
  testonly = true

  sources = [
    "link_data_test_module2.cc",
  ]

  meta = [
    {
      path = "meta/link_data_test_module2.cmx"
      dest = "link_data_test_module2.cmx"
    },
  ]

  deps = [
    ":defs",
    "//garnet/public/fidl/fuchsia.ui.viewsv1",
    "//peridot/lib/rapidjson",
    "//peridot/public/lib/integration_testing/cpp",
    "//peridot/public/fidl/fuchsia.modular",
    "//peridot/public/lib/app_driver/cpp:module_driver",
    "//peridot/tests/common:defs",
    "//zircon/public/lib/async-loop-cpp",
  ]
}
