translation_tests.cpp raw
1 // Copyright (c) 2023-present The Bitcoin Core developers
2 // Distributed under the MIT software license, see the accompanying
3 // file COPYING or http://www.opensource.org/licenses/mit-license.php.
4
5 #include <tinyformat.h>
6 #include <util/translation.h>
7
8 #include <boost/test/unit_test.hpp>
9
10 BOOST_AUTO_TEST_SUITE(translation_tests)
11
12 static TranslateFn translate{[](const char * str) { return strprintf("t(%s)", str); }};
13
14 // Custom translation function _t(), similar to _() but internal to this test.
15 consteval auto _t(util::TranslatedLiteral str)
16 {
17 str.translate_fn = &translate;
18 return str;
19 }
20
21 BOOST_AUTO_TEST_CASE(translation_namedparams)
22 {
23 bilingual_str arg{"original", "translated"};
24 bilingual_str result{strprintf(_t("original [%s]"), arg)};
25 BOOST_CHECK_EQUAL(result.original, "original [original]");
26 BOOST_CHECK_EQUAL(result.translated, "t(original [translated])");
27
28 util::TranslatedLiteral arg2{"original", &translate};
29 bilingual_str result2{strprintf(_t("original [%s]"), arg2)};
30 BOOST_CHECK_EQUAL(result2.original, "original [original]");
31 BOOST_CHECK_EQUAL(result2.translated, "t(original [t(original)])");
32 }
33
34 BOOST_AUTO_TEST_SUITE_END()
35