# 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_modular_flutter:fuchsia_modular_flutter_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_modular_test:fuchsia_modular_test_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",
  ]
}
