drop reference to obsolete symbol from unit test
[libi2ncommon] / test / test_i18n.cpp
CommitLineData
8652a3df
TJ
1/*
2The software in this package is distributed under the GNU General
3Public License version 2 (with a special exception described below).
4
5A copy of GNU General Public License (GPL) is included in this distribution,
6in the file COPYING.GPL.
7
8As a special exception, if other files instantiate templates or use macros
9or inline functions from this file, or you compile this file and link it
10with other works to produce a work based on this file, this file
11does not by itself cause the resulting work to be covered
12by the GNU General Public License.
13
14However the source code for this file must still be made available
15in accordance with section (3) of the GNU General Public License.
16
17This exception does not invalidate any other reasons why a work based
18on this file might be covered by the GNU General Public License.
19*/
20/**
21 i18n unit tests
22
23 @copyright Intra2net AG
24*/
25
26#define BOOST_TEST_DYN_LINK
27#include <boost/test/unit_test.hpp>
28
29#include "i18n.h"
30#include <vector>
31#include <string>
32
33using namespace std;
34
35BOOST_AUTO_TEST_SUITE(TestI18n)
36
37BOOST_AUTO_TEST_CASE(GetString)
38{
39 vector<string> data;
40 data.push_back("dummy");
41
42 string result = i18n_get_string("$0 test string", data);
43
44 BOOST_CHECK_EQUAL("dummy test string", result);
45}
46
47BOOST_AUTO_TEST_CASE(MissingParameter)
48{
49 vector<string> data;
50 string result = i18n_get_string("$0 test string", data);
51
52 BOOST_CHECK_EQUAL("i18n parameter error: missing variable ->$0<- in string ->$0 test string<-", result);
53}
54
55BOOST_AUTO_TEST_CASE(MissingNumberAfterDollar)
56{
57 vector<string> data;
58 string result = i18n_get_string("$ test string", data);
59
60 BOOST_CHECK_EQUAL("i18n syntax error: $ without number at pos ->0<- in string ->$ test string<-", result);
61}
62
63BOOST_AUTO_TEST_CASE(MissingNumberAfterDollar2)
64{
65 vector<string> data;
66 string result = i18n_get_string("$x test string", data);
67
68 BOOST_CHECK_EQUAL("i18n syntax error: $ without number at pos ->0<- in string ->$x test string<-", result);
69}
70
71BOOST_AUTO_TEST_CASE(BrokenNumberAfterDollar)
72{
73 vector<string> data;
74 string result = i18n_get_string("$x test string", data);
75
76 BOOST_CHECK_EQUAL("i18n syntax error: $ without number at pos ->0<- in string ->$x test string<-", result);
77}
78
79BOOST_AUTO_TEST_CASE(KeepEscapedDollarSign)
80{
81 vector<string> data;
82 data.push_back("dummy");
83
84 string result = i18n_get_string("$0 $$ test string", data);
85
86 BOOST_CHECK_EQUAL("dummy $ test string", result);
87}
88
4e888860
TJ
89BOOST_AUTO_TEST_CASE(StdStringInput)
90{
91 vector<string> data;
92 data.push_back("dummy");
93
94 const string input = "$0 test string";
95 string result = i18n_get_string(input, data);
96
97 BOOST_CHECK_EQUAL("dummy test string", result);
98}
99
0f10aaca
TJ
100BOOST_AUTO_TEST_CASE(PluralString0)
101{
102 // Zero elements get the plural message (in the default "plural" configuration)
103 BOOST_CHECK_EQUAL("xxx new messages", i18n_plural("One new message", "xxx new messages", 0));
104}
105
106BOOST_AUTO_TEST_CASE(PluralString1)
107{
108 BOOST_CHECK_EQUAL("One new message", i18n_plural("One new message", "xxx new messages", 1));
109}
110
111BOOST_AUTO_TEST_CASE(PluralString2)
112{
113 BOOST_CHECK_EQUAL("xxx new messages", i18n_plural("One new message", "xxx new messages", 2));
114}
115
116BOOST_AUTO_TEST_CASE(PluralStringWithParamter1)
117{
118 vector<string> data;
119 data.push_back("1");
120
121 BOOST_CHECK_EQUAL("1 new message", i18n_get_string(i18n_plural("$0 new message", "$0 new messages", 1), data));
122}
123
124BOOST_AUTO_TEST_CASE(PluralStringWithParamter2)
125{
126 vector<string> data;
127 data.push_back("500");
128
129 BOOST_CHECK_EQUAL("500 new messages", i18n_get_string(i18n_plural("$0 new message", "$0 new messages", 500), data));
130}
131
e11a40a2
CH
132BOOST_AUTO_TEST_CASE(Convenience0)
133{
134 string result = i18n_get_string("$0!", "Energize");
135 BOOST_CHECK_EQUAL("Energize!", result);
136}
137
138BOOST_AUTO_TEST_CASE(Convenience1)
139{
140 string result = i18n_get_string("Make $0 $1!", "it", "so");
141 BOOST_CHECK_EQUAL("Make it so!", result);
142}
143
144BOOST_AUTO_TEST_CASE(Convenience2)
145{
146 string result = i18n_get_string("$0, $1, $2!", "Tea", "Earl Grey", "hot");
147 BOOST_CHECK_EQUAL("Tea, Earl Grey, hot!", result);
148}
149
0c16406d
CH
150BOOST_AUTO_TEST_CASE(Noop)
151{
152 BOOST_CHECK_EQUAL(i18n_noop("Test"), "Test");
153 BOOST_CHECK_EQUAL(i18n_noop(" Test "), " Test ");
0c16406d
CH
154}
155
8652a3df 156BOOST_AUTO_TEST_SUITE_END()