# 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/test/test_package.gni")

group("lib") {
  public_deps = [
    "annotation",
    "configuration",
    "focus_chain",
    "gesture_manager",
    "magnifier",
    "screen_reader",
    "screen_reader/focus",
    "screen_reader/util",
    "semantics",
    "semantics/util",
    "tts",
    "view",
  ]
}

group("tests") {
  testonly = true

  deps = [
    ":a11y_lib_tests",
    "semantics/tests:integration",
  ]
}

test_package("a11y_lib_tests") {
  deps = [
    "annotation/tests",
    "configuration/tests",
    "focus_chain/tests",
    "gesture_manager/arena/tests",
    "gesture_manager/recognizers/tests",
    "gesture_manager/tests",
    "magnifier/tests",
    "screen_reader/focus/tests",
    "screen_reader/i18n/tests",
    "screen_reader/tests",
    "screen_reader/util/tests",
    "semantics/tests:unit",
    "semantics/util/tests",
    "tts/tests",
    "util/tests",
    "view/tests",
    "//src/ui/a11y/lib/screen_reader/i18n:resources",
  ]
  resources = [
    # needed for semantics_test
    {
      path = "semantics/tests/testdata/semantic_tree_single_node.json"
      dest = "semantic_tree_single_node.json"
    },
    {
      path = "semantics/tests/testdata/semantic_tree_even_nodes.json"
      dest = "semantic_tree_even_nodes.json"
    },
    {
      path = "semantics/tests/testdata/semantic_tree_odd_nodes.json"
      dest = "semantic_tree_odd_nodes.json"
    },
    {
      path = "semantics/tests/testdata/deleted_subtree_even_nodes.json"
      dest = "deleted_subtree_even_nodes.json"
    },
    {
      path = "semantics/tests/testdata/cyclic_semantic_tree.json"
      dest = "cyclic_semantic_tree.json"
    },
    {
      path = "semantics/tests/testdata/semantic_tree_not_parseable.json"
      dest = "semantic_tree_not_parseable.json"
    },

    # Needed by screen_reader/i18n tests.
    {
      path = rebase_path("$target_gen_dir/screen_reader/i18n/en/l10n.json")
      dest = "assets/locales/en/l10n.json"
    },

    # [START icudata_resource]
    {
      # Fuchsia's ICU does not have libicudata.so, and the locale data MUST
      # be loaded from a file instead.
      path = rebase_path("//third_party/icu/common/icudtl.dat")
      dest = "icudtl.dat"
    },
  ]

  tests = [
    {
      name = "annotation_tests"
      environments = basic_envs
    },
    {
      name = "configuration_tests"
      environments = basic_envs
    },
    {
      name = "focus_chain_manager_tests"
      environments = basic_envs
    },
    {
      name = "gesture_arena_tests"
      environments = basic_envs
    },
    {
      name = "gesture_manager_tests"
      environments = basic_envs
    },
    {
      name = "gesture_recognizers_tests"
      environments = basic_envs
    },
    {
      name = "magnifier_tests"
      environments = basic_envs
    },
    {
      name = "i18n_tests"
      environments = basic_envs
    },
    {
      name = "screen_reader_tests"
      environments = basic_envs
    },
    {
      name = "screen_reader_util_tests"
      environments = basic_envs
    },
    {
      name = "focus_manager_tests"
      environments = basic_envs
    },
    {
      name = "semantics_tests"
      environments = basic_envs
    },
    {
      name = "semantics_util_tests"
      environments = basic_envs
    },
    {
      name = "tts_manager_tests"
      environments = basic_envs
    },
    {
      name = "util_tests"
      environments = basic_envs
    },
    {
      name = "view_tests"
      environments = basic_envs
    },
  ]
}
