Files

59 lines
2.6 KiB
C++

// SPDX-License-Identifier: GPL-3.0-or-later
// Copyright (C) 2026 steredbits and Pelagia contributors
// Language codes: mapping between ISO 639-1/639-2 and language names.
#include "util/languages.h"
#include "test_framework.h"
int main() {
// Same language in all its forms.
CHECK(util::same_language("fre", "fra"));
CHECK(util::same_language("fr", "fre"));
CHECK(util::same_language("FR", "fra"));
CHECK(util::same_language("fr-FR", "fre"));
CHECK(util::same_language("fr_CA", "fr"));
CHECK(util::same_language("ger", "deu"));
CHECK(util::same_language("chi", "zh-CN"));
CHECK(!util::same_language("fre", "eng"));
CHECK(!util::same_language("", "fre"));
CHECK(!util::same_language("", ""));
// Unknown code: compared as is, case-insensitive.
CHECK(util::same_language("tlh", "TLH"));
CHECK(!util::same_language("tlh", "xyz"));
CHECK_EQ(util::canonical_language("fra"), "fre");
CHECK_EQ(util::canonical_language("XYZ"), "xyz");
// Undetermined language (server list).
CHECK(util::language_undefined(""));
CHECK(util::language_undefined("und"));
CHECK(util::language_undefined("UND"));
CHECK(util::language_undefined("mul"));
CHECK(util::language_undefined("zxx"));
CHECK(util::language_undefined("unknown"));
CHECK(util::language_undefined("undetermined"));
CHECK(!util::language_undefined("fre"));
// Language names, in the requested language and in the interface language.
CHECK_EQ(util::language_name("fre", util::Lang::Fr), "Français");
CHECK_EQ(util::language_name("fra", util::Lang::Fr), "Français");
CHECK_EQ(util::language_name("eng", util::Lang::Fr), "Anglais");
CHECK_EQ(util::language_name("jpn", util::Lang::Fr), "Japonais");
CHECK_EQ(util::language_name("und", util::Lang::Fr), "Langue inconnue");
CHECK_EQ(util::language_name("", util::Lang::Fr), "Langue inconnue");
CHECK_EQ(util::language_name("tlh", util::Lang::Fr), "TLH");
CHECK_EQ(util::language_name("fre", util::Lang::En), "French");
CHECK_EQ(util::language_name("fra", util::Lang::En), "French");
CHECK_EQ(util::language_name("eng", util::Lang::En), "English");
CHECK_EQ(util::language_name("jpn", util::Lang::En), "Japanese");
CHECK_EQ(util::language_name("und", util::Lang::En), "Unknown language");
CHECK_EQ(util::language_name("tlh", util::Lang::En), "TLH");
CHECK_EQ(util::language_name("fre"), "French"); // English by default
{
util::ScopedLanguage fr(util::Lang::Fr);
CHECK_EQ(util::language_name("fre"), "Français");
}
CHECK_EQ(util::language_name("fre"), "French");
return testfw::test_failures();
}