blob: a2602f947fd94fdf98059ecd1aac4dc9e1a3d0ac [file] [log] [blame]
// 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.
#include <zircon/errors.h>
#include <zircon/types.h>
#include <iostream>
#include <gtest/gtest.h>
#include "src/lib/files/directory.h"
// [START imports]
#include "src/lib/icu_data/cpp/icu_data.h"
// [END imports]
#include "third_party/icu/source/common/unicode/utypes.h"
#include "third_party/icu/source/i18n/unicode/timezone.h"
using icu::TimeZone;
namespace {
TEST(TzVersionParrotTest, NoTzResFiles) {
// [START loader_example]
const auto result = icu_data::Initialize();
ASSERT_EQ(result, ZX_OK) << "icu_data::Initialize failed";
// [END loader_example]
UErrorCode err = U_ZERO_ERROR;
const char* version = TimeZone::getTZDataVersion(err);
ASSERT_EQ(err, U_ZERO_ERROR) << "Error: " << u_errorName(err);
std::cout << "Squawk! TZ version is: " << version << std::endl;
}
TEST(TzVersionParrotTest, WithTzResFiles) {
// [START loader_config_example]
// Default directory for timezone .res files
constexpr char kDefaultTzdataDir[] = "/config/data/tzdata/icu/44/le";
// Path to file containing the expected time zone database revision ID.
constexpr char kDefaultTzRevisionFilePath[] = "/config/data/tzdata/revision.txt";
ASSERT_TRUE(files::IsDirectory(kDefaultTzdataDir))
<< "Error: tzdata directory \"" << kDefaultTzdataDir << "\" doesn't exist.";
const auto result = icu_data::InitializeWithTzResourceDirAndValidate(kDefaultTzdataDir,
kDefaultTzRevisionFilePath);
ASSERT_EQ(result, ZX_OK) << "icu_data::InitializeWithTzResourceDirAndValidate failed";
// [END loader_config_example]
UErrorCode err = U_ZERO_ERROR;
const char* version = TimeZone::getTZDataVersion(err);
ASSERT_EQ(err, U_ZERO_ERROR) << "Error: " << u_errorName(err);
std::cout << "Squawk! TZ version is: " << version << std::endl;
}
TEST(TzVersionParrotTest, WithTzResFilesWrongRevision) {
// Default directory for timezone .res files
constexpr char kDefaultTzdataDir[] = "/config/data/tzdata/icu/44/le";
// Path to file containing the expected time zone database revision ID.
constexpr char kLocalTzRevisionFilePath[] = "/pkg/data/newer_revision.txt";
ASSERT_TRUE(files::IsDirectory(kDefaultTzdataDir))
<< "Error: tzdata directory \"" << kDefaultTzdataDir << "\" doesn't exist.";
const auto result =
icu_data::InitializeWithTzResourceDirAndValidate(kDefaultTzdataDir, kLocalTzRevisionFilePath);
ASSERT_EQ(result, ZX_ERR_IO_DATA_INTEGRITY)
<< "icu_data::InitializeWithTzResourceDirAndValidate failed";
UErrorCode err = U_ZERO_ERROR;
const char* version = TimeZone::getTZDataVersion(err);
ASSERT_EQ(err, U_ZERO_ERROR) << "Error: " << u_errorName(err);
std::cout << "Squawk! TZ version is: " << version << std::endl;
}
} // namespace