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

source_set("lib") {
  sources = [
    "reverser.cc",
    "reverser.h",
  ]

  public_deps = [
    "//examples/diagnostics/inspect/codelab/fidl:fuchsia.examples.inspect",
    "//sdk/lib/sys/inspect/cpp",
  ]
}

executable("bin") {
  output_name = "inspect_cpp_codelab_part_5"
  sources = [ "main.cc" ]

  deps = [
    ":lib",
    "//sdk/lib/sys/cpp",
    "//sdk/lib/syslog/cpp",
    "//zircon/system/ulib/async-loop:async-loop-cpp",
    "//zircon/system/ulib/async-loop:async-loop-default",
  ]
}

fuchsia_component("part_5") {
  manifest = "meta/part_5.cml"
  deps = [ ":bin" ]
}

executable("unittests") {
  testonly = true
  output_name = "inspect_cpp_codelab_part_5_unittests"
  sources = [ "reverser_unittests.cc" ]

  deps = [
    ":lib",
    "//garnet/public/lib/gtest",
    "//sdk/lib/fit-promise",
    "//sdk/lib/inspect/testing/cpp",
    "//sdk/lib/sys/cpp",
    "//src/lib/fxl/test:gtest_main",
    "//zircon/public/lib/async-cpp",
  ]
}

fuchsia_unittest_component("inspect_cpp_codelab_part_5_unittests") {
  deps = [ ":unittests" ]
}

fuchsia_test("test_spec") {
  package =
      "//examples/diagnostics/inspect/codelab/cpp:inspect_cpp_codelab_unittests"
  component = ":inspect_cpp_codelab_part_5_unittests"
}

executable("integration_test") {
  testonly = true
  output_name = "inspect_cpp_codelab_part_5_integration_test"
  sources = [ "tests/integration_test.cc" ]

  public_deps = [
    "//examples/diagnostics/inspect/codelab/cpp/testing:inspect-cpp-codelab-testing",
    "//garnet/public/lib/gtest",
    "//sdk/fidl/fuchsia.diagnostics",
    "//sdk/lib/sys/cpp",
    "//src/lib/fsl",
    "//src/lib/fxl/test:gtest_main",
    "//third_party/rapidjson",
  ]
}

fuchsia_component("inspect_cpp_codelab_part_5_integration_test") {
  testonly = true
  manifest = "meta/integration_test.cml"
  deps = [ ":integration_test" ]
}

fuchsia_test("integration_test_spec") {
  package = "//examples/diagnostics/inspect/codelab/cpp:inspect_cpp_codelab_integration_tests"
  component = ":inspect_cpp_codelab_part_5_integration_test"
}
