# 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")
import("//build/dart/dart_library.gni")
import("//build/dart/dart_test_component.gni")

# Run these tests using:
#   fx set ... --with //sdk/dart/fuchsia_component_test:tests
#   fx test dart_realm_builder_unittests
dart_test_component("fuchsia-component-test-dart-tests") {
  manifest = "meta/fuchsia-component-test-dart-tests.cml"

  null_safe = true

  sources = [ "dart_tests.dart" ]

  deps = [
    "//examples/components/routing/fidl:echo",
    "//sdk/dart/fidl",
    "//sdk/dart/fuchsia",
    "//sdk/dart/fuchsia_component_test:dart_realm_builder_deps",
    "//sdk/dart/fuchsia_logger",
    "//sdk/dart/fuchsia_services",
    "//sdk/dart/zircon",
    "//sdk/fidl/fuchsia.component",
    "//sdk/fidl/fuchsia.component.decl",
    "//sdk/fidl/fuchsia.component.test",
    "//sdk/fidl/fuchsia.intl",
    "//sdk/fidl/fuchsia.io",
    "//sdk/fidl/fuchsia.logger",
    "//third_party/dart-pkg/pub/mockito",
    "//third_party/dart-pkg/pub/test",
  ]
}

fuchsia_component("echo_client_with_binder_component") {
  component_name = "echo_client_with_binder"
  manifest = "meta/echo_client_with_binder.cml"
  deps = [ "//examples/components/routing/rust/echo_client" ]
}

fuchsia_test_package("dart_realm_builder_unittests") {
  test_components = [ ":fuchsia-component-test-dart-tests" ]
  deps = [
    ":echo_client_with_binder_component",
    "//examples/components/realm_builder:echo_client_component",
    "//examples/components/realm_builder:echo_client_legacy_component",
    "//examples/components/realm_builder:echo_server_component",
    "//examples/components/realm_builder:echo_server_legacy_component",
    "//src/lib/fuchsia-component-test/tests/echo_client_sc",
  ]
}

group("tests") {
  testonly = true
  deps = [ ":dart_realm_builder_unittests" ]

  if (dart_default_build_cfg.is_aot) {
    deps += [ "//src/dart:dart_aot_runner" ]
  } else {
    deps += [ "//src/dart:dart_jit_runner" ]
  }
}
