1 /* 2 * Copyright (C) 2014 The Android Open Source Project 3 * 4 * Licensed under the Apache License, Version 2.0 (the "License"); 5 * you may not use this file except in compliance with the License. 6 * You may obtain a copy of the License at 7 * 8 * http://www.apache.org/licenses/LICENSE-2.0 9 * 10 * Unless required by applicable law or agreed to in writing, software 11 * distributed under the License is distributed on an "AS IS" BASIS, 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 * See the License for the specific language governing permissions and 14 * limitations under the License. 15 */ 16 17 #include <gtest/gtest.h> 18 19 #include <ctype.h> 20 21 TEST(ctype, isalnum) { 22 EXPECT_TRUE(isalnum('1')); 23 EXPECT_TRUE(isalnum('a')); 24 EXPECT_TRUE(isalnum('A')); 25 EXPECT_FALSE(isalnum('!')); 26 EXPECT_FALSE(isalnum(' ')); 27 } 28 29 TEST(ctype, isalnum_l) { 30 EXPECT_TRUE(isalnum_l('1', LC_GLOBAL_LOCALE)); 31 EXPECT_TRUE(isalnum_l('a', LC_GLOBAL_LOCALE)); 32 EXPECT_TRUE(isalnum_l('A', LC_GLOBAL_LOCALE)); 33 EXPECT_FALSE(isalnum_l('!', LC_GLOBAL_LOCALE)); 34 EXPECT_FALSE(isalnum_l(' ', LC_GLOBAL_LOCALE)); 35 } 36 37 TEST(ctype, isalpha) { 38 EXPECT_FALSE(isalpha('1')); 39 EXPECT_TRUE(isalpha('a')); 40 EXPECT_TRUE(isalpha('A')); 41 EXPECT_FALSE(isalpha('!')); 42 EXPECT_FALSE(isalpha(' ')); 43 } 44 45 TEST(ctype, isalpha_l) { 46 EXPECT_FALSE(isalpha_l('1', LC_GLOBAL_LOCALE)); 47 EXPECT_TRUE(isalpha_l('a', LC_GLOBAL_LOCALE)); 48 EXPECT_TRUE(isalpha_l('A', LC_GLOBAL_LOCALE)); 49 EXPECT_FALSE(isalpha_l('!', LC_GLOBAL_LOCALE)); 50 EXPECT_FALSE(isalpha_l(' ', LC_GLOBAL_LOCALE)); 51 } 52 53 TEST(ctype, isascii) { 54 EXPECT_TRUE(isascii('\x7f')); 55 EXPECT_FALSE(isascii('\x80')); 56 } 57 58 TEST(ctype, isblank) { 59 EXPECT_FALSE(isblank('1')); 60 EXPECT_TRUE(isblank(' ')); 61 EXPECT_TRUE(isblank('\t')); 62 } 63 64 TEST(ctype, isblank_l) { 65 EXPECT_FALSE(isblank_l('1', LC_GLOBAL_LOCALE)); 66 EXPECT_TRUE(isblank_l(' ', LC_GLOBAL_LOCALE)); 67 EXPECT_TRUE(isblank_l('\t', LC_GLOBAL_LOCALE)); 68 } 69 70 TEST(ctype, iscntrl) { 71 EXPECT_FALSE(iscntrl('1')); 72 EXPECT_TRUE(iscntrl('\b')); 73 } 74 75 TEST(ctype, iscntrl_l) { 76 EXPECT_FALSE(iscntrl_l('1', LC_GLOBAL_LOCALE)); 77 EXPECT_TRUE(iscntrl_l('\b', LC_GLOBAL_LOCALE)); 78 } 79 80 TEST(ctype, isdigit) { 81 EXPECT_TRUE(isdigit('1')); 82 EXPECT_FALSE(isdigit('a')); 83 EXPECT_FALSE(isdigit('x')); 84 } 85 86 TEST(ctype, isdigit_l) { 87 EXPECT_TRUE(isdigit_l('1', LC_GLOBAL_LOCALE)); 88 EXPECT_FALSE(isdigit_l('a', LC_GLOBAL_LOCALE)); 89 EXPECT_FALSE(isdigit_l('x', LC_GLOBAL_LOCALE)); 90 } 91 92 TEST(ctype, isgraph) { 93 EXPECT_TRUE(isgraph('a')); 94 EXPECT_TRUE(isgraph('A')); 95 EXPECT_TRUE(isgraph('1')); 96 EXPECT_TRUE(isgraph('!')); 97 EXPECT_FALSE(isgraph(' ')); 98 } 99 100 TEST(ctype, isgraph_l) { 101 EXPECT_TRUE(isgraph_l('a', LC_GLOBAL_LOCALE)); 102 EXPECT_TRUE(isgraph_l('A', LC_GLOBAL_LOCALE)); 103 EXPECT_TRUE(isgraph_l('1', LC_GLOBAL_LOCALE)); 104 EXPECT_TRUE(isgraph_l('!', LC_GLOBAL_LOCALE)); 105 EXPECT_FALSE(isgraph_l(' ', LC_GLOBAL_LOCALE)); 106 } 107 108 TEST(ctype, islower) { 109 EXPECT_TRUE(islower('a')); 110 EXPECT_FALSE(islower('A')); 111 EXPECT_FALSE(islower('!')); 112 } 113 114 TEST(ctype, islower_l) { 115 EXPECT_TRUE(islower_l('a', LC_GLOBAL_LOCALE)); 116 EXPECT_FALSE(islower_l('A', LC_GLOBAL_LOCALE)); 117 EXPECT_FALSE(islower_l('!', LC_GLOBAL_LOCALE)); 118 } 119 120 TEST(ctype, isprint) { 121 EXPECT_TRUE(isprint('a')); 122 EXPECT_TRUE(isprint(' ')); 123 EXPECT_FALSE(isprint('\b')); 124 } 125 126 TEST(ctype, isprint_l) { 127 EXPECT_TRUE(isprint_l('a', LC_GLOBAL_LOCALE)); 128 EXPECT_TRUE(isprint_l(' ', LC_GLOBAL_LOCALE)); 129 EXPECT_FALSE(isprint_l('\b', LC_GLOBAL_LOCALE)); 130 } 131 132 TEST(ctype, ispunct) { 133 EXPECT_TRUE(ispunct('!')); 134 EXPECT_FALSE(ispunct('a')); 135 EXPECT_FALSE(ispunct(' ')); 136 EXPECT_FALSE(ispunct('\b')); 137 } 138 139 TEST(ctype, ispunct_l) { 140 EXPECT_TRUE(ispunct_l('!', LC_GLOBAL_LOCALE)); 141 EXPECT_FALSE(ispunct_l('a', LC_GLOBAL_LOCALE)); 142 EXPECT_FALSE(ispunct_l(' ', LC_GLOBAL_LOCALE)); 143 EXPECT_FALSE(ispunct_l('\b', LC_GLOBAL_LOCALE)); 144 } 145 146 TEST(ctype, isspace) { 147 EXPECT_TRUE(isspace(' ')); 148 EXPECT_TRUE(isspace('\f')); 149 EXPECT_TRUE(isspace('\n')); 150 EXPECT_TRUE(isspace('\r')); 151 EXPECT_TRUE(isspace('\t')); 152 EXPECT_TRUE(isspace('\v')); 153 EXPECT_FALSE(isspace('a')); 154 EXPECT_FALSE(isspace('!')); 155 } 156 157 TEST(ctype, isspace_l) { 158 EXPECT_TRUE(isspace_l(' ', LC_GLOBAL_LOCALE)); 159 EXPECT_TRUE(isspace_l('\f', LC_GLOBAL_LOCALE)); 160 EXPECT_TRUE(isspace_l('\n', LC_GLOBAL_LOCALE)); 161 EXPECT_TRUE(isspace_l('\r', LC_GLOBAL_LOCALE)); 162 EXPECT_TRUE(isspace_l('\t', LC_GLOBAL_LOCALE)); 163 EXPECT_TRUE(isspace_l('\v', LC_GLOBAL_LOCALE)); 164 EXPECT_FALSE(isspace_l('a', LC_GLOBAL_LOCALE)); 165 EXPECT_FALSE(isspace_l('!', LC_GLOBAL_LOCALE)); 166 } 167 168 TEST(ctype, isupper) { 169 EXPECT_TRUE(isupper('A')); 170 EXPECT_FALSE(isupper('a')); 171 EXPECT_FALSE(isupper('!')); 172 } 173 174 TEST(ctype, isupper_l) { 175 EXPECT_TRUE(isupper_l('A', LC_GLOBAL_LOCALE)); 176 EXPECT_FALSE(isupper_l('a', LC_GLOBAL_LOCALE)); 177 EXPECT_FALSE(isupper_l('!', LC_GLOBAL_LOCALE)); 178 } 179 180 TEST(ctype, isxdigit) { 181 EXPECT_TRUE(isxdigit('0')); 182 EXPECT_FALSE(isxdigit('x')); 183 EXPECT_TRUE(isxdigit('1')); 184 EXPECT_TRUE(isxdigit('a')); 185 EXPECT_TRUE(isxdigit('A')); 186 EXPECT_FALSE(isxdigit('g')); 187 EXPECT_FALSE(isxdigit(' ')); 188 } 189 190 TEST(ctype, isxdigit_l) { 191 EXPECT_TRUE(isxdigit_l('0', LC_GLOBAL_LOCALE)); 192 EXPECT_FALSE(isxdigit_l('x', LC_GLOBAL_LOCALE)); 193 EXPECT_TRUE(isxdigit_l('1', LC_GLOBAL_LOCALE)); 194 EXPECT_TRUE(isxdigit_l('a', LC_GLOBAL_LOCALE)); 195 EXPECT_TRUE(isxdigit_l('A', LC_GLOBAL_LOCALE)); 196 EXPECT_FALSE(isxdigit_l('g', LC_GLOBAL_LOCALE)); 197 EXPECT_FALSE(isxdigit_l(' ', LC_GLOBAL_LOCALE)); 198 } 199 200 TEST(ctype, toascii) { 201 EXPECT_EQ('a', toascii('a')); 202 EXPECT_EQ('a', toascii(0x80 | 'a')); 203 } 204 205 TEST(ctype, tolower) { 206 EXPECT_EQ('!', tolower('!')); 207 EXPECT_EQ('a', tolower('a')); 208 EXPECT_EQ('a', tolower('A')); 209 } 210 211 TEST(ctype, tolower_l) { 212 EXPECT_EQ('!', tolower_l('!', LC_GLOBAL_LOCALE)); 213 EXPECT_EQ('a', tolower_l('a', LC_GLOBAL_LOCALE)); 214 EXPECT_EQ('a', tolower_l('A', LC_GLOBAL_LOCALE)); 215 } 216 217 TEST(ctype, _tolower) { 218 // _tolower may mangle characters for which isupper is false. 219 EXPECT_EQ('a', _tolower('A')); 220 } 221 222 TEST(ctype, toupper) { 223 EXPECT_EQ('!', toupper('!')); 224 EXPECT_EQ('A', toupper('a')); 225 EXPECT_EQ('A', toupper('A')); 226 } 227 228 TEST(ctype, toupper_l) { 229 EXPECT_EQ('!', toupper_l('!', LC_GLOBAL_LOCALE)); 230 EXPECT_EQ('A', toupper_l('a', LC_GLOBAL_LOCALE)); 231 EXPECT_EQ('A', toupper_l('A', LC_GLOBAL_LOCALE)); 232 } 233 234 TEST(ctype, _toupper) { 235 // _toupper may mangle characters for which islower is false. 236 EXPECT_EQ('A', _toupper('a')); 237 } 238