# 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("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/bin/settings:settings_tests($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/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/story_shell_labs:layout_unittests($host_toolchain)",
    "//topaz/public/dart/widgets:dart_widget_tests($host_toolchain)",
    "//topaz/public/lib/display/flutter:display_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: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",
    "//topaz/packages/tests:fidl_compatibility_test_server_dart",
    "//topaz/packages/tests:fidl_dangerous_identifiers",
    "//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",
    "//topaz/bin/fidlgen_dart:fidlgen_dart_backend_ir_test($host_toolchain)",
  ]
}

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_foo_test_server",
    "//topaz/public/dart/fuchsia_services:fuchsia_services_package_integration_tests",
    "//topaz/public/dart/fuchsia_vfs:fuchsia_vfs_package_unittests",
    "//topaz/runtime/dart/utils:run_vmservice_object_tests",
  ]
}

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_topaz") {
  testonly = true
  public_deps = [
    "//garnet/packages/tests:fidl_compatibility_test_server_cpp",
    "//garnet/packages/tests:fidl_compatibility_test_server_go",
    "//garnet/packages/tests:fidl_compatibility_test_server_llcpp",
    "//garnet/packages/tests:fidl_compatibility_test_server_rust",
    "//topaz/bin/fidl_compatibility_test:fidl_compatibility_test_topaz",
    "//topaz/packages/tests:fidl_compatibility_test_server_dart",
  ]
}

group("web_runner_tests") {
  testonly = true
  public_deps = [
    "//topaz/packages/prod:web_runner",
    "//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",
  ]
}

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

group("fidl_dangerous_identifiers") {
  testonly = true
  public_deps = [
    "//topaz/tests/fidl-dangerous-identifiers",
  ]
}

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",
  ]
}

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