# 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/rust/rustc_binary.gni")
import("//build/rust/rustc_library.gni")
import("//src/lib/icu/tzdata/icu_tzdata_config_data.gni")

rustc_library("icu_data") {
  edition = "2018"
  with_unit_tests = true

  deps = [
    "//src/lib/fdio/rust:fdio",
    "//src/lib/zircon/rust:fuchsia-zircon",
    "//third_party/rust_crates:anyhow",
    "//third_party/rust_crates:lazy_static",
    "//third_party/rust_crates:rust_icu_common",
    "//third_party/rust_crates:rust_icu_sys",
    "//third_party/rust_crates:rust_icu_ucal",
    "//third_party/rust_crates:rust_icu_udata",
    "//third_party/rust_crates:rust_icu_uenum",
    "//third_party/rust_crates:thiserror",
  ]

  test_deps = [ "//third_party/rust_crates:matches" ]

  non_rust_deps = [
    "../../cpp:icu_data_cpp",
    "//third_party/icu",
    "//third_party/icu:icudata",
  ]

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

icu_tzdata_config_data("icu_tzdata_for_icu_data_rust_tests") {
  for_pkg = "icu_data_rust_tests"
}

resource("icu_data_test_files") {
  sources = [
    "//third_party/icu/common/icudtl.dat",
    "test_bad_revision.txt",
  ]
  outputs = [ "data/{{source_file_part}}" ]
}

fuchsia_unittest_package("icu_data_rust_tests") {
  manifest = "meta/icu_data_lib_test.cmx"
  deps = [
    ":icu_data_test",
    ":icu_data_test_files",
    ":icu_tzdata_for_icu_data_rust_tests",
  ]
}

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