blob: d7d80b1a6f42c2f52bcc89b8ab08ced2eb6ff295 [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 "examples/intl/tz_version_parrot/cpp/icu_headers.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/tzdata";
// Path to file containing the expected time zone database revision ID.
constexpr char kDefaultTzRevisionFilePath[] = "/config/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/tzdata";
// 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