# 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/components.gni")
import("//build/icu/icu_group.gni")

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

group("tests") {
  testonly = true

  deps = [
    ":a11y-lib-tests",
    "magnifier/tests:integration-tests",
    "semantics/tests:integration",
    "view/tests:integration-tests",
  ]
}

resource("l10n_en_resource") {
  sources = [ "$target_gen_dir/screen_reader/i18n/en/l10n.json" ]
  outputs = [ "data/assets/locales/en/l10n.json" ]
  deps = [ "//src/ui/a11y/lib/screen_reader/i18n:resources" ]
}

# needed for semantics_test
resource("semantic_tree_data_resource") {
  sources = [
    "semantics/tests/testdata/cyclic_semantic_tree.json",
    "semantics/tests/testdata/deleted_subtree_even_nodes.json",
    "semantics/tests/testdata/semantic_tree_even_nodes.json",
    "semantics/tests/testdata/semantic_tree_not_parseable.json",
    "semantics/tests/testdata/semantic_tree_odd_nodes.json",
    "semantics/tests/testdata/semantic_tree_single_node.json",
  ]
  outputs = [ "data/{{source_file_part}}" ]
}

fuchsia_unittest_component("configuration-tests-component") {
  deps = [ "configuration/tests" ]
}

fuchsia_unittest_component("focus-chain-manager-tests-component") {
  deps = [ "focus_chain/tests" ]
}

fuchsia_unittest_component("gesture-arena-tests-component") {
  deps = [ "gesture_manager/arena/tests" ]
}

fuchsia_unittest_component("gesture-arena-v2-tests-component") {
  deps = [ "gesture_manager/arena_v2/tests" ]
}

fuchsia_unittest_component("gesture-recognizers-tests-component") {
  deps = [ "gesture_manager/recognizers/tests" ]
}

fuchsia_unittest_component("gesture-recognizers-v2-tests-component") {
  deps = [ "gesture_manager/recognizers_v2/tests" ]
}

fuchsia_unittest_component("gesture-manager-tests-component") {
  deps = [ "gesture_manager/tests" ]
}

fuchsia_unittest_component("magnifier-tests-component") {
  deps = [ "magnifier/tests" ]
}

fuchsia_unittest_component("focus-manager-tests-component") {
  deps = [ "screen_reader/focus/tests" ]
}

fuchsia_unittest_component("i18n-tests-component") {
  deps = [ "screen_reader/i18n/tests" ]
}

fuchsia_unittest_component("screen-reader-tests-component") {
  deps = [ "screen_reader/tests" ]
}

fuchsia_unittest_component("screen-reader-util-tests-component") {
  deps = [ "screen_reader/util/tests" ]
}

fuchsia_unittest_component("semantics-tests-component") {
  deps = [ "semantics/tests:unit" ]
}

fuchsia_unittest_component("semantics-util-tests-component") {
  deps = [ "semantics/util/tests" ]
}

fuchsia_unittest_component("tts-manager-tests-component") {
  deps = [ "tts/tests" ]
}

fuchsia_unittest_component("util-tests-component") {
  deps = [ "util/tests" ]
}

fuchsia_unittest_component("view-tests-component") {
  deps = [ "view/tests" ]
}

fuchsia_test_package("a11y-lib-tests") {
  deps = [
    # Fuchsia's ICU does not have libicudata.so, and the locale data MUST
    # be loaded from a file instead.
    ":l10n_en_resource",
    ":semantic_tree_data_resource",
    "//src/intl:icudtl",
    "//src/ui/a11y/lib/screen_reader/i18n:resources",
  ]

  test_components = [
    ":configuration-tests-component",
    ":focus-chain-manager-tests-component",
    ":gesture-arena-tests-component",
    ":gesture-arena-v2-tests-component",
    ":gesture-recognizers-tests-component",
    ":gesture-recognizers-v2-tests-component",
    ":gesture-manager-tests-component",
    ":magnifier-tests-component",
    ":focus-manager-tests-component",
    ":i18n-tests-component",
    ":screen-reader-tests-component",
    ":screen-reader-util-tests-component",
    ":semantics-tests-component",
    ":semantics-util-tests-component",
    ":tts-manager-tests-component",
    ":util-tests-component",
    ":view-tests-component",
  ]

  test_specs = {
    log_settings = {
      max_severity = "ERROR"
    }
  }
}
