# Copyright 2021 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_executable.gni")
import("//build/icu/icu_source_set.gni")
import("//build/icu/third_party_icu_headers.gni")

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

group("tests") {
  testonly = true
  deps = [ ":time-zone-info-service-lib-tests" ]
}

third_party_icu_headers("icu_headers") {
  icu_assembly = true
  headers = [
    "third_party/icu/source/common/unicode/errorcode.h",
    "third_party/icu/source/common/unicode/locid.h",
    "third_party/icu/source/common/unicode/unistr.h",
    "third_party/icu/source/common/unicode/utypes.h",
    "third_party/icu/source/i18n/unicode/calendar.h",
    "third_party/icu/source/i18n/unicode/timezone.h",
  ]
}

icu_source_set("time-zone-info-service-lib") {
  sources = [
    "time_zone_info_service.cc",
    "time_zone_info_service.h",
  ]

  icu_public_deps = [
    ":icu_headers",
    "//src/lib/icu_data/cpp",
  ]

  deps = [
    "//sdk/lib/fidl/cpp",
    "//sdk/lib/sys/cpp",
    "//sdk/lib/sys/service/cpp",
    "//sdk/lib/syslog/cpp",
    "//src/lib/fostr/fidl/fuchsia.intl",
    "//src/lib/fxl",
  ]

  public_deps = [ "//sdk/fidl/fuchsia.intl:fuchsia.intl_hlcpp" ]
}

executable("time-zone-info-service-lib-test-bin") {
  testonly = true
  output_name = "time-zone-info-service-lib-test"
  sources = [ "time_zone_info_service_test.cc" ]
  deps = [
    ":time-zone-info-service-lib",
    "//sdk/fidl/fuchsia.intl:fuchsia.intl_hlcpp",
    "//sdk/lib/sys/cpp",
    "//sdk/lib/sys/cpp/testing:unit",
    "//sdk/lib/sys/service/cpp",
    "//sdk/lib/syslog/cpp",
    "//src/lib/fostr/fidl/fuchsia.intl",
    "//src/lib/fxl/test:gtest_main",
    "//src/lib/icu:lib",
    "//src/lib/testing/loop_fixture",
    "//src/performance/trace/tests:component_context",
  ]
}

fuchsia_unittest_component("time-zone-info-service-lib-test") {
  deps = [ ":time-zone-info-service-lib-test-bin" ]
}

fuchsia_test_package("time-zone-info-service-lib-tests") {
  test_components = [ ":time-zone-info-service-lib-test" ]
  deps = [ "//src/intl:icudtl" ]
  test_specs = {
    log_settings = {
      max_severity = "WARN"
    }
  }
}
