# 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/async-loop-cpp",
    "//zircon/public/lib/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",
    "//third_party/rapidjson",
  ]
}

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

  deps = [ ":modular_testing_cpp_tests_bin" ]
}
