diff --git a/test/i18n.cpp b/test/i18n.cpp new file mode 100644 index 000000000..4e891d6e9 --- /dev/null +++ b/test/i18n.cpp @@ -0,0 +1,50 @@ +#include "../src/server/i18n.h" +#include "gtest/gtest.h" + +using namespace kiwix; + +TEST(ParameterizedMessage, parameterlessMessages) +{ + { + const ParameterizedMessage msg("404-page-title", {}); + + EXPECT_EQ(msg.getText("en"), "Content not found"); + EXPECT_EQ(msg.getText("test"), "[I18N TESTING] Not Found - Try Again"); + } + + { + // Make sure that msgId influences the result of getText() + const ParameterizedMessage msg("random-page-button-text", {}); + + EXPECT_EQ(msg.getText("en"), "Go to a randomly selected page"); + EXPECT_EQ(msg.getText("test"), "[I18N TESTING] I am tired of determinism"); + } + + { + // Demonstrate that unwanted parameters are silently ignored + const ParameterizedMessage msg("404-page-title", {{"abc", "xyz"}}); + + EXPECT_EQ(msg.getText("en"), "Content not found"); + EXPECT_EQ(msg.getText("test"), "[I18N TESTING] Not Found - Try Again"); + } +} + +TEST(ParameterizedMessage, messagesWithParameters) +{ + { + const ParameterizedMessage msg("filter-by-tag", + {{"TAG", "scifi"}} + ); + + EXPECT_EQ(msg.getText("en"), "Filter by tag \"scifi\""); + EXPECT_EQ(msg.getText("test"), "Filter [I18N] by [TESTING] tag \"scifi\""); + } + + { + // Omitting expected parameters amounts to using empty values for them + const ParameterizedMessage msg("filter-by-tag", {}); + + EXPECT_EQ(msg.getText("en"), "Filter by tag \"\""); + EXPECT_EQ(msg.getText("test"), "Filter [I18N] by [TESTING] tag \"\""); + } +} diff --git a/test/meson.build b/test/meson.build index 72d7b7331..5ed11246c 100644 --- a/test/meson.build +++ b/test/meson.build @@ -13,7 +13,8 @@ tests = [ 'name_mapper', 'opds_catalog', 'server_helper', - 'lrucache' + 'lrucache', + 'i18n' ] if build_machine.system() != 'windows'