annotate C++/tests/Utf8/main.cpp @ 334:0b576ee64d45

* Create brand new hierarchy * Rename DynLib to Dynlib * Remove some warnings
author David Demelier <markand@malikania.fr>
date Sun, 08 Mar 2015 14:26:33 +0100
parents C++/Tests/Utf8/main.cpp@e2a8cbf2dd79
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
307
David Demelier <markand@malikania.fr>
parents:
diff changeset
1 /*
David Demelier <markand@malikania.fr>
parents:
diff changeset
2 * main.cpp -- main test file for Utf8
David Demelier <markand@malikania.fr>
parents:
diff changeset
3 *
David Demelier <markand@malikania.fr>
parents:
diff changeset
4 * Copyright (c) 2013, 2014 David Demelier <markand@malikania.fr>
David Demelier <markand@malikania.fr>
parents:
diff changeset
5 *
David Demelier <markand@malikania.fr>
parents:
diff changeset
6 * Permission to use, copy, modify, and/or distribute this software for any
David Demelier <markand@malikania.fr>
parents:
diff changeset
7 * purpose with or without fee is hereby granted, provided that the above
David Demelier <markand@malikania.fr>
parents:
diff changeset
8 * copyright notice and this permission notice appear in all copies.
David Demelier <markand@malikania.fr>
parents:
diff changeset
9 *
David Demelier <markand@malikania.fr>
parents:
diff changeset
10 * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
David Demelier <markand@malikania.fr>
parents:
diff changeset
11 * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
David Demelier <markand@malikania.fr>
parents:
diff changeset
12 * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
David Demelier <markand@malikania.fr>
parents:
diff changeset
13 * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
David Demelier <markand@malikania.fr>
parents:
diff changeset
14 * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
David Demelier <markand@malikania.fr>
parents:
diff changeset
15 * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
David Demelier <markand@malikania.fr>
parents:
diff changeset
16 * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
David Demelier <markand@malikania.fr>
parents:
diff changeset
17 */
David Demelier <markand@malikania.fr>
parents:
diff changeset
18
David Demelier <markand@malikania.fr>
parents:
diff changeset
19 /*
David Demelier <markand@malikania.fr>
parents:
diff changeset
20 * /!\ Be sure to keep this file with UTF-8 encoding /!\
David Demelier <markand@malikania.fr>
parents:
diff changeset
21 */
David Demelier <markand@malikania.fr>
parents:
diff changeset
22
David Demelier <markand@malikania.fr>
parents:
diff changeset
23 #include <gtest/gtest.h>
David Demelier <markand@malikania.fr>
parents:
diff changeset
24
David Demelier <markand@malikania.fr>
parents:
diff changeset
25 #include <Utf8.h>
David Demelier <markand@malikania.fr>
parents:
diff changeset
26
David Demelier <markand@malikania.fr>
parents:
diff changeset
27 using namespace testing;
David Demelier <markand@malikania.fr>
parents:
diff changeset
28
David Demelier <markand@malikania.fr>
parents:
diff changeset
29 /* --------------------------------------------------------
David Demelier <markand@malikania.fr>
parents:
diff changeset
30 * Conversion UTF32 -> UTF8
David Demelier <markand@malikania.fr>
parents:
diff changeset
31 * -------------------------------------------------------- */
David Demelier <markand@malikania.fr>
parents:
diff changeset
32
David Demelier <markand@malikania.fr>
parents:
diff changeset
33 TEST(Conversion32to8, ascii)
David Demelier <markand@malikania.fr>
parents:
diff changeset
34 {
David Demelier <markand@malikania.fr>
parents:
diff changeset
35 try {
David Demelier <markand@malikania.fr>
parents:
diff changeset
36 std::u32string u32{'a', 'b', 'c'};
David Demelier <markand@malikania.fr>
parents:
diff changeset
37 std::string s = Utf8::toutf8(u32);
David Demelier <markand@malikania.fr>
parents:
diff changeset
38
David Demelier <markand@malikania.fr>
parents:
diff changeset
39 ASSERT_EQ("abc", s);
David Demelier <markand@malikania.fr>
parents:
diff changeset
40 } catch (const std::exception &ex) {
David Demelier <markand@malikania.fr>
parents:
diff changeset
41 FAIL() << ex.what();
David Demelier <markand@malikania.fr>
parents:
diff changeset
42 }
David Demelier <markand@malikania.fr>
parents:
diff changeset
43 }
David Demelier <markand@malikania.fr>
parents:
diff changeset
44
David Demelier <markand@malikania.fr>
parents:
diff changeset
45 TEST(Conversion32to8, valid)
David Demelier <markand@malikania.fr>
parents:
diff changeset
46 {
David Demelier <markand@malikania.fr>
parents:
diff changeset
47 try {
David Demelier <markand@malikania.fr>
parents:
diff changeset
48 std::u32string u32{'a', /* é */ 233, 'c'};
David Demelier <markand@malikania.fr>
parents:
diff changeset
49 std::string s = Utf8::toutf8(u32);
David Demelier <markand@malikania.fr>
parents:
diff changeset
50
David Demelier <markand@malikania.fr>
parents:
diff changeset
51 ASSERT_EQ("aéc", s);
David Demelier <markand@malikania.fr>
parents:
diff changeset
52 } catch (const std::exception &ex) {
David Demelier <markand@malikania.fr>
parents:
diff changeset
53 FAIL() << ex.what();
David Demelier <markand@malikania.fr>
parents:
diff changeset
54 }
David Demelier <markand@malikania.fr>
parents:
diff changeset
55 }
David Demelier <markand@malikania.fr>
parents:
diff changeset
56
David Demelier <markand@malikania.fr>
parents:
diff changeset
57 TEST(Conversion32to8, invalid)
David Demelier <markand@malikania.fr>
parents:
diff changeset
58 {
David Demelier <markand@malikania.fr>
parents:
diff changeset
59 try {
David Demelier <markand@malikania.fr>
parents:
diff changeset
60 std::u32string u32{'a', 0xFFFFFFFF, 'c'};
David Demelier <markand@malikania.fr>
parents:
diff changeset
61 std::string s = Utf8::toutf8(u32);
David Demelier <markand@malikania.fr>
parents:
diff changeset
62
David Demelier <markand@malikania.fr>
parents:
diff changeset
63 FAIL() << "expected a failure";
David Demelier <markand@malikania.fr>
parents:
diff changeset
64 } catch (const std::exception &ex) {
David Demelier <markand@malikania.fr>
parents:
diff changeset
65 SUCCEED();
David Demelier <markand@malikania.fr>
parents:
diff changeset
66 }
David Demelier <markand@malikania.fr>
parents:
diff changeset
67 }
David Demelier <markand@malikania.fr>
parents:
diff changeset
68
David Demelier <markand@malikania.fr>
parents:
diff changeset
69 /* --------------------------------------------------------
David Demelier <markand@malikania.fr>
parents:
diff changeset
70 * Conversion UTF8 -> UTF32
David Demelier <markand@malikania.fr>
parents:
diff changeset
71 * -------------------------------------------------------- */
David Demelier <markand@malikania.fr>
parents:
diff changeset
72
David Demelier <markand@malikania.fr>
parents:
diff changeset
73 TEST(Conversion8to32, ascii)
David Demelier <markand@malikania.fr>
parents:
diff changeset
74 {
David Demelier <markand@malikania.fr>
parents:
diff changeset
75 try {
David Demelier <markand@malikania.fr>
parents:
diff changeset
76 std::string s{"abc"};
David Demelier <markand@malikania.fr>
parents:
diff changeset
77 std::u32string expected{'a', 'b', 'c'};
David Demelier <markand@malikania.fr>
parents:
diff changeset
78 std::u32string result = Utf8::toutf32(s);
David Demelier <markand@malikania.fr>
parents:
diff changeset
79
David Demelier <markand@malikania.fr>
parents:
diff changeset
80 ASSERT_EQ(expected, result);
David Demelier <markand@malikania.fr>
parents:
diff changeset
81 } catch (const std::exception &ex) {
David Demelier <markand@malikania.fr>
parents:
diff changeset
82 FAIL() << ex.what();
David Demelier <markand@malikania.fr>
parents:
diff changeset
83 }
David Demelier <markand@malikania.fr>
parents:
diff changeset
84 }
David Demelier <markand@malikania.fr>
parents:
diff changeset
85
David Demelier <markand@malikania.fr>
parents:
diff changeset
86 TEST(Conversion8to32, valid)
David Demelier <markand@malikania.fr>
parents:
diff changeset
87 {
David Demelier <markand@malikania.fr>
parents:
diff changeset
88 try {
David Demelier <markand@malikania.fr>
parents:
diff changeset
89 std::string s{"aéc"};
David Demelier <markand@malikania.fr>
parents:
diff changeset
90 std::u32string expected{'a', /* é */ 233, 'c'};
David Demelier <markand@malikania.fr>
parents:
diff changeset
91 std::u32string result = Utf8::toutf32(s);
David Demelier <markand@malikania.fr>
parents:
diff changeset
92
David Demelier <markand@malikania.fr>
parents:
diff changeset
93 ASSERT_EQ(expected, result);
David Demelier <markand@malikania.fr>
parents:
diff changeset
94 } catch (const std::exception &ex) {
David Demelier <markand@malikania.fr>
parents:
diff changeset
95 FAIL() << ex.what();
David Demelier <markand@malikania.fr>
parents:
diff changeset
96 }
David Demelier <markand@malikania.fr>
parents:
diff changeset
97 }
David Demelier <markand@malikania.fr>
parents:
diff changeset
98
David Demelier <markand@malikania.fr>
parents:
diff changeset
99 /* --------------------------------------------------------
David Demelier <markand@malikania.fr>
parents:
diff changeset
100 * UTF32 to upper
David Demelier <markand@malikania.fr>
parents:
diff changeset
101 * -------------------------------------------------------- */
David Demelier <markand@malikania.fr>
parents:
diff changeset
102
David Demelier <markand@malikania.fr>
parents:
diff changeset
103 TEST(Toupper32, ascii)
David Demelier <markand@malikania.fr>
parents:
diff changeset
104 {
David Demelier <markand@malikania.fr>
parents:
diff changeset
105 try {
David Demelier <markand@malikania.fr>
parents:
diff changeset
106 std::u32string u32{'a', 'b', 'c'};
David Demelier <markand@malikania.fr>
parents:
diff changeset
107 std::u32string expected{'A', 'B', 'C'};
David Demelier <markand@malikania.fr>
parents:
diff changeset
108 std::u32string result = Utf8::toupper(u32);
David Demelier <markand@malikania.fr>
parents:
diff changeset
109
David Demelier <markand@malikania.fr>
parents:
diff changeset
110 ASSERT_EQ(expected, result);
David Demelier <markand@malikania.fr>
parents:
diff changeset
111 } catch (const std::exception &ex) {
David Demelier <markand@malikania.fr>
parents:
diff changeset
112 FAIL() << ex.what();
David Demelier <markand@malikania.fr>
parents:
diff changeset
113 }
David Demelier <markand@malikania.fr>
parents:
diff changeset
114 }
David Demelier <markand@malikania.fr>
parents:
diff changeset
115
David Demelier <markand@malikania.fr>
parents:
diff changeset
116 TEST(Toupper32, valid)
David Demelier <markand@malikania.fr>
parents:
diff changeset
117 {
David Demelier <markand@malikania.fr>
parents:
diff changeset
118 try {
David Demelier <markand@malikania.fr>
parents:
diff changeset
119 std::u32string u32{/* ä */ 228, /* ç */ 231, /* ë */ 235};
David Demelier <markand@malikania.fr>
parents:
diff changeset
120 std::u32string expected{/* Ä */ 196, /* Ç */ 199, /* Ë */ 203};
David Demelier <markand@malikania.fr>
parents:
diff changeset
121 std::u32string result = Utf8::toupper(u32);
David Demelier <markand@malikania.fr>
parents:
diff changeset
122
David Demelier <markand@malikania.fr>
parents:
diff changeset
123 ASSERT_EQ(expected, result);
David Demelier <markand@malikania.fr>
parents:
diff changeset
124 } catch (const std::exception &ex) {
David Demelier <markand@malikania.fr>
parents:
diff changeset
125 FAIL() << ex.what();
David Demelier <markand@malikania.fr>
parents:
diff changeset
126 }
David Demelier <markand@malikania.fr>
parents:
diff changeset
127 }
David Demelier <markand@malikania.fr>
parents:
diff changeset
128
David Demelier <markand@malikania.fr>
parents:
diff changeset
129 TEST(Toupper32, invalid)
David Demelier <markand@malikania.fr>
parents:
diff changeset
130 {
David Demelier <markand@malikania.fr>
parents:
diff changeset
131 try {
David Demelier <markand@malikania.fr>
parents:
diff changeset
132 std::u32string u32{'a', 0xFFFFFFFF, 'b'};
David Demelier <markand@malikania.fr>
parents:
diff changeset
133 std::u32string expected{'A', 0xFFFFFFFF, 'B'};
David Demelier <markand@malikania.fr>
parents:
diff changeset
134 std::u32string result = Utf8::toupper(u32);
David Demelier <markand@malikania.fr>
parents:
diff changeset
135
David Demelier <markand@malikania.fr>
parents:
diff changeset
136 ASSERT_EQ(expected, result);
David Demelier <markand@malikania.fr>
parents:
diff changeset
137 } catch (const std::exception &ex) {
David Demelier <markand@malikania.fr>
parents:
diff changeset
138 FAIL() << ex.what();
David Demelier <markand@malikania.fr>
parents:
diff changeset
139 }
David Demelier <markand@malikania.fr>
parents:
diff changeset
140 }
David Demelier <markand@malikania.fr>
parents:
diff changeset
141
David Demelier <markand@malikania.fr>
parents:
diff changeset
142 /* --------------------------------------------------------
David Demelier <markand@malikania.fr>
parents:
diff changeset
143 * UTF32 to lower
David Demelier <markand@malikania.fr>
parents:
diff changeset
144 * -------------------------------------------------------- */
David Demelier <markand@malikania.fr>
parents:
diff changeset
145
David Demelier <markand@malikania.fr>
parents:
diff changeset
146 TEST(Tolower32, ascii)
David Demelier <markand@malikania.fr>
parents:
diff changeset
147 {
David Demelier <markand@malikania.fr>
parents:
diff changeset
148 try {
David Demelier <markand@malikania.fr>
parents:
diff changeset
149 std::u32string u32{'A', 'B', 'C'};
David Demelier <markand@malikania.fr>
parents:
diff changeset
150 std::u32string expected{'a', 'b', 'c'};
David Demelier <markand@malikania.fr>
parents:
diff changeset
151 std::u32string result = Utf8::tolower(u32);
David Demelier <markand@malikania.fr>
parents:
diff changeset
152
David Demelier <markand@malikania.fr>
parents:
diff changeset
153 ASSERT_EQ(expected, result);
David Demelier <markand@malikania.fr>
parents:
diff changeset
154 } catch (const std::exception &ex) {
David Demelier <markand@malikania.fr>
parents:
diff changeset
155 FAIL() << ex.what();
David Demelier <markand@malikania.fr>
parents:
diff changeset
156 }
David Demelier <markand@malikania.fr>
parents:
diff changeset
157 }
David Demelier <markand@malikania.fr>
parents:
diff changeset
158
David Demelier <markand@malikania.fr>
parents:
diff changeset
159 TEST(Tolower32, valid)
David Demelier <markand@malikania.fr>
parents:
diff changeset
160 {
David Demelier <markand@malikania.fr>
parents:
diff changeset
161 try {
David Demelier <markand@malikania.fr>
parents:
diff changeset
162 std::u32string u32{/* Ä */ 196, /* Ç */ 199, /* Ë */ 203};
David Demelier <markand@malikania.fr>
parents:
diff changeset
163 std::u32string expected{/* ä */ 228, /* ç */ 231, /* ë */ 235};
David Demelier <markand@malikania.fr>
parents:
diff changeset
164 std::u32string result = Utf8::tolower(u32);
David Demelier <markand@malikania.fr>
parents:
diff changeset
165
David Demelier <markand@malikania.fr>
parents:
diff changeset
166 ASSERT_EQ(expected, result);
David Demelier <markand@malikania.fr>
parents:
diff changeset
167 } catch (const std::exception &ex) {
David Demelier <markand@malikania.fr>
parents:
diff changeset
168 FAIL() << ex.what();
David Demelier <markand@malikania.fr>
parents:
diff changeset
169 }
David Demelier <markand@malikania.fr>
parents:
diff changeset
170 }
David Demelier <markand@malikania.fr>
parents:
diff changeset
171
David Demelier <markand@malikania.fr>
parents:
diff changeset
172 TEST(Tolower32, invalid)
David Demelier <markand@malikania.fr>
parents:
diff changeset
173 {
David Demelier <markand@malikania.fr>
parents:
diff changeset
174 try {
David Demelier <markand@malikania.fr>
parents:
diff changeset
175 std::u32string u32{'A', 0xFFFFFFFF, 'B'};
David Demelier <markand@malikania.fr>
parents:
diff changeset
176 std::u32string expected{'a', 0xFFFFFFFF, 'b'};
David Demelier <markand@malikania.fr>
parents:
diff changeset
177 std::u32string result = Utf8::tolower(u32);
David Demelier <markand@malikania.fr>
parents:
diff changeset
178
David Demelier <markand@malikania.fr>
parents:
diff changeset
179 ASSERT_EQ(expected, result);
David Demelier <markand@malikania.fr>
parents:
diff changeset
180 } catch (const std::exception &ex) {
David Demelier <markand@malikania.fr>
parents:
diff changeset
181 FAIL() << ex.what();
David Demelier <markand@malikania.fr>
parents:
diff changeset
182 }
David Demelier <markand@malikania.fr>
parents:
diff changeset
183 }
David Demelier <markand@malikania.fr>
parents:
diff changeset
184
David Demelier <markand@malikania.fr>
parents:
diff changeset
185 /* --------------------------------------------------------
David Demelier <markand@malikania.fr>
parents:
diff changeset
186 * UTF8 to upper
David Demelier <markand@malikania.fr>
parents:
diff changeset
187 * -------------------------------------------------------- */
David Demelier <markand@malikania.fr>
parents:
diff changeset
188
David Demelier <markand@malikania.fr>
parents:
diff changeset
189 TEST(Toupper8, ascii)
David Demelier <markand@malikania.fr>
parents:
diff changeset
190 {
David Demelier <markand@malikania.fr>
parents:
diff changeset
191 try {
David Demelier <markand@malikania.fr>
parents:
diff changeset
192 std::string s{"abc"};
David Demelier <markand@malikania.fr>
parents:
diff changeset
193 std::string r = Utf8::toupper(s);
David Demelier <markand@malikania.fr>
parents:
diff changeset
194
David Demelier <markand@malikania.fr>
parents:
diff changeset
195 ASSERT_EQ("ABC", r);
David Demelier <markand@malikania.fr>
parents:
diff changeset
196 } catch (const std::exception &ex) {
David Demelier <markand@malikania.fr>
parents:
diff changeset
197 FAIL() << ex.what();
David Demelier <markand@malikania.fr>
parents:
diff changeset
198 }
David Demelier <markand@malikania.fr>
parents:
diff changeset
199 }
David Demelier <markand@malikania.fr>
parents:
diff changeset
200
David Demelier <markand@malikania.fr>
parents:
diff changeset
201 TEST(Toupper8, valid)
David Demelier <markand@malikania.fr>
parents:
diff changeset
202 {
David Demelier <markand@malikania.fr>
parents:
diff changeset
203 try {
David Demelier <markand@malikania.fr>
parents:
diff changeset
204 std::string s{"aéc"};
David Demelier <markand@malikania.fr>
parents:
diff changeset
205 std::string r = Utf8::toupper(s);
David Demelier <markand@malikania.fr>
parents:
diff changeset
206
David Demelier <markand@malikania.fr>
parents:
diff changeset
207 ASSERT_EQ("AÉC", r);
David Demelier <markand@malikania.fr>
parents:
diff changeset
208 } catch (const std::exception &ex) {
David Demelier <markand@malikania.fr>
parents:
diff changeset
209 FAIL() << ex.what();
David Demelier <markand@malikania.fr>
parents:
diff changeset
210 }
David Demelier <markand@malikania.fr>
parents:
diff changeset
211 }
David Demelier <markand@malikania.fr>
parents:
diff changeset
212
David Demelier <markand@malikania.fr>
parents:
diff changeset
213 TEST(Toupper8, invalid)
David Demelier <markand@malikania.fr>
parents:
diff changeset
214 {
David Demelier <markand@malikania.fr>
parents:
diff changeset
215 try {
David Demelier <markand@malikania.fr>
parents:
diff changeset
216 std::string s{"a" "\xFF""b"};
David Demelier <markand@malikania.fr>
parents:
diff changeset
217 std::string r = Utf8::toupper(s);
David Demelier <markand@malikania.fr>
parents:
diff changeset
218
David Demelier <markand@malikania.fr>
parents:
diff changeset
219 FAIL() << "expected a failure";
David Demelier <markand@malikania.fr>
parents:
diff changeset
220 } catch (const std::exception &ex) {
David Demelier <markand@malikania.fr>
parents:
diff changeset
221 SUCCEED();
David Demelier <markand@malikania.fr>
parents:
diff changeset
222 }
David Demelier <markand@malikania.fr>
parents:
diff changeset
223 }
David Demelier <markand@malikania.fr>
parents:
diff changeset
224
David Demelier <markand@malikania.fr>
parents:
diff changeset
225 /* --------------------------------------------------------
David Demelier <markand@malikania.fr>
parents:
diff changeset
226 * UTF8 to lower
David Demelier <markand@malikania.fr>
parents:
diff changeset
227 * -------------------------------------------------------- */
David Demelier <markand@malikania.fr>
parents:
diff changeset
228
David Demelier <markand@malikania.fr>
parents:
diff changeset
229 TEST(Tolower8, ascii)
David Demelier <markand@malikania.fr>
parents:
diff changeset
230 {
David Demelier <markand@malikania.fr>
parents:
diff changeset
231 try {
David Demelier <markand@malikania.fr>
parents:
diff changeset
232 std::string s{"ABC"};
David Demelier <markand@malikania.fr>
parents:
diff changeset
233 std::string r = Utf8::tolower(s);
David Demelier <markand@malikania.fr>
parents:
diff changeset
234
David Demelier <markand@malikania.fr>
parents:
diff changeset
235 ASSERT_EQ("abc", r);
David Demelier <markand@malikania.fr>
parents:
diff changeset
236 } catch (const std::exception &ex) {
David Demelier <markand@malikania.fr>
parents:
diff changeset
237 FAIL() << ex.what();
David Demelier <markand@malikania.fr>
parents:
diff changeset
238 }
David Demelier <markand@malikania.fr>
parents:
diff changeset
239 }
David Demelier <markand@malikania.fr>
parents:
diff changeset
240
David Demelier <markand@malikania.fr>
parents:
diff changeset
241 TEST(Tolower8, valid)
David Demelier <markand@malikania.fr>
parents:
diff changeset
242 {
David Demelier <markand@malikania.fr>
parents:
diff changeset
243 try {
David Demelier <markand@malikania.fr>
parents:
diff changeset
244 std::string s{"AÉC"};
David Demelier <markand@malikania.fr>
parents:
diff changeset
245 std::string r = Utf8::tolower(s);
David Demelier <markand@malikania.fr>
parents:
diff changeset
246
David Demelier <markand@malikania.fr>
parents:
diff changeset
247 ASSERT_EQ("aéc", r);
David Demelier <markand@malikania.fr>
parents:
diff changeset
248 } catch (const std::exception &ex) {
David Demelier <markand@malikania.fr>
parents:
diff changeset
249 FAIL() << ex.what();
David Demelier <markand@malikania.fr>
parents:
diff changeset
250 }
David Demelier <markand@malikania.fr>
parents:
diff changeset
251 }
David Demelier <markand@malikania.fr>
parents:
diff changeset
252
David Demelier <markand@malikania.fr>
parents:
diff changeset
253 TEST(Tolower8, invalid)
David Demelier <markand@malikania.fr>
parents:
diff changeset
254 {
David Demelier <markand@malikania.fr>
parents:
diff changeset
255 try {
David Demelier <markand@malikania.fr>
parents:
diff changeset
256 std::string s{"A" "\xFF""B"};
David Demelier <markand@malikania.fr>
parents:
diff changeset
257 std::string r = Utf8::tolower(s);
David Demelier <markand@malikania.fr>
parents:
diff changeset
258
David Demelier <markand@malikania.fr>
parents:
diff changeset
259 FAIL() << "expected a failure";
David Demelier <markand@malikania.fr>
parents:
diff changeset
260 } catch (const std::exception &ex) {
David Demelier <markand@malikania.fr>
parents:
diff changeset
261 SUCCEED();
David Demelier <markand@malikania.fr>
parents:
diff changeset
262 }
David Demelier <markand@malikania.fr>
parents:
diff changeset
263 }
David Demelier <markand@malikania.fr>
parents:
diff changeset
264
David Demelier <markand@malikania.fr>
parents:
diff changeset
265 /* --------------------------------------------------------
David Demelier <markand@malikania.fr>
parents:
diff changeset
266 * Check functions
David Demelier <markand@malikania.fr>
parents:
diff changeset
267 * -------------------------------------------------------- */
David Demelier <markand@malikania.fr>
parents:
diff changeset
268
David Demelier <markand@malikania.fr>
parents:
diff changeset
269 TEST(Check, isspace)
David Demelier <markand@malikania.fr>
parents:
diff changeset
270 {
David Demelier <markand@malikania.fr>
parents:
diff changeset
271 ASSERT_TRUE(Utf8::isspace(' '));
David Demelier <markand@malikania.fr>
parents:
diff changeset
272 ASSERT_FALSE(Utf8::isspace(/* é */ 233));
David Demelier <markand@malikania.fr>
parents:
diff changeset
273 }
David Demelier <markand@malikania.fr>
parents:
diff changeset
274
David Demelier <markand@malikania.fr>
parents:
diff changeset
275 TEST(Check, isletter)
David Demelier <markand@malikania.fr>
parents:
diff changeset
276 {
David Demelier <markand@malikania.fr>
parents:
diff changeset
277 ASSERT_TRUE(Utf8::isletter(/* é */ 233));
David Demelier <markand@malikania.fr>
parents:
diff changeset
278 ASSERT_FALSE(Utf8::isletter(/* € */ 8364));
David Demelier <markand@malikania.fr>
parents:
diff changeset
279 }
David Demelier <markand@malikania.fr>
parents:
diff changeset
280
David Demelier <markand@malikania.fr>
parents:
diff changeset
281 TEST(Check, isupper)
David Demelier <markand@malikania.fr>
parents:
diff changeset
282 {
David Demelier <markand@malikania.fr>
parents:
diff changeset
283 ASSERT_FALSE(Utf8::isupper('a'));
David Demelier <markand@malikania.fr>
parents:
diff changeset
284 ASSERT_FALSE(Utf8::isupper(/* é */ 233));
David Demelier <markand@malikania.fr>
parents:
diff changeset
285 ASSERT_TRUE(Utf8::isupper('A'));
David Demelier <markand@malikania.fr>
parents:
diff changeset
286 ASSERT_TRUE(Utf8::isupper(/* É */ 201));
David Demelier <markand@malikania.fr>
parents:
diff changeset
287 }
David Demelier <markand@malikania.fr>
parents:
diff changeset
288
David Demelier <markand@malikania.fr>
parents:
diff changeset
289 TEST(Check, islower)
David Demelier <markand@malikania.fr>
parents:
diff changeset
290 {
David Demelier <markand@malikania.fr>
parents:
diff changeset
291 ASSERT_TRUE(Utf8::islower('a'));
David Demelier <markand@malikania.fr>
parents:
diff changeset
292 ASSERT_TRUE(Utf8::islower(/* é */ 233));
David Demelier <markand@malikania.fr>
parents:
diff changeset
293 ASSERT_FALSE(Utf8::islower('A'));
David Demelier <markand@malikania.fr>
parents:
diff changeset
294 ASSERT_FALSE(Utf8::islower(/* É */ 201));
David Demelier <markand@malikania.fr>
parents:
diff changeset
295 }
David Demelier <markand@malikania.fr>
parents:
diff changeset
296
David Demelier <markand@malikania.fr>
parents:
diff changeset
297 /* --------------------------------------------------------
David Demelier <markand@malikania.fr>
parents:
diff changeset
298 * Miscellaneous
David Demelier <markand@malikania.fr>
parents:
diff changeset
299 * -------------------------------------------------------- */
David Demelier <markand@malikania.fr>
parents:
diff changeset
300
David Demelier <markand@malikania.fr>
parents:
diff changeset
301 TEST(Misc, nbytesPoint)
David Demelier <markand@malikania.fr>
parents:
diff changeset
302 {
David Demelier <markand@malikania.fr>
parents:
diff changeset
303 ASSERT_EQ(1, Utf8::nbytesPoint('a'));
David Demelier <markand@malikania.fr>
parents:
diff changeset
304 ASSERT_EQ(2, Utf8::nbytesPoint(/* é */ 233));
David Demelier <markand@malikania.fr>
parents:
diff changeset
305 ASSERT_EQ(3, Utf8::nbytesPoint(/* € */ 8364));
David Demelier <markand@malikania.fr>
parents:
diff changeset
306 ASSERT_EQ(4, Utf8::nbytesPoint(/* 𠀀 */ 131072));
David Demelier <markand@malikania.fr>
parents:
diff changeset
307 }
David Demelier <markand@malikania.fr>
parents:
diff changeset
308
David Demelier <markand@malikania.fr>
parents:
diff changeset
309 TEST(Misc, nbytesUtf8)
David Demelier <markand@malikania.fr>
parents:
diff changeset
310 {
David Demelier <markand@malikania.fr>
parents:
diff changeset
311 std::string s1{"a"};
David Demelier <markand@malikania.fr>
parents:
diff changeset
312 std::string s2{"é"};
David Demelier <markand@malikania.fr>
parents:
diff changeset
313 std::string s3{"€"};
David Demelier <markand@malikania.fr>
parents:
diff changeset
314 std::string s4{"𠀀"};
David Demelier <markand@malikania.fr>
parents:
diff changeset
315
David Demelier <markand@malikania.fr>
parents:
diff changeset
316 ASSERT_EQ(1, Utf8::nbytesUtf8(s1[0]));
David Demelier <markand@malikania.fr>
parents:
diff changeset
317 ASSERT_EQ(2, Utf8::nbytesUtf8(s2[0]));
David Demelier <markand@malikania.fr>
parents:
diff changeset
318 ASSERT_EQ(3, Utf8::nbytesUtf8(s3[0]));
David Demelier <markand@malikania.fr>
parents:
diff changeset
319 ASSERT_EQ(4, Utf8::nbytesUtf8(s4[0]));
David Demelier <markand@malikania.fr>
parents:
diff changeset
320 }
David Demelier <markand@malikania.fr>
parents:
diff changeset
321
David Demelier <markand@malikania.fr>
parents:
diff changeset
322 int main(int argc, char **argv)
David Demelier <markand@malikania.fr>
parents:
diff changeset
323 {
David Demelier <markand@malikania.fr>
parents:
diff changeset
324 InitGoogleTest(&argc, argv);
David Demelier <markand@malikania.fr>
parents:
diff changeset
325
David Demelier <markand@malikania.fr>
parents:
diff changeset
326 return RUN_ALL_TESTS();
David Demelier <markand@malikania.fr>
parents:
diff changeset
327 }