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