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

# Library for working with collections of Unicode code points.
rustc_library("char_collection") {
  edition = "2018"
  with_unit_tests = true

  deps = [
    "//src/lib/intl/unicode_utils/unicode_blocks",
    "//third_party/rust_crates:anyhow",
    "//third_party/rust_crates:paste",
    "//third_party/rust_crates:thiserror",
    "//third_party/rust_crates:unic-char-range",
    "//third_party/rust_crates:unic-ucd-block",
  ]

  sources = [
    "src/char_collection.rs",
    "src/conversions.rs",
    "src/lib.rs",
    "src/macros.rs",
    "src/operators.rs",
  ]
}

test_package("char_collection_tests") {
  deps = [ ":char_collection_test" ]

  tests = [
    {
      name = "char_collection_lib_test"
    },
  ]
}

group("tests") {
  testonly = true
  public_deps = [ ":char_collection_tests" ]
}
