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

import("//build/cpp/sdk_source_set.gni")
import("//build/fidl/fidl.gni")
import("//build/test/test_package.gni")

sdk_source_set("cpp") {
  testonly = true

  category = "partner"
  sdk_name = "modular_testing_cpp"
  include_base = "//sdk"

  public_configs = [ "//sdk/config" ]

  sources = [
    "fake_agent.cc",
    "fake_agent.h",
    "fake_component.cc",
    "fake_component.h",
    "test_harness_builder.cc",
    "test_harness_builder.h",
    "test_harness_launcher.cc",
    "test_harness_launcher.h",
  ]

  public_deps = [
    "//sdk/fidl/fuchsia.modular",
    "//sdk/fidl/fuchsia.modular.testing",
    "//sdk/lib/modular/cpp",
    "//sdk/lib/sys/cpp",
    "//zircon/public/lib/fit",
    "//zircon/system/ulib/async-loop:async-loop-cpp",
    "//zircon/system/ulib/async-loop:async-loop-default",
  ]
}

fidl("fuchsia.modular.test.harness") {
  sources = [ "test_harness_builder.test.fidl" ]
}

executable("modular_testing_cpp_tests_bin") {
  testonly = true
  sources = [
    "fake_agent_test.cc",
    "fake_component_test.cc",
    "test_harness_builder_test.cc",
    "test_harness_launcher_test.cc",
  ]

  deps = [
    ":fuchsia.modular.test.harness",
    "//sdk/fidl/fuchsia.modular.testing",
    "//sdk/fidl/fuchsia.sys",
    "//sdk/lib/modular/testing/cpp",
    "//sdk/lib/modular/testing/cpp:fuchsia.modular.test.harness",
    "//sdk/lib/sys/cpp",
    "//sdk/lib/sys/cpp/testing:integration",
    "//sdk/lib/sys/cpp/testing:unit",
    "//src/lib/fsl",
    "//src/lib/fxl/test:gtest_main",
    "//src/modular/lib/modular_test_harness/cpp:test_harness_fixture",
    "//third_party/googletest:gmock",

    # TODO(fxbug.dev/57392): Move it back to //third_party once unification completes.
    "//zircon/third_party/rapidjson",
  ]
}

test_package("modular_testing_cpp_tests") {
  tests = [
    {
      name = "modular_testing_cpp_tests_bin"
    },
  ]

  deps = [ ":modular_testing_cpp_tests_bin" ]
}
