this repo has no description
1// Copyright (c) Facebook, Inc. and its affiliates. (http://www.facebook.com)
2#include "Python.h"
3
4#include "capi-fixture.h"
5#include "capi-testing.h"
6
7namespace py {
8namespace testing {
9
10using PyCTypeExtensionApiTest = ExtensionApi;
11
12TEST_F(PyCTypeExtensionApiTest, IsAlnum) {
13 EXPECT_TRUE(Py_ISALNUM('a'));
14 EXPECT_TRUE(Py_ISALNUM('z'));
15 EXPECT_TRUE(Py_ISALNUM('A'));
16 EXPECT_TRUE(Py_ISALNUM('Z'));
17 EXPECT_TRUE(Py_ISALNUM('0'));
18 EXPECT_TRUE(Py_ISALNUM('9'));
19
20 EXPECT_FALSE(Py_ISALNUM('\x00'));
21 EXPECT_FALSE(Py_ISALNUM('\t'));
22 EXPECT_FALSE(Py_ISALNUM('_'));
23 EXPECT_FALSE(Py_ISALNUM('\x80'));
24}
25
26TEST_F(PyCTypeExtensionApiTest, IsAlpha) {
27 EXPECT_TRUE(Py_ISALPHA('a'));
28 EXPECT_TRUE(Py_ISALPHA('z'));
29 EXPECT_TRUE(Py_ISALPHA('A'));
30 EXPECT_TRUE(Py_ISALPHA('Z'));
31
32 EXPECT_FALSE(Py_ISALPHA('0'));
33 EXPECT_FALSE(Py_ISALPHA('9'));
34 EXPECT_FALSE(Py_ISALPHA('\x00'));
35 EXPECT_FALSE(Py_ISALPHA('\t'));
36 EXPECT_FALSE(Py_ISALPHA('_'));
37 EXPECT_FALSE(Py_ISALPHA('\x80'));
38}
39
40TEST_F(PyCTypeExtensionApiTest, IsDigit) {
41 EXPECT_TRUE(Py_ISDIGIT('0'));
42 EXPECT_TRUE(Py_ISDIGIT('9'));
43
44 EXPECT_FALSE(Py_ISDIGIT('a'));
45 EXPECT_FALSE(Py_ISDIGIT('z'));
46 EXPECT_FALSE(Py_ISDIGIT('A'));
47 EXPECT_FALSE(Py_ISDIGIT('Z'));
48 EXPECT_FALSE(Py_ISDIGIT('\x00'));
49 EXPECT_FALSE(Py_ISDIGIT('\t'));
50 EXPECT_FALSE(Py_ISDIGIT('_'));
51 EXPECT_FALSE(Py_ISDIGIT('\x80'));
52}
53
54TEST_F(PyCTypeExtensionApiTest, IsLower) {
55 EXPECT_TRUE(Py_ISLOWER('a'));
56 EXPECT_TRUE(Py_ISLOWER('z'));
57
58 EXPECT_FALSE(Py_ISLOWER('A'));
59 EXPECT_FALSE(Py_ISLOWER('Z'));
60 EXPECT_FALSE(Py_ISLOWER('0'));
61 EXPECT_FALSE(Py_ISLOWER('9'));
62 EXPECT_FALSE(Py_ISLOWER('\x00'));
63 EXPECT_FALSE(Py_ISLOWER('\t'));
64 EXPECT_FALSE(Py_ISLOWER('_'));
65 EXPECT_FALSE(Py_ISLOWER('\x80'));
66}
67
68TEST_F(PyCTypeExtensionApiTest, IsSpace) {
69 EXPECT_TRUE(Py_ISSPACE('\t'));
70 EXPECT_TRUE(Py_ISSPACE('\n'));
71 EXPECT_TRUE(Py_ISSPACE('\v'));
72 EXPECT_TRUE(Py_ISSPACE('\f'));
73 EXPECT_TRUE(Py_ISSPACE('\r'));
74 EXPECT_TRUE(Py_ISSPACE(' '));
75
76 // These are spaces in Unicode but not in pyctype.c
77 EXPECT_FALSE(Py_ISSPACE('\x1c'));
78 EXPECT_FALSE(Py_ISSPACE('\x1d'));
79 EXPECT_FALSE(Py_ISSPACE('\x1e'));
80 EXPECT_FALSE(Py_ISSPACE('\x1f'));
81
82 EXPECT_FALSE(Py_ISSPACE('a'));
83 EXPECT_FALSE(Py_ISSPACE('z'));
84 EXPECT_FALSE(Py_ISSPACE('A'));
85 EXPECT_FALSE(Py_ISSPACE('Z'));
86 EXPECT_FALSE(Py_ISSPACE('0'));
87 EXPECT_FALSE(Py_ISSPACE('9'));
88 EXPECT_FALSE(Py_ISSPACE('\x00'));
89 EXPECT_FALSE(Py_ISSPACE('_'));
90 EXPECT_FALSE(Py_ISSPACE('\x80'));
91}
92
93TEST_F(PyCTypeExtensionApiTest, IsUpper) {
94 EXPECT_TRUE(Py_ISUPPER('A'));
95 EXPECT_TRUE(Py_ISUPPER('Z'));
96
97 EXPECT_FALSE(Py_ISUPPER('a'));
98 EXPECT_FALSE(Py_ISUPPER('z'));
99 EXPECT_FALSE(Py_ISUPPER('0'));
100 EXPECT_FALSE(Py_ISUPPER('9'));
101 EXPECT_FALSE(Py_ISUPPER('\x00'));
102 EXPECT_FALSE(Py_ISUPPER('\t'));
103 EXPECT_FALSE(Py_ISUPPER('_'));
104 EXPECT_FALSE(Py_ISUPPER('\x80'));
105}
106
107TEST_F(PyCTypeExtensionApiTest, IsXDigit) {
108 EXPECT_TRUE(Py_ISXDIGIT('a'));
109 EXPECT_TRUE(Py_ISXDIGIT('f'));
110 EXPECT_TRUE(Py_ISXDIGIT('A'));
111 EXPECT_TRUE(Py_ISXDIGIT('F'));
112 EXPECT_TRUE(Py_ISXDIGIT('0'));
113 EXPECT_TRUE(Py_ISXDIGIT('9'));
114
115 EXPECT_FALSE(Py_ISXDIGIT('g'));
116 EXPECT_FALSE(Py_ISXDIGIT('z'));
117 EXPECT_FALSE(Py_ISXDIGIT('G'));
118 EXPECT_FALSE(Py_ISXDIGIT('Z'));
119 EXPECT_FALSE(Py_ISXDIGIT('\x00'));
120 EXPECT_FALSE(Py_ISXDIGIT('\t'));
121 EXPECT_FALSE(Py_ISXDIGIT('_'));
122 EXPECT_FALSE(Py_ISXDIGIT('\x80'));
123}
124
125TEST_F(PyCTypeExtensionApiTest, ToLower) {
126 EXPECT_EQ(Py_TOLOWER('A'), 'a');
127 EXPECT_EQ(Py_TOLOWER('Z'), 'z');
128
129 EXPECT_EQ(Py_TOLOWER('a'), 'a');
130 EXPECT_EQ(Py_TOLOWER('z'), 'z');
131 EXPECT_EQ(Py_TOLOWER('0'), '0');
132 EXPECT_EQ(Py_TOLOWER('9'), '9');
133 EXPECT_EQ(Py_TOLOWER('\x00'), '\x00');
134 EXPECT_EQ(Py_TOLOWER('\t'), '\t');
135 EXPECT_EQ(Py_TOLOWER('_'), '_');
136 EXPECT_EQ(Py_TOLOWER('\x80'), 0x80);
137}
138
139TEST_F(PyCTypeExtensionApiTest, ToUpper) {
140 EXPECT_EQ(Py_TOUPPER('a'), 'A');
141 EXPECT_EQ(Py_TOUPPER('z'), 'Z');
142
143 EXPECT_EQ(Py_TOUPPER('A'), 'A');
144 EXPECT_EQ(Py_TOUPPER('Z'), 'Z');
145 EXPECT_EQ(Py_TOUPPER('0'), '0');
146 EXPECT_EQ(Py_TOUPPER('9'), '9');
147 EXPECT_EQ(Py_TOUPPER('\x00'), '\x00');
148 EXPECT_EQ(Py_TOUPPER('\t'), '\t');
149 EXPECT_EQ(Py_TOUPPER('_'), '_');
150 EXPECT_EQ(Py_TOUPPER('\x80'), 0x80);
151}
152
153} // namespace testing
154} // namespace py