# 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/dist/resource.gni")
import("//build/icu/icu_rustc_library.gni")
import("//src/lib/icu/tzdata/icu_tzdata_resource.gni")

icu_rustc_library("icu_data") {
  edition = "2021"
  with_unit_tests = true

  icu_deps = [
    "//third_party/rust_crates:rust_icu_common",
    "//third_party/rust_crates:rust_icu_ucal",
    "//third_party/rust_crates:rust_icu_udata",
  ]

  deps = [
    "//src/lib/zircon/rust:fuchsia-zircon",
    "//third_party/rust_crates:anyhow",
    "//third_party/rust_crates:lazy_static",
    "//third_party/rust_crates:thiserror",
  ]

  icu_test_deps = [ "//third_party/rust_crates:rust_icu_uenum" ]
  test_deps = [ "//third_party/rust_crates:assert_matches" ]

  sources = [ "src/lib.rs" ]
}

icu_tzdata_resource("icu_tzdata_for_icu_data_rust_tests") {
  testonly = true
}

resource("icu_data_test_files") {
  sources = [ "test_inconsistent_revision.txt" ]
  outputs = [ "data/{{source_file_part}}" ]
}

fuchsia_unittest_package("icu_data_rust_tests") {
  deps = [
    ":icu_data_test",
    ":icu_data_test_files",
    ":icu_tzdata_for_icu_data_rust_tests",
    "//src/intl:icudtl",
  ]
}

group("tests") {
  testonly = true
  deps = [ ":icu_data_rust_tests" ]
}
