summaryrefslogtreecommitdiffstats
path: root/tests/core/string/test_translation.h
diff options
context:
space:
mode:
authorandybarcia <andybarcia4@gmail.com>2021-03-19 19:50:53 +0100
committerRémi Verschelde <rverschelde@gmail.com>2023-06-19 12:47:44 +0200
commit553f4f8dcea90eb6241f7906479f5e7d24f02abd (patch)
tree2ea632a58c9d6d6921393ef2ad215d356bb760af /tests/core/string/test_translation.h
parent7188ed5f9140f6e2a38a24ac3364bba741b45135 (diff)
downloadredot-engine-553f4f8dcea90eb6241f7906479f5e7d24f02abd.tar.gz
Improve error reporting when parsing CSV translation file
Fixes #46682. Also fix unit test suite to separate generic FileAccess CSV testing from using CSV as translation. And add more CSV translation tests. Co-authored-by: Rémi Verschelde <rverschelde@gmail.com>
Diffstat (limited to 'tests/core/string/test_translation.h')
-rw-r--r--tests/core/string/test_translation.h32
1 files changed, 27 insertions, 5 deletions
diff --git a/tests/core/string/test_translation.h b/tests/core/string/test_translation.h
index 3519f3050b..bf9674d6b1 100644
--- a/tests/core/string/test_translation.h
+++ b/tests/core/string/test_translation.h
@@ -151,7 +151,7 @@ TEST_CASE("[OptimizedTranslation] Generate from Translation and read messages")
}
#ifdef TOOLS_ENABLED
-TEST_CASE("[Translation] CSV import") {
+TEST_CASE("[TranslationCSV] CSV import") {
Ref<ResourceImporterCSVTranslation> import_csv_translation = memnew(ResourceImporterCSVTranslation);
HashMap<StringName, Variant> options;
@@ -163,17 +163,39 @@ TEST_CASE("[Translation] CSV import") {
Error result = import_csv_translation->import(TestUtils::get_data_path("translations.csv"),
"", options, nullptr, &gen_files);
CHECK(result == OK);
- CHECK(gen_files.size() == 2);
+ CHECK(gen_files.size() == 4);
+
+ TranslationServer *ts = TranslationServer::get_singleton();
for (const String &file : gen_files) {
Ref<Translation> translation = ResourceLoader::load(file);
CHECK(translation.is_valid());
- TranslationServer::get_singleton()->add_translation(translation);
+ ts->add_translation(translation);
}
- TranslationServer::get_singleton()->set_locale("de");
+ ts->set_locale("en");
+
+ // `tr` can be called on any Object, we reuse TranslationServer for convenience.
+ CHECK(ts->tr("GOOD_MORNING") == "Good Morning");
+ CHECK(ts->tr("GOOD_EVENING") == "Good Evening");
+
+ ts->set_locale("de");
+
+ CHECK(ts->tr("GOOD_MORNING") == "Guten Morgen");
+ CHECK(ts->tr("GOOD_EVENING") == "Good Evening"); // Left blank in CSV, should source from 'en'.
+
+ ts->set_locale("ja");
+
+ CHECK(ts->tr("GOOD_MORNING") == String::utf8("おはよう"));
+ CHECK(ts->tr("GOOD_EVENING") == String::utf8("こんばんは"));
+
+ /* FIXME: This passes, but triggers a chain reaction that makes test_viewport
+ * and test_text_edit explode in a billion glittery Unicode particles.
+ ts->set_locale("fa");
- CHECK(Object().tr("GOOD_MORNING", "") == "Guten Morgen");
+ CHECK(ts->tr("GOOD_MORNING") == String::utf8("صبح بخیر"));
+ CHECK(ts->tr("GOOD_EVENING") == String::utf8("عصر بخیر"));
+ */
}
#endif // TOOLS_ENABLED