SimpleKernel 1.17.0
Loading...
Searching...
No Matches
sk_ctype_test.cpp File Reference
#include <gtest/gtest.h>
#include "../../src/libc/sk_ctype.c"
Include dependency graph for sk_ctype_test.cpp:

Go to the source code of this file.

Macros

#define isalnum   sk_isalnum
 
#define isalpha   sk_isalpha
 
#define isblank   sk_isblank
 
#define iscntrl   sk_iscntrl
 
#define isdigit   sk_isdigit
 
#define isgraph   sk_isgraph
 
#define islower   sk_islower
 
#define isprint   sk_isprint
 
#define ispunct   sk_ispunct
 
#define isspace   sk_isspace
 
#define isupper   sk_isupper
 
#define isxdigit   sk_isxdigit
 
#define tolower   sk_tolower
 
#define toupper   sk_toupper
 

Functions

 TEST (SkCtypeTest, IsAlnum)
 
 TEST (SkCtypeTest, IsAlpha)
 
 TEST (SkCtypeTest, IsBlank)
 
 TEST (SkCtypeTest, IsCntrl)
 
 TEST (SkCtypeTest, IsDigit)
 
 TEST (SkCtypeTest, IsGraph)
 
 TEST (SkCtypeTest, IsLower)
 
 TEST (SkCtypeTest, IsPrint)
 
 TEST (SkCtypeTest, IsPunct)
 
 TEST (SkCtypeTest, IsSpace)
 
 TEST (SkCtypeTest, IsUpper)
 
 TEST (SkCtypeTest, IsXdigit)
 
 TEST (SkCtypeTest, ToLower)
 
 TEST (SkCtypeTest, ToUpper)
 
 TEST (SkCtypeTest, BoundaryValues)
 
 TEST (SkCtypeTest, ToLowerBoundary)
 
 TEST (SkCtypeTest, ToUpperBoundary)
 
 TEST (SkCtypeTest, AllDigits)
 
 TEST (SkCtypeTest, AllLetters)
 
 TEST (SkCtypeTest, AllPunctuation)
 
 TEST (SkCtypeTest, AllWhitespace)
 
 TEST (SkCtypeTest, GraphPrintable)
 
 TEST (SkCtypeTest, ControlCharacters)
 
 TEST (SkCtypeTest, CaseConversion)
 
 TEST (SkCtypeTest, NonAscii)
 

Macro Definition Documentation

◆ isalnum

#define isalnum   sk_isalnum

Definition at line 8 of file sk_ctype_test.cpp.

◆ isalpha

#define isalpha   sk_isalpha

Definition at line 9 of file sk_ctype_test.cpp.

◆ isblank

#define isblank   sk_isblank

Definition at line 10 of file sk_ctype_test.cpp.

◆ iscntrl

#define iscntrl   sk_iscntrl

Definition at line 11 of file sk_ctype_test.cpp.

◆ isdigit

#define isdigit   sk_isdigit

Definition at line 12 of file sk_ctype_test.cpp.

◆ isgraph

#define isgraph   sk_isgraph

Definition at line 13 of file sk_ctype_test.cpp.

◆ islower

#define islower   sk_islower

Definition at line 14 of file sk_ctype_test.cpp.

◆ isprint

#define isprint   sk_isprint

Definition at line 15 of file sk_ctype_test.cpp.

◆ ispunct

#define ispunct   sk_ispunct

Definition at line 16 of file sk_ctype_test.cpp.

◆ isspace

#define isspace   sk_isspace

Definition at line 17 of file sk_ctype_test.cpp.

◆ isupper

#define isupper   sk_isupper

Definition at line 18 of file sk_ctype_test.cpp.

◆ isxdigit

#define isxdigit   sk_isxdigit

Definition at line 19 of file sk_ctype_test.cpp.

◆ tolower

#define tolower   sk_tolower

Definition at line 20 of file sk_ctype_test.cpp.

◆ toupper

#define toupper   sk_toupper

Definition at line 21 of file sk_ctype_test.cpp.

Function Documentation

◆ TEST() [1/25]

TEST ( SkCtypeTest  ,
AllDigits   
)

Definition at line 157 of file sk_ctype_test.cpp.

157 {
158 for (char c = '0'; c <= '9'; ++c) {
159 EXPECT_TRUE(sk_isdigit(c));
160 EXPECT_TRUE(sk_isalnum(c));
161 EXPECT_TRUE(sk_isxdigit(c));
162 }
163}
#define EXPECT_TRUE(cond, msg)

◆ TEST() [2/25]

TEST ( SkCtypeTest  ,
AllLetters   
)

Definition at line 165 of file sk_ctype_test.cpp.

165 {
166 for (char c = 'a'; c <= 'z'; ++c) {
167 EXPECT_TRUE(sk_isalpha(c));
168 EXPECT_TRUE(sk_isalnum(c));
169 EXPECT_TRUE(sk_islower(c));
170 EXPECT_FALSE(sk_isupper(c));
171 }
172
173 for (char c = 'A'; c <= 'Z'; ++c) {
174 EXPECT_TRUE(sk_isalpha(c));
175 EXPECT_TRUE(sk_isalnum(c));
176 EXPECT_TRUE(sk_isupper(c));
177 EXPECT_FALSE(sk_islower(c));
178 }
179}
#define EXPECT_FALSE(cond, msg)

◆ TEST() [3/25]

TEST ( SkCtypeTest  ,
AllPunctuation   
)

Definition at line 181 of file sk_ctype_test.cpp.

181 {
182 // 测试常见标点符号
183 const char punct[] = "!\"#$%&'()*+,-./:;<=>?@[\\]^_`{|}~";
184 for (size_t i = 0; i < strlen(punct); ++i) {
185 EXPECT_TRUE(sk_ispunct(punct[i]));
186 EXPECT_FALSE(sk_isalnum(punct[i]));
187 }
188}
#define strlen

◆ TEST() [4/25]

TEST ( SkCtypeTest  ,
AllWhitespace   
)

Definition at line 190 of file sk_ctype_test.cpp.

190 {
191 EXPECT_TRUE(sk_isspace(' ')); // space
192 EXPECT_TRUE(sk_isspace('\t')); // tab
193 EXPECT_TRUE(sk_isspace('\n')); // newline
194 EXPECT_TRUE(sk_isspace('\r')); // carriage return
195 EXPECT_TRUE(sk_isspace('\f')); // form feed
196 EXPECT_TRUE(sk_isspace('\v')); // vertical tab
197}

◆ TEST() [5/25]

TEST ( SkCtypeTest  ,
BoundaryValues   
)

Definition at line 138 of file sk_ctype_test.cpp.

138 {
139 // ASCII 边界值
140 EXPECT_FALSE(sk_isalnum(-1));
141 EXPECT_FALSE(sk_isalnum(128));
142 EXPECT_FALSE(sk_isalpha(127));
143}

◆ TEST() [6/25]

TEST ( SkCtypeTest  ,
CaseConversion   
)

Definition at line 218 of file sk_ctype_test.cpp.

218 {
219 // 测试整个字母表的大小写转换
220 for (char c = 'A'; c <= 'Z'; ++c) {
221 EXPECT_EQ(sk_tolower(c), c + ('a' - 'A'));
222 }
223
224 for (char c = 'a'; c <= 'z'; ++c) {
225 EXPECT_EQ(sk_toupper(c), c - ('a' - 'A'));
226 }
227}
#define EXPECT_EQ(val1, val2, msg)

◆ TEST() [7/25]

TEST ( SkCtypeTest  ,
ControlCharacters   
)

Definition at line 209 of file sk_ctype_test.cpp.

209 {
210 // 测试控制字符 (0-31 和 127)
211 for (int c = 0; c < 32; ++c) {
212 EXPECT_TRUE(sk_iscntrl(c));
213 EXPECT_FALSE(sk_isprint(c));
214 }
215 EXPECT_TRUE(sk_iscntrl(127));
216}

◆ TEST() [8/25]

TEST ( SkCtypeTest  ,
GraphPrintable   
)

Definition at line 199 of file sk_ctype_test.cpp.

199 {
200 // isgraph: 可打印但不包括空格
201 // isprint: 可打印包括空格
202 EXPECT_FALSE(sk_isgraph(' '));
203 EXPECT_TRUE(sk_isprint(' '));
204
205 EXPECT_TRUE(sk_isgraph('A'));
206 EXPECT_TRUE(sk_isprint('A'));
207}

◆ TEST() [9/25]

TEST ( SkCtypeTest  ,
IsAlnum   
)

Definition at line 26 of file sk_ctype_test.cpp.

26 {
27 EXPECT_TRUE(sk_isalnum('a'));
28 EXPECT_TRUE(sk_isalnum('Z'));
29 EXPECT_TRUE(sk_isalnum('0'));
30 EXPECT_TRUE(sk_isalnum('9'));
31 EXPECT_FALSE(sk_isalnum('!'));
32 EXPECT_FALSE(sk_isalnum(' '));
33}

◆ TEST() [10/25]

TEST ( SkCtypeTest  ,
IsAlpha   
)

Definition at line 35 of file sk_ctype_test.cpp.

35 {
36 EXPECT_TRUE(sk_isalpha('a'));
37 EXPECT_TRUE(sk_isalpha('Z'));
38 EXPECT_FALSE(sk_isalpha('0'));
39 EXPECT_FALSE(sk_isalpha('!'));
40}

◆ TEST() [11/25]

TEST ( SkCtypeTest  ,
IsBlank   
)

Definition at line 42 of file sk_ctype_test.cpp.

42 {
43 EXPECT_TRUE(sk_isblank(' '));
44 EXPECT_TRUE(sk_isblank('\t'));
45 EXPECT_FALSE(sk_isblank('\n'));
46 EXPECT_FALSE(sk_isblank('a'));
47}

◆ TEST() [12/25]

TEST ( SkCtypeTest  ,
IsCntrl   
)

Definition at line 49 of file sk_ctype_test.cpp.

49 {
50 EXPECT_TRUE(sk_iscntrl(0));
51 EXPECT_TRUE(sk_iscntrl(31));
52 EXPECT_TRUE(sk_iscntrl(127));
53 EXPECT_FALSE(sk_iscntrl(' '));
54 EXPECT_FALSE(sk_iscntrl('a'));
55}

◆ TEST() [13/25]

TEST ( SkCtypeTest  ,
IsDigit   
)

Definition at line 57 of file sk_ctype_test.cpp.

57 {
58 EXPECT_TRUE(sk_isdigit('0'));
59 EXPECT_TRUE(sk_isdigit('9'));
60 EXPECT_FALSE(sk_isdigit('a'));
61 EXPECT_FALSE(sk_isdigit(' '));
62}

◆ TEST() [14/25]

TEST ( SkCtypeTest  ,
IsGraph   
)

Definition at line 64 of file sk_ctype_test.cpp.

64 {
65 EXPECT_TRUE(sk_isgraph('!'));
66 EXPECT_TRUE(sk_isgraph('a'));
67 EXPECT_TRUE(sk_isgraph('~'));
68 EXPECT_FALSE(sk_isgraph(' '));
69 EXPECT_FALSE(sk_isgraph('\n'));
70}

◆ TEST() [15/25]

TEST ( SkCtypeTest  ,
IsLower   
)

Definition at line 72 of file sk_ctype_test.cpp.

72 {
73 EXPECT_TRUE(sk_islower('a'));
74 EXPECT_TRUE(sk_islower('z'));
75 EXPECT_FALSE(sk_islower('A'));
76 EXPECT_FALSE(sk_islower('0'));
77}

◆ TEST() [16/25]

TEST ( SkCtypeTest  ,
IsPrint   
)

Definition at line 79 of file sk_ctype_test.cpp.

79 {
80 EXPECT_TRUE(sk_isprint(' '));
81 EXPECT_TRUE(sk_isprint('a'));
82 EXPECT_TRUE(sk_isprint('~'));
83 EXPECT_FALSE(sk_isprint('\t'));
84 EXPECT_FALSE(sk_isprint(31));
85}

◆ TEST() [17/25]

TEST ( SkCtypeTest  ,
IsPunct   
)

Definition at line 87 of file sk_ctype_test.cpp.

87 {
88 EXPECT_TRUE(sk_ispunct('!'));
89 EXPECT_TRUE(sk_ispunct('.'));
90 EXPECT_FALSE(sk_ispunct('a'));
91 EXPECT_FALSE(sk_ispunct('0'));
92 EXPECT_FALSE(sk_ispunct(' '));
93}

◆ TEST() [18/25]

TEST ( SkCtypeTest  ,
IsSpace   
)

Definition at line 95 of file sk_ctype_test.cpp.

95 {
96 EXPECT_TRUE(sk_isspace(' '));
97 EXPECT_TRUE(sk_isspace('\f'));
98 EXPECT_TRUE(sk_isspace('\n'));
99 EXPECT_TRUE(sk_isspace('\r'));
100 EXPECT_TRUE(sk_isspace('\t'));
101 EXPECT_TRUE(sk_isspace('\v'));
102 EXPECT_FALSE(sk_isspace('a'));
103}

◆ TEST() [19/25]

TEST ( SkCtypeTest  ,
IsUpper   
)

Definition at line 105 of file sk_ctype_test.cpp.

105 {
106 EXPECT_TRUE(sk_isupper('A'));
107 EXPECT_TRUE(sk_isupper('Z'));
108 EXPECT_FALSE(sk_isupper('a'));
109 EXPECT_FALSE(sk_isupper('0'));
110}

◆ TEST() [20/25]

TEST ( SkCtypeTest  ,
IsXdigit   
)

Definition at line 112 of file sk_ctype_test.cpp.

112 {
113 EXPECT_TRUE(sk_isxdigit('0'));
114 EXPECT_TRUE(sk_isxdigit('9'));
115 EXPECT_TRUE(sk_isxdigit('a'));
116 EXPECT_TRUE(sk_isxdigit('f'));
117 EXPECT_TRUE(sk_isxdigit('A'));
118 EXPECT_TRUE(sk_isxdigit('F'));
119 EXPECT_FALSE(sk_isxdigit('g'));
120 EXPECT_FALSE(sk_isxdigit('G'));
121}

◆ TEST() [21/25]

TEST ( SkCtypeTest  ,
NonAscii   
)

Definition at line 229 of file sk_ctype_test.cpp.

229 {
230 // 测试非 ASCII 字符(假设函数处理扩展 ASCII)
231 // 这些应该返回 false 对于大多数函数
232 EXPECT_FALSE(sk_isalpha(128));
233 EXPECT_FALSE(sk_isdigit(200));
234 EXPECT_FALSE(sk_isalnum(255));
235}

◆ TEST() [22/25]

TEST ( SkCtypeTest  ,
ToLower   
)

Definition at line 123 of file sk_ctype_test.cpp.

123 {
124 EXPECT_EQ(sk_tolower('A'), 'a');
125 EXPECT_EQ(sk_tolower('Z'), 'z');
126 EXPECT_EQ(sk_tolower('a'), 'a');
127 EXPECT_EQ(sk_tolower('0'), '0');
128}

◆ TEST() [23/25]

TEST ( SkCtypeTest  ,
ToLowerBoundary   
)

Definition at line 145 of file sk_ctype_test.cpp.

145 {
146 // 边界值
147 EXPECT_EQ(sk_tolower('A' - 1), 'A' - 1); // '@'
148 EXPECT_EQ(sk_tolower('Z' + 1), 'Z' + 1); // '['
149}

◆ TEST() [24/25]

TEST ( SkCtypeTest  ,
ToUpper   
)

Definition at line 130 of file sk_ctype_test.cpp.

130 {
131 EXPECT_EQ(sk_toupper('a'), 'A');
132 EXPECT_EQ(sk_toupper('z'), 'Z');
133 EXPECT_EQ(sk_toupper('A'), 'A');
134 EXPECT_EQ(sk_toupper('0'), '0');
135}

◆ TEST() [25/25]

TEST ( SkCtypeTest  ,
ToUpperBoundary   
)

Definition at line 151 of file sk_ctype_test.cpp.

151 {
152 // 边界值
153 EXPECT_EQ(sk_toupper('a' - 1), 'a' - 1); // '`'
154 EXPECT_EQ(sk_toupper('z' + 1), 'z' + 1); // '{'
155}