|
|
// Copyright (C) 2012 The Libphonenumber Authors
|
|
|
//
|
|
|
// Licensed under the Apache License, Version 2.0 (the "License");
|
|
|
// you may not use this file except in compliance with the License.
|
|
|
// You may obtain a copy of the License at
|
|
|
//
|
|
|
// http://www.apache.org/licenses/LICENSE-2.0
|
|
|
//
|
|
|
// Unless required by applicable law or agreed to in writing, software
|
|
|
// distributed under the License is distributed on an "AS IS" BASIS,
|
|
|
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
|
// See the License for the specific language governing permissions and
|
|
|
// limitations under the License.
|
|
|
//
|
|
|
// Author: Patrick Mezard
|
|
|
|
|
|
#include "phonenumbers/geocoding/mapping_file_provider.h"
|
|
|
|
|
|
#include <gtest/gtest.h> // NOLINT(build/include_order)
|
|
|
|
|
|
#include "phonenumbers/geocoding/geocoding_data.h"
|
|
|
|
|
|
namespace i18n {
|
|
|
namespace phonenumbers {
|
|
|
|
|
|
using std::string;
|
|
|
|
|
|
namespace {
|
|
|
|
|
|
#define COUNTRY_LANGUAGES(code, languagelist) \
|
|
|
const char* country_languages_##code[] = languagelist; \
|
|
|
const CountryLanguages country_##code = { \
|
|
|
country_languages_##code, \
|
|
|
sizeof(country_languages_##code) / sizeof(*country_languages_##code), \
|
|
|
};
|
|
|
|
|
|
// Array literals cannot be passed as regular macro arguments, the separating
|
|
|
// commas are interpreted as macro arguments separators. The following dummy
|
|
|
// variadic macro wraps the array commas, and appears as a single argument to an
|
|
|
// outer macro call.
|
|
|
#define ARRAY_WRAPPER(...) __VA_ARGS__
|
|
|
|
|
|
const int country_calling_codes[] = {1, 41, 65, 86};
|
|
|
|
|
|
const int country_calling_codes_size =
|
|
|
sizeof(country_calling_codes) / sizeof(*country_calling_codes);
|
|
|
|
|
|
COUNTRY_LANGUAGES(1, ARRAY_WRAPPER({"en"}));
|
|
|
COUNTRY_LANGUAGES(41, ARRAY_WRAPPER({"de", "fr", "it", "rm"}));
|
|
|
COUNTRY_LANGUAGES(65, ARRAY_WRAPPER({"en", "ms", "ta", "zh_Hans"}));
|
|
|
COUNTRY_LANGUAGES(86, ARRAY_WRAPPER({"en", "zh", "zh_Hant"}));
|
|
|
|
|
|
const CountryLanguages* country_languages[] = {
|
|
|
&country_1,
|
|
|
&country_41,
|
|
|
&country_65,
|
|
|
&country_86,
|
|
|
};
|
|
|
|
|
|
const CountryLanguages* test_get_country_languages(int index) {
|
|
|
return country_languages[index];
|
|
|
}
|
|
|
|
|
|
} // namespace
|
|
|
|
|
|
TEST(MappingFileProviderTest, TestGetFileName) {
|
|
|
MappingFileProvider provider(country_calling_codes,
|
|
|
country_calling_codes_size,
|
|
|
test_get_country_languages);
|
|
|
|
|
|
string filename;
|
|
|
EXPECT_EQ("1_en", provider.GetFileName(1, "en", "", "", &filename));
|
|
|
EXPECT_EQ("1_en", provider.GetFileName(1, "en", "", "US", &filename));
|
|
|
EXPECT_EQ("1_en", provider.GetFileName(1, "en", "", "GB", &filename));
|
|
|
EXPECT_EQ("41_de", provider.GetFileName(41, "de", "", "CH", &filename));
|
|
|
EXPECT_EQ("", provider.GetFileName(44, "en", "", "GB", &filename));
|
|
|
EXPECT_EQ("86_zh", provider.GetFileName(86, "zh", "", "", &filename));
|
|
|
EXPECT_EQ("86_zh", provider.GetFileName(86, "zh", "Hans", "", &filename));
|
|
|
EXPECT_EQ("86_zh", provider.GetFileName(86, "zh", "", "CN", &filename));
|
|
|
EXPECT_EQ("", provider.GetFileName(86, "", "", "CN", &filename));
|
|
|
EXPECT_EQ("86_zh", provider.GetFileName(86, "zh", "Hans", "CN", &filename));
|
|
|
EXPECT_EQ("86_zh", provider.GetFileName(86, "zh", "Hans", "SG", &filename));
|
|
|
EXPECT_EQ("86_zh", provider.GetFileName(86, "zh", "", "SG", &filename));
|
|
|
EXPECT_EQ("86_zh_Hant", provider.GetFileName(86, "zh", "", "TW", &filename));
|
|
|
EXPECT_EQ("86_zh_Hant", provider.GetFileName(86, "zh", "", "HK", &filename));
|
|
|
EXPECT_EQ("86_zh_Hant", provider.GetFileName(86, "zh", "Hant", "TW",
|
|
|
&filename));
|
|
|
}
|
|
|
|
|
|
} // namespace phonenumbers
|
|
|
} // namespace i18n
|