# Copyright 2022 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/components.gni")

# [START example_snippet]
executable("bin") {
  output_name = "echo_integration_test_cpp"
  sources = [ "echo_integration_test.cc" ]
  deps = [
    "//examples/components/routing/fidl:echo",
    "//sdk/lib/sys/cpp",
    "//sdk/lib/sys/cpp/testing:unit",
    "//src/lib/fxl/test:gtest_main",
    "//third_party/googletest:gtest",
    "//zircon/system/ulib/async-loop:async-loop-cpp",
    "//zircon/system/ulib/async-loop:async-loop-default",
  ]
  testonly = true
}

fuchsia_component("echo_integration_test_component_cpp") {
  testonly = true
  component_name = "echo_integration_test"
  manifest = "meta/echo_integration_test.cml"
  deps = [ ":bin" ]
}

fuchsia_test_package("echo_integration_test_cpp") {
  test_components = [ ":echo_integration_test_component_cpp" ]
  deps =
      [ "//examples/components/routing/cpp/echo_server:echo_server_component" ]
}

# [END example_snippet]

fuchsia_component("subpackaged_echo_integration_test_component") {
  testonly = true
  component_name = "echo_integration_test"
  manifest = "meta/subpackaged_echo_integration_test.cml"
  deps = [ ":bin" ]
}

fuchsia_test_package("subpackaged_echo_integration_test_cpp") {
  test_components = [ ":subpackaged_echo_integration_test_component" ]
  subpackages = [
    {
      package =
          "//examples/components/routing/cpp/echo_server:echo_server_package"
    },
  ]
}
