Skip to content
This repository was archived by the owner on Nov 8, 2023. It is now read-only.

Commit df5527f

Browse files
enh-googleGerrit Code Review
authored andcommitted
Merge "Improve <ctype.h> and <wctype.h> test coverage slightly." into main
2 parents d05459d + dcb4d9f commit df5527f

File tree

2 files changed

+27
-2
lines changed

2 files changed

+27
-2
lines changed

tests/ctype_test.cpp

Lines changed: 19 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -293,40 +293,57 @@ TEST(ctype, isxdigit_l) {
293293
}
294294

295295
TEST(ctype, toascii) {
296-
EXPECT_EQ('a', toascii('a'));
297-
EXPECT_EQ('a', toascii(0x80 | 'a'));
296+
// POSIX explicitly says that toascii() returns (c & 0x7f),
297+
// so there's no EOF-preserving behavior here and we start from 0.
298+
for (int i = 0; i < kMax; ++i) {
299+
if (i <= 0x7f) {
300+
EXPECT_EQ(i, toascii(i));
301+
} else {
302+
EXPECT_EQ(i & 0x7f, toascii(i));
303+
}
304+
}
298305
}
299306

300307
TEST(ctype, tolower) {
301308
EXPECT_EQ('!', tolower('!'));
302309
EXPECT_EQ('a', tolower('a'));
303310
EXPECT_EQ('a', tolower('A'));
311+
EXPECT_EQ('z', tolower('z'));
312+
EXPECT_EQ('z', tolower('Z'));
304313
}
305314

306315
TEST(ctype, tolower_l) {
307316
EXPECT_EQ('!', tolower_l('!', LC_GLOBAL_LOCALE));
308317
EXPECT_EQ('a', tolower_l('a', LC_GLOBAL_LOCALE));
309318
EXPECT_EQ('a', tolower_l('A', LC_GLOBAL_LOCALE));
319+
EXPECT_EQ('z', tolower_l('z', LC_GLOBAL_LOCALE));
320+
EXPECT_EQ('z', tolower_l('Z', LC_GLOBAL_LOCALE));
310321
}
311322

312323
TEST(ctype, _tolower) {
313324
// _tolower may mangle characters for which isupper is false.
314325
EXPECT_EQ('a', _tolower('A'));
326+
EXPECT_EQ('z', _tolower('Z'));
315327
}
316328

317329
TEST(ctype, toupper) {
318330
EXPECT_EQ('!', toupper('!'));
319331
EXPECT_EQ('A', toupper('a'));
320332
EXPECT_EQ('A', toupper('A'));
333+
EXPECT_EQ('Z', toupper('z'));
334+
EXPECT_EQ('Z', toupper('Z'));
321335
}
322336

323337
TEST(ctype, toupper_l) {
324338
EXPECT_EQ('!', toupper_l('!', LC_GLOBAL_LOCALE));
325339
EXPECT_EQ('A', toupper_l('a', LC_GLOBAL_LOCALE));
326340
EXPECT_EQ('A', toupper_l('A', LC_GLOBAL_LOCALE));
341+
EXPECT_EQ('Z', toupper_l('z', LC_GLOBAL_LOCALE));
342+
EXPECT_EQ('Z', toupper_l('Z', LC_GLOBAL_LOCALE));
327343
}
328344

329345
TEST(ctype, _toupper) {
330346
// _toupper may mangle characters for which islower is false.
331347
EXPECT_EQ('A', _toupper('a'));
348+
EXPECT_EQ('Z', _toupper('z'));
332349
}

tests/wctype_test.cpp

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -109,6 +109,8 @@ TEST(wctype, towlower) {
109109
EXPECT_EQ(wint_t('!'), towlower(L'!'));
110110
EXPECT_EQ(wint_t('a'), towlower(L'a'));
111111
EXPECT_EQ(wint_t('a'), towlower(L'A'));
112+
EXPECT_EQ(wint_t('z'), towlower(L'z'));
113+
EXPECT_EQ(wint_t('z'), towlower(L'Z'));
112114
if (have_dl()) {
113115
EXPECT_EQ(wint_t(L'ç'), towlower(L'ç'));
114116
EXPECT_EQ(wint_t(L'ç'), towlower(L'Ç'));
@@ -125,6 +127,8 @@ TEST(wctype, towlower_l) {
125127
EXPECT_EQ(wint_t('!'), towlower_l(L'!', l.l));
126128
EXPECT_EQ(wint_t('a'), towlower_l(L'a', l.l));
127129
EXPECT_EQ(wint_t('a'), towlower_l(L'A', l.l));
130+
EXPECT_EQ(wint_t('z'), towlower_l(L'z', l.l));
131+
EXPECT_EQ(wint_t('z'), towlower_l(L'Z', l.l));
128132
if (have_dl()) {
129133
EXPECT_EQ(wint_t(L'ç'), towlower_l(L'ç', l.l));
130134
EXPECT_EQ(wint_t(L'ç'), towlower_l(L'Ç', l.l));
@@ -140,6 +144,8 @@ TEST(wctype, towupper) {
140144
EXPECT_EQ(wint_t('!'), towupper(L'!'));
141145
EXPECT_EQ(wint_t('A'), towupper(L'a'));
142146
EXPECT_EQ(wint_t('A'), towupper(L'A'));
147+
EXPECT_EQ(wint_t('Z'), towupper(L'z'));
148+
EXPECT_EQ(wint_t('Z'), towupper(L'Z'));
143149
if (have_dl()) {
144150
EXPECT_EQ(wint_t(L'Ç'), towupper(L'ç'));
145151
EXPECT_EQ(wint_t(L'Ç'), towupper(L'Ç'));
@@ -156,6 +162,8 @@ TEST(wctype, towupper_l) {
156162
EXPECT_EQ(wint_t('!'), towupper_l(L'!', l.l));
157163
EXPECT_EQ(wint_t('A'), towupper_l(L'a', l.l));
158164
EXPECT_EQ(wint_t('A'), towupper_l(L'A', l.l));
165+
EXPECT_EQ(wint_t('Z'), towupper_l(L'z', l.l));
166+
EXPECT_EQ(wint_t('Z'), towupper_l(L'Z', l.l));
159167
if (have_dl()) {
160168
EXPECT_EQ(wint_t(L'Ç'), towupper_l(L'ç', l.l));
161169
EXPECT_EQ(wint_t(L'Ç'), towupper_l(L'Ç', l.l));

0 commit comments

Comments
 (0)