blob: dddca90303dad1cf0c1fbfd65a4f3b381ec3c2fa [file] [log] [blame]
// Copyright 2013 The Flutter 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 <fuchsia/intl/cpp/fidl.h>
#include "flutter/fml/icu_util.h"
#include "gtest/gtest.h"
#include "fuchsia_intl.h"
using fuchsia::intl::CalendarId;
using fuchsia::intl::LocaleId;
using fuchsia::intl::Profile;
using fuchsia::intl::TemperatureUnit;
using fuchsia::intl::TimeZoneId;
namespace flutter_runner {
namespace {
class FuchsiaIntlTest : public testing::Test {
public:
static void SetUpTestCase() {
testing::Test::SetUpTestCase();
// The icudtl data must be present as a resource in the package for this
// load to succeed.
fml::icu::InitializeICU("/pkg/data/icudtl.dat");
}
};
TEST_F(FuchsiaIntlTest, MakeLocalizationPlatformMessageData_SimpleLocale) {
Profile profile{};
profile.set_locales({LocaleId{.id = "en-US"}});
const std::string expected =
R"({"method":"setLocale","args":["en","US","",""]})";
const auto actual = MakeLocalizationPlatformMessageData(profile);
ASSERT_EQ(expected, std::string(actual.GetMapping(),
actual.GetMapping() + actual.GetSize()));
}
TEST_F(FuchsiaIntlTest, MakeLocalizationPlatformMessageData_OneLocale) {
Profile profile{};
profile
.set_locales({LocaleId{.id = "en-US-u-ca-gregory-fw-sun-hc-h12-ms-"
"ussystem-nu-latn-tz-usnyc"}})
.set_calendars({CalendarId{.id = "und-u-gregory"}})
.set_time_zones({TimeZoneId{.id = "America/New_York"}})
.set_temperature_unit(TemperatureUnit::FAHRENHEIT);
const std::string expected =
R"({"method":"setLocale","args":["en","US","",""]})";
const auto actual = MakeLocalizationPlatformMessageData(profile);
ASSERT_EQ(expected, std::string(actual.GetMapping(),
actual.GetMapping() + actual.GetSize()));
}
TEST_F(FuchsiaIntlTest, MakeLocalizationPlatformMessageData_MultipleLocales) {
Profile profile{};
profile
.set_locales({LocaleId{.id = "en-US-u-ca-gregory-fw-sun-hc-h12-ms-"
"ussystem-nu-latn-tz-usnyc"},
LocaleId{.id = "sl-Latn-IT-nedis"},
LocaleId{.id = "zh-Hans"}, LocaleId{.id = "sr-Cyrl-CS"}})
.set_calendars({CalendarId{.id = "und-u-gregory"}})
.set_time_zones({TimeZoneId{.id = "America/New_York"}})
.set_temperature_unit(TemperatureUnit::FAHRENHEIT);
const std::string expected =
R"({"method":"setLocale","args":["en","US","","","sl","IT","Latn","nedis",)"
R"("zh","","Hans","","sr","CS","Cyrl",""]})";
const auto actual = MakeLocalizationPlatformMessageData(profile);
ASSERT_EQ(expected, std::string(actual.GetMapping(),
actual.GetMapping() + actual.GetSize()));
}
} // namespace
} // namespace flutter_runner