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

group("auth_provider_tests") {
  testonly = true
  public_deps = [
    "//topaz/auth_providers:auth_provider_tests",
  ]
}

group("scenic") {
  testonly = true
  public_deps = [
    "//garnet/examples/ui:tile_view",
    "//garnet/packages/tests:scenic",
    "//topaz/bin/ui/benchmarks/image_grid_flutter",
  ]
}

group("dart_unittests") {
  testonly = true
  public_deps = [
    "//topaz/bin/dart_fidl_json/test:dart_fidl_json_test($host_toolchain)",
    "//topaz/examples/test/flutter_widget_test($host_toolchain)",
    "//topaz/lib/keyboard/flutter:keyboard_test($host_toolchain)",
    "//topaz/lib/setui/common:lib_setui_common_test($host_toolchain)",
    "//topaz/lib/setui/flutter:lib_setui_flutter_test($host_toolchain)",
    "//topaz/lib/setui/settings/client:lib_setui_settings_client_test($host_toolchain)",
    "//topaz/lib/setui/settings/common:lib_setui_settings_common_test($host_toolchain)",
    "//topaz/lib/setui/settings/service:lib_setui_service_test($host_toolchain)",
    "//topaz/lib/setui/settings/testing:lib_setui_settings_testing_test($host_toolchain)",
    "//topaz/lib/tiler:tiler_unittests($host_toolchain)",
    "//topaz/public/dart/composition_delegate:composition_delegate_tests($host_toolchain)",
    "//topaz/public/dart/fuchsia_inspect:fuchsia_inspect_package_unittests($host_toolchain)",
    "//topaz/public/dart/fuchsia_logger:fuchsia_logger_package_unittests($host_toolchain)",
    "//topaz/public/dart/fuchsia_modular:fuchsia_modular_package_unittests($host_toolchain)",
    "//topaz/public/dart/fuchsia_scenic_flutter:fuchsia_scenic_flutter_unittests($host_toolchain)",
    "//topaz/public/dart/fuchsia_services:fuchsia_services_package_unittests($host_toolchain)",
    "//topaz/public/dart/sledge:dart_sledge_tests($host_toolchain)",
    "//topaz/public/dart/widgets:dart_widget_tests($host_toolchain)",
    "//topaz/public/lib/app/dart:dart_app_tests($host_toolchain)",
    "//topaz/public/lib/display/flutter:display_test($host_toolchain)",
    "//topaz/public/lib/schemas/dart:dart_schema_tests($host_toolchain)",
    "//topaz/public/lib/testing/app_driver/dart:fake_module_driver_test($host_toolchain)",
    "//topaz/shell/mondrian_story_shell:mondrian_story_shell_tests($host_toolchain)",
  ]
}

group("bindings_tests") {
  testonly = true
  public_deps = [
    "//topaz/bin/fidl_bindings_test/server:fidl_bindings_test_server",
    "//topaz/bin/fidl_bindings_test/test:fidl_bindings_test",
  ]
}

group("dart") {
  testonly = true
  public_deps = [
    "//topaz/public/dart/zircon:test_extract_zircon_constants($host_toolchain)",
    "//topaz/runtime/dart_runner/examples/goodbye_dart:goodbye_dart_test",
    "//topaz/runtime/dart_runner/integration:dart_aot_runner_test",
    "//topaz/runtime/dart_runner/integration:dart_jit_runner_test",
  ]
}

group("all") {
  testonly = true
  public_deps = [
    "//garnet/packages/tests:run_test_component",
    "//topaz/packages/examples:tests",
    "//topaz/packages/tests:auth_provider_tests",
    "//topaz/packages/tests:bindings_tests",
    "//topaz/packages/tests:crasher_dart",
    "//topaz/packages/tests:crasher_flutter",
    "//topaz/packages/tests:dart",
    "//topaz/packages/tests:dart_target_integration_tests",
    "//topaz/packages/tests:dart_target_unittests",
    "//topaz/packages/tests:dart_unittests",
    "//topaz/packages/tests:fidl_changes",
    "//topaz/packages/tests:fidl_compatibility_test",
    "//topaz/packages/tests:fidl_compatibility_test_server_dart",
    "//topaz/packages/tests:flutter_runner_tests",
    "//topaz/packages/tests:flutter_screencap_test",
    "//topaz/packages/tests:flutter_screencap_test_app",
    "//topaz/packages/tests:key_listener_test",
    "//topaz/packages/tests:scenic",
    "//topaz/packages/tests:sledge",
    "//topaz/packages/tests:web_runner_tests",
  ]
}

group("crasher_flutter") {
  testonly = true
  public_deps = [
    "//topaz/bin/crasher_flutter",
  ]
}

group("flutter_screencap_test_app") {
  testonly = true
  public_deps = [
    "//garnet/packages/tools:scenic",
    "//topaz/bin/flutter_screencap_test:flutter_screencap_test_app",
  ]
}

group("dart_target_unittests") {
  testonly = true
  public_deps = [
    "//topaz/public/dart-pkg/zircon:dart_zircon_test",
    "//topaz/public/dart/fuchsia_modular:fuchsia_modular_package_integration_tests",
    "//topaz/public/dart/fuchsia_services:fuchsia_services_package_integration_tests",
    "//topaz/public/dart/fuchsia_vfs:fuchsia_vfs_package_unittests",
  ]
}

group("fidl_compatibility_test_server_dart") {
  testonly = true
  public_deps = [
    "//topaz/bin/fidl_compatibility_test/dart:fidl_compatibility_test_server_dart",
  ]
}

group("crasher_dart") {
  testonly = true
  public_deps = [
    "//topaz/bin/crasher_dart",
  ]
}

group("fidl_compatibility_test") {
  testonly = true
  public_deps = [
    "//garnet/packages/tests:fidl_compatibility_test_bin",
    "//garnet/packages/tests:fidl_compatibility_test_server_cpp",
    "//garnet/packages/tests:fidl_compatibility_test_server_go",
    "//garnet/packages/tests:fidl_compatibility_test_server_rust",
    "//topaz/bin/fidl_compatibility_test:package",
    "//topaz/packages/tests:fidl_compatibility_test_server_dart",
  ]
}

group("web_runner_tests") {
  testonly = true
  public_deps = [
    "//topaz/tests/web_runner_tests",
  ]
}

group("key_listener_test") {
  testonly = true
  public_deps = [
    "//topaz/lib/story_shell/examples/story_shell_test:key_listener_device_tests",
  ]
}

group("flutter_screencap_test") {
  testonly = true
  public_deps = [
    "//peridot/packages/prod:integration_testing",
    "//topaz/bin/flutter_screencap_test",
    "//topaz/packages/tests:flutter_screencap_test_app",
  ]
}

group("dart_target_integration_tests") {
  testonly = true
  public_deps = [
    "//topaz/packages/examples:fidl",
    "//topaz/public/dart/fuchsia_inspect/test/integration:dart_inspect_vmo_test",
    "//topaz/public/dart/fuchsia_inspect/test/integration:dart_inspect_vmo_test_writer",
    "//topaz/tests/dart_app_service_tests:dart_app_service_tests",
  ]
}

group("fidl_changes") {
  testonly = true
  public_deps = [
    "//topaz/tests/fidl-changes",
  ]
}

group("sledge") {
  testonly = true
  public_deps = [
    "//peridot/packages/tests:ledger",
    "//topaz/public/dart/sledge:sledge_integration_tests",
  ]
}

group("flutter_runner_tests") {
  testonly = true
  public_deps = [
    "//garnet/packages/prod:fonts",
    "//topaz/runtime/flutter_runner:flutter_runner_tests",
  ]
}
