summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFelix Morgner <felix.morgner@gmail.com>2025-06-08 11:41:37 +0200
committerFelix Morgner <felix.morgner@gmail.com>2025-06-08 11:41:37 +0200
commit8f7d79ed8433bd4809ecef12e6c8c9c015cd903b (patch)
tree1a4756eb2822541b5c0cbcb221debd7e92aaa3bb
parentf7f51f391989650de7d277031db87dc6053cf7d0 (diff)
downloadturns-8f7d79ed8433bd4809ecef12e6c8c9c015cd903b.tar.xz
turns-8f7d79ed8433bd4809ecef12e6c8c9c015cd903b.zip
gui: simplify message translation tests
-rw-r--r--gui/tests/messages.cpp106
1 files changed, 57 insertions, 49 deletions
diff --git a/gui/tests/messages.cpp b/gui/tests/messages.cpp
index d0280af..74fbefa 100644
--- a/gui/tests/messages.cpp
+++ b/gui/tests/messages.cpp
@@ -12,66 +12,74 @@
#include <clocale>
#include <format>
-#include <string>
+#include <utility>
+
+#define LABEL(varname) \
+ std::pair \
+ { \
+ #varname, varname \
+ }
namespace Turns::gui::tests
{
- TEST_CASE("Translated messages")
+ SCENARIO("Text strings are translated")
{
auto locale = GENERATE("de_CH.UTF-8", "de_DE.UTF-8", "de_AT.UTF-8");
- setlocale(LC_ALL, locale);
- SECTION(std::format("Locale '{}'", locale))
+ GIVEN(std::format("The locale '{}' is active", locale))
{
- auto message = GENERATE(message::add_participant,
- message::cancel,
- message::clear,
- message::delete_participant,
- message::disposition,
- message::disposition_colors,
- message::edit_participant,
- message::end_turn_order,
- message::finish,
- message::flow,
- message::friendly,
- message::hostile,
- message::main_menu,
- message::mark_as_defeated,
- // a better solution is required to test the following entry:
- // name,
- message::new_turn_order_file_name,
- message::next_participant,
- message::no_active_turn_order,
- message::open,
- message::preferences,
- message::preferences_mnemonic,
- message::previous_participant,
- message::priority,
- message::priority_number,
- message::question_clear_turn_order,
- message::quit,
- message::reset,
- message::save,
- message::save_as,
- message::saving_failed_format,
- message::secret,
- message::skip_defeated,
- message::start_turn_order,
- message::stop,
- message::stop_and_clear,
- message::stop_turn_order,
- message::successfully_opened_format,
- message::successfully_saved_format,
- message::round_number,
- message::turns,
- message::turns_files);
+ setlocale(LC_ALL, locale);
+ auto [label, variable] = GENERATE(LABEL(message::add_participant),
+ LABEL(message::cancel),
+ LABEL(message::clear),
+ LABEL(message::delete_participant),
+ LABEL(message::disposition),
+ LABEL(message::disposition_colors),
+ LABEL(message::edit_participant),
+ LABEL(message::end_turn_order),
+ LABEL(message::finish),
+ LABEL(message::flow),
+ LABEL(message::friendly),
+ LABEL(message::hostile),
+ LABEL(message::main_menu),
+ LABEL(message::mark_as_defeated),
+ LABEL(message::name),
+ LABEL(message::new_turn_order_file_name),
+ LABEL(message::next_participant),
+ LABEL(message::no_active_turn_order),
+ LABEL(message::open),
+ LABEL(message::preferences),
+ LABEL(message::preferences_mnemonic),
+ LABEL(message::previous_participant),
+ LABEL(message::priority),
+ LABEL(message::priority_number),
+ LABEL(message::question_clear_turn_order),
+ LABEL(message::quit),
+ LABEL(message::reset),
+ LABEL(message::save),
+ LABEL(message::save_as),
+ LABEL(message::saving_failed_format),
+ LABEL(message::secret),
+ LABEL(message::skip_defeated),
+ LABEL(message::start_turn_order),
+ LABEL(message::stop),
+ LABEL(message::stop_and_clear),
+ LABEL(message::stop_turn_order),
+ LABEL(message::successfully_opened_format),
+ LABEL(message::successfully_saved_format),
+ LABEL(message::round_number),
+ LABEL(message::turns),
+ LABEL(message::turns_files));
- SECTION(std::format("has a translation for '{}'", message))
+ THEN(std::format("{} is translated", label))
{
- REQUIRE(std::string{gettext(message)} != message);
+ /* gettext will return it's argument if there is no translation found in any of the currently active catalogues. Therefore, if no
+ * translation has been found, the pointer comparison will yield true. Otherwise, a different pointer will be returned, indicating that
+ * a translation was found.*/
+ REQUIRE_FALSE(gettext(variable) == variable);
}
}
}
-} // namespace Turns::messages \ No newline at end of file
+} // namespace Turns::gui::tests \ No newline at end of file