diff options
| author | Felix Morgner <felix.morgner@gmail.com> | 2025-06-08 11:41:37 +0200 |
|---|---|---|
| committer | Felix Morgner <felix.morgner@gmail.com> | 2025-06-08 11:41:37 +0200 |
| commit | 8f7d79ed8433bd4809ecef12e6c8c9c015cd903b (patch) | |
| tree | 1a4756eb2822541b5c0cbcb221debd7e92aaa3bb /gui | |
| parent | f7f51f391989650de7d277031db87dc6053cf7d0 (diff) | |
| download | turns-8f7d79ed8433bd4809ecef12e6c8c9c015cd903b.tar.xz turns-8f7d79ed8433bd4809ecef12e6c8c9c015cd903b.zip | |
gui: simplify message translation tests
Diffstat (limited to 'gui')
| -rw-r--r-- | gui/tests/messages.cpp | 106 |
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 |
