/ src / test / translation_tests.cpp
translation_tests.cpp
 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()