From 96b6f41244497864104431b72e49e799d116c41f Mon Sep 17 00:00:00 2001 From: Veloman Yunkan Date: Sun, 7 Jan 2024 16:47:01 +0400 Subject: [PATCH] Added i18n unit test --- test/i18n.cpp | 50 ++++++++++++++++++++++++++++++++++++++++++++++++ test/meson.build | 3 ++- 2 files changed, 52 insertions(+), 1 deletion(-) create mode 100644 test/i18n.cpp 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'