xref: /OK3568_Linux_fs/kernel/lib/test-kstrtox.c (revision 4882a59341e53eb6f0b4789bf948001014eff981)
1*4882a593Smuzhiyun #include <linux/init.h>
2*4882a593Smuzhiyun #include <linux/kernel.h>
3*4882a593Smuzhiyun #include <linux/module.h>
4*4882a593Smuzhiyun 
5*4882a593Smuzhiyun #define for_each_test(i, test)	\
6*4882a593Smuzhiyun 	for (i = 0; i < ARRAY_SIZE(test); i++)
7*4882a593Smuzhiyun 
8*4882a593Smuzhiyun struct test_fail {
9*4882a593Smuzhiyun 	const char *str;
10*4882a593Smuzhiyun 	unsigned int base;
11*4882a593Smuzhiyun };
12*4882a593Smuzhiyun 
13*4882a593Smuzhiyun #define DEFINE_TEST_FAIL(test)	\
14*4882a593Smuzhiyun 	const struct test_fail test[] __initconst
15*4882a593Smuzhiyun 
16*4882a593Smuzhiyun #define DECLARE_TEST_OK(type, test_type)	\
17*4882a593Smuzhiyun 	test_type {				\
18*4882a593Smuzhiyun 		const char *str;		\
19*4882a593Smuzhiyun 		unsigned int base;		\
20*4882a593Smuzhiyun 		type expected_res;		\
21*4882a593Smuzhiyun 	}
22*4882a593Smuzhiyun 
23*4882a593Smuzhiyun #define DEFINE_TEST_OK(type, test)	\
24*4882a593Smuzhiyun 	const type test[] __initconst
25*4882a593Smuzhiyun 
26*4882a593Smuzhiyun #define TEST_FAIL(fn, type, fmt, test)					\
27*4882a593Smuzhiyun {									\
28*4882a593Smuzhiyun 	unsigned int i;							\
29*4882a593Smuzhiyun 									\
30*4882a593Smuzhiyun 	for_each_test(i, test) {					\
31*4882a593Smuzhiyun 		const struct test_fail *t = &test[i];			\
32*4882a593Smuzhiyun 		type tmp;						\
33*4882a593Smuzhiyun 		int rv;							\
34*4882a593Smuzhiyun 									\
35*4882a593Smuzhiyun 		tmp = 0;						\
36*4882a593Smuzhiyun 		rv = fn(t->str, t->base, &tmp);				\
37*4882a593Smuzhiyun 		if (rv >= 0) {						\
38*4882a593Smuzhiyun 			WARN(1, "str '%s', base %u, expected -E, got %d/" fmt "\n",	\
39*4882a593Smuzhiyun 				t->str, t->base, rv, tmp);		\
40*4882a593Smuzhiyun 			continue;					\
41*4882a593Smuzhiyun 		}							\
42*4882a593Smuzhiyun 	}								\
43*4882a593Smuzhiyun }
44*4882a593Smuzhiyun 
45*4882a593Smuzhiyun #define TEST_OK(fn, type, fmt, test)					\
46*4882a593Smuzhiyun {									\
47*4882a593Smuzhiyun 	unsigned int i;							\
48*4882a593Smuzhiyun 									\
49*4882a593Smuzhiyun 	for_each_test(i, test) {					\
50*4882a593Smuzhiyun 		const typeof(test[0]) *t = &test[i];			\
51*4882a593Smuzhiyun 		type res;						\
52*4882a593Smuzhiyun 		int rv;							\
53*4882a593Smuzhiyun 									\
54*4882a593Smuzhiyun 		rv = fn(t->str, t->base, &res);				\
55*4882a593Smuzhiyun 		if (rv != 0) {						\
56*4882a593Smuzhiyun 			WARN(1, "str '%s', base %u, expected 0/" fmt ", got %d\n",	\
57*4882a593Smuzhiyun 				t->str, t->base, t->expected_res, rv);	\
58*4882a593Smuzhiyun 			continue;					\
59*4882a593Smuzhiyun 		}							\
60*4882a593Smuzhiyun 		if (res != t->expected_res) {				\
61*4882a593Smuzhiyun 			WARN(1, "str '%s', base %u, expected " fmt ", got " fmt "\n",	\
62*4882a593Smuzhiyun 				t->str, t->base, t->expected_res, res);	\
63*4882a593Smuzhiyun 			continue;					\
64*4882a593Smuzhiyun 		}							\
65*4882a593Smuzhiyun 	}								\
66*4882a593Smuzhiyun }
67*4882a593Smuzhiyun 
test_kstrtoull_ok(void)68*4882a593Smuzhiyun static void __init test_kstrtoull_ok(void)
69*4882a593Smuzhiyun {
70*4882a593Smuzhiyun 	DECLARE_TEST_OK(unsigned long long, struct test_ull);
71*4882a593Smuzhiyun 	static DEFINE_TEST_OK(struct test_ull, test_ull_ok) = {
72*4882a593Smuzhiyun 		{"0",	10,	0ULL},
73*4882a593Smuzhiyun 		{"1",	10,	1ULL},
74*4882a593Smuzhiyun 		{"127",	10,	127ULL},
75*4882a593Smuzhiyun 		{"128",	10,	128ULL},
76*4882a593Smuzhiyun 		{"129",	10,	129ULL},
77*4882a593Smuzhiyun 		{"255",	10,	255ULL},
78*4882a593Smuzhiyun 		{"256",	10,	256ULL},
79*4882a593Smuzhiyun 		{"257",	10,	257ULL},
80*4882a593Smuzhiyun 		{"32767",	10,	32767ULL},
81*4882a593Smuzhiyun 		{"32768",	10,	32768ULL},
82*4882a593Smuzhiyun 		{"32769",	10,	32769ULL},
83*4882a593Smuzhiyun 		{"65535",	10,	65535ULL},
84*4882a593Smuzhiyun 		{"65536",	10,	65536ULL},
85*4882a593Smuzhiyun 		{"65537",	10,	65537ULL},
86*4882a593Smuzhiyun 		{"2147483647",	10,	2147483647ULL},
87*4882a593Smuzhiyun 		{"2147483648",	10,	2147483648ULL},
88*4882a593Smuzhiyun 		{"2147483649",	10,	2147483649ULL},
89*4882a593Smuzhiyun 		{"4294967295",	10,	4294967295ULL},
90*4882a593Smuzhiyun 		{"4294967296",	10,	4294967296ULL},
91*4882a593Smuzhiyun 		{"4294967297",	10,	4294967297ULL},
92*4882a593Smuzhiyun 		{"9223372036854775807",	10,	9223372036854775807ULL},
93*4882a593Smuzhiyun 		{"9223372036854775808",	10,	9223372036854775808ULL},
94*4882a593Smuzhiyun 		{"9223372036854775809",	10,	9223372036854775809ULL},
95*4882a593Smuzhiyun 		{"18446744073709551614",	10,	18446744073709551614ULL},
96*4882a593Smuzhiyun 		{"18446744073709551615",	10,	18446744073709551615ULL},
97*4882a593Smuzhiyun 
98*4882a593Smuzhiyun 		{"00",		8,	00ULL},
99*4882a593Smuzhiyun 		{"01",		8,	01ULL},
100*4882a593Smuzhiyun 		{"0177",	8,	0177ULL},
101*4882a593Smuzhiyun 		{"0200",	8,	0200ULL},
102*4882a593Smuzhiyun 		{"0201",	8,	0201ULL},
103*4882a593Smuzhiyun 		{"0377",	8,	0377ULL},
104*4882a593Smuzhiyun 		{"0400",	8,	0400ULL},
105*4882a593Smuzhiyun 		{"0401",	8,	0401ULL},
106*4882a593Smuzhiyun 		{"077777",	8,	077777ULL},
107*4882a593Smuzhiyun 		{"0100000",	8,	0100000ULL},
108*4882a593Smuzhiyun 		{"0100001",	8,	0100001ULL},
109*4882a593Smuzhiyun 		{"0177777",	8,	0177777ULL},
110*4882a593Smuzhiyun 		{"0200000",	8,	0200000ULL},
111*4882a593Smuzhiyun 		{"0200001",	8,	0200001ULL},
112*4882a593Smuzhiyun 		{"017777777777",	8,	017777777777ULL},
113*4882a593Smuzhiyun 		{"020000000000",	8,	020000000000ULL},
114*4882a593Smuzhiyun 		{"020000000001",	8,	020000000001ULL},
115*4882a593Smuzhiyun 		{"037777777777",	8,	037777777777ULL},
116*4882a593Smuzhiyun 		{"040000000000",	8,	040000000000ULL},
117*4882a593Smuzhiyun 		{"040000000001",	8,	040000000001ULL},
118*4882a593Smuzhiyun 		{"0777777777777777777777",	8,	0777777777777777777777ULL},
119*4882a593Smuzhiyun 		{"01000000000000000000000",	8,	01000000000000000000000ULL},
120*4882a593Smuzhiyun 		{"01000000000000000000001",	8,	01000000000000000000001ULL},
121*4882a593Smuzhiyun 		{"01777777777777777777776",	8,	01777777777777777777776ULL},
122*4882a593Smuzhiyun 		{"01777777777777777777777",	8,	01777777777777777777777ULL},
123*4882a593Smuzhiyun 
124*4882a593Smuzhiyun 		{"0x0",		16,	0x0ULL},
125*4882a593Smuzhiyun 		{"0x1",		16,	0x1ULL},
126*4882a593Smuzhiyun 		{"0x7f",	16,	0x7fULL},
127*4882a593Smuzhiyun 		{"0x80",	16,	0x80ULL},
128*4882a593Smuzhiyun 		{"0x81",	16,	0x81ULL},
129*4882a593Smuzhiyun 		{"0xff",	16,	0xffULL},
130*4882a593Smuzhiyun 		{"0x100",	16,	0x100ULL},
131*4882a593Smuzhiyun 		{"0x101",	16,	0x101ULL},
132*4882a593Smuzhiyun 		{"0x7fff",	16,	0x7fffULL},
133*4882a593Smuzhiyun 		{"0x8000",	16,	0x8000ULL},
134*4882a593Smuzhiyun 		{"0x8001",	16,	0x8001ULL},
135*4882a593Smuzhiyun 		{"0xffff",	16,	0xffffULL},
136*4882a593Smuzhiyun 		{"0x10000",	16,	0x10000ULL},
137*4882a593Smuzhiyun 		{"0x10001",	16,	0x10001ULL},
138*4882a593Smuzhiyun 		{"0x7fffffff",	16,	0x7fffffffULL},
139*4882a593Smuzhiyun 		{"0x80000000",	16,	0x80000000ULL},
140*4882a593Smuzhiyun 		{"0x80000001",	16,	0x80000001ULL},
141*4882a593Smuzhiyun 		{"0xffffffff",	16,	0xffffffffULL},
142*4882a593Smuzhiyun 		{"0x100000000",	16,	0x100000000ULL},
143*4882a593Smuzhiyun 		{"0x100000001",	16,	0x100000001ULL},
144*4882a593Smuzhiyun 		{"0x7fffffffffffffff",	16,	0x7fffffffffffffffULL},
145*4882a593Smuzhiyun 		{"0x8000000000000000",	16,	0x8000000000000000ULL},
146*4882a593Smuzhiyun 		{"0x8000000000000001",	16,	0x8000000000000001ULL},
147*4882a593Smuzhiyun 		{"0xfffffffffffffffe",	16,	0xfffffffffffffffeULL},
148*4882a593Smuzhiyun 		{"0xffffffffffffffff",	16,	0xffffffffffffffffULL},
149*4882a593Smuzhiyun 
150*4882a593Smuzhiyun 		{"0\n",	0,	0ULL},
151*4882a593Smuzhiyun 	};
152*4882a593Smuzhiyun 	TEST_OK(kstrtoull, unsigned long long, "%llu", test_ull_ok);
153*4882a593Smuzhiyun }
154*4882a593Smuzhiyun 
test_kstrtoull_fail(void)155*4882a593Smuzhiyun static void __init test_kstrtoull_fail(void)
156*4882a593Smuzhiyun {
157*4882a593Smuzhiyun 	static DEFINE_TEST_FAIL(test_ull_fail) = {
158*4882a593Smuzhiyun 		{"",	0},
159*4882a593Smuzhiyun 		{"",	8},
160*4882a593Smuzhiyun 		{"",	10},
161*4882a593Smuzhiyun 		{"",	16},
162*4882a593Smuzhiyun 		{"\n",	0},
163*4882a593Smuzhiyun 		{"\n",	8},
164*4882a593Smuzhiyun 		{"\n",	10},
165*4882a593Smuzhiyun 		{"\n",	16},
166*4882a593Smuzhiyun 		{"\n0",	0},
167*4882a593Smuzhiyun 		{"\n0",	8},
168*4882a593Smuzhiyun 		{"\n0",	10},
169*4882a593Smuzhiyun 		{"\n0",	16},
170*4882a593Smuzhiyun 		{"+",	0},
171*4882a593Smuzhiyun 		{"+",	8},
172*4882a593Smuzhiyun 		{"+",	10},
173*4882a593Smuzhiyun 		{"+",	16},
174*4882a593Smuzhiyun 		{"-",	0},
175*4882a593Smuzhiyun 		{"-",	8},
176*4882a593Smuzhiyun 		{"-",	10},
177*4882a593Smuzhiyun 		{"-",	16},
178*4882a593Smuzhiyun 		{"0x",	0},
179*4882a593Smuzhiyun 		{"0x",	16},
180*4882a593Smuzhiyun 		{"0X",	0},
181*4882a593Smuzhiyun 		{"0X",	16},
182*4882a593Smuzhiyun 		{"0 ",	0},
183*4882a593Smuzhiyun 		{"1+",	0},
184*4882a593Smuzhiyun 		{"1-",	0},
185*4882a593Smuzhiyun 		{" 2",	0},
186*4882a593Smuzhiyun 		/* base autodetection */
187*4882a593Smuzhiyun 		{"0x0z",	0},
188*4882a593Smuzhiyun 		{"0z",		0},
189*4882a593Smuzhiyun 		{"a",		0},
190*4882a593Smuzhiyun 		/* digit >= base */
191*4882a593Smuzhiyun 		{"2",	2},
192*4882a593Smuzhiyun 		{"8",	8},
193*4882a593Smuzhiyun 		{"a",	10},
194*4882a593Smuzhiyun 		{"A",	10},
195*4882a593Smuzhiyun 		{"g",	16},
196*4882a593Smuzhiyun 		{"G",	16},
197*4882a593Smuzhiyun 		/* overflow */
198*4882a593Smuzhiyun 		{"10000000000000000000000000000000000000000000000000000000000000000",	2},
199*4882a593Smuzhiyun 		{"2000000000000000000000",	8},
200*4882a593Smuzhiyun 		{"18446744073709551616",	10},
201*4882a593Smuzhiyun 		{"10000000000000000",	16},
202*4882a593Smuzhiyun 		/* negative */
203*4882a593Smuzhiyun 		{"-0", 0},
204*4882a593Smuzhiyun 		{"-0", 8},
205*4882a593Smuzhiyun 		{"-0", 10},
206*4882a593Smuzhiyun 		{"-0", 16},
207*4882a593Smuzhiyun 		{"-1", 0},
208*4882a593Smuzhiyun 		{"-1", 8},
209*4882a593Smuzhiyun 		{"-1", 10},
210*4882a593Smuzhiyun 		{"-1", 16},
211*4882a593Smuzhiyun 		/* sign is first character if any */
212*4882a593Smuzhiyun 		{"-+1", 0},
213*4882a593Smuzhiyun 		{"-+1", 8},
214*4882a593Smuzhiyun 		{"-+1", 10},
215*4882a593Smuzhiyun 		{"-+1", 16},
216*4882a593Smuzhiyun 		/* nothing after \n */
217*4882a593Smuzhiyun 		{"0\n0", 0},
218*4882a593Smuzhiyun 		{"0\n0", 8},
219*4882a593Smuzhiyun 		{"0\n0", 10},
220*4882a593Smuzhiyun 		{"0\n0", 16},
221*4882a593Smuzhiyun 		{"0\n+", 0},
222*4882a593Smuzhiyun 		{"0\n+", 8},
223*4882a593Smuzhiyun 		{"0\n+", 10},
224*4882a593Smuzhiyun 		{"0\n+", 16},
225*4882a593Smuzhiyun 		{"0\n-", 0},
226*4882a593Smuzhiyun 		{"0\n-", 8},
227*4882a593Smuzhiyun 		{"0\n-", 10},
228*4882a593Smuzhiyun 		{"0\n-", 16},
229*4882a593Smuzhiyun 		{"0\n ", 0},
230*4882a593Smuzhiyun 		{"0\n ", 8},
231*4882a593Smuzhiyun 		{"0\n ", 10},
232*4882a593Smuzhiyun 		{"0\n ", 16},
233*4882a593Smuzhiyun 	};
234*4882a593Smuzhiyun 	TEST_FAIL(kstrtoull, unsigned long long, "%llu", test_ull_fail);
235*4882a593Smuzhiyun }
236*4882a593Smuzhiyun 
test_kstrtoll_ok(void)237*4882a593Smuzhiyun static void __init test_kstrtoll_ok(void)
238*4882a593Smuzhiyun {
239*4882a593Smuzhiyun 	DECLARE_TEST_OK(long long, struct test_ll);
240*4882a593Smuzhiyun 	static DEFINE_TEST_OK(struct test_ll, test_ll_ok) = {
241*4882a593Smuzhiyun 		{"0",	10,	0LL},
242*4882a593Smuzhiyun 		{"1",	10,	1LL},
243*4882a593Smuzhiyun 		{"127",	10,	127LL},
244*4882a593Smuzhiyun 		{"128",	10,	128LL},
245*4882a593Smuzhiyun 		{"129",	10,	129LL},
246*4882a593Smuzhiyun 		{"255",	10,	255LL},
247*4882a593Smuzhiyun 		{"256",	10,	256LL},
248*4882a593Smuzhiyun 		{"257",	10,	257LL},
249*4882a593Smuzhiyun 		{"32767",	10,	32767LL},
250*4882a593Smuzhiyun 		{"32768",	10,	32768LL},
251*4882a593Smuzhiyun 		{"32769",	10,	32769LL},
252*4882a593Smuzhiyun 		{"65535",	10,	65535LL},
253*4882a593Smuzhiyun 		{"65536",	10,	65536LL},
254*4882a593Smuzhiyun 		{"65537",	10,	65537LL},
255*4882a593Smuzhiyun 		{"2147483647",	10,	2147483647LL},
256*4882a593Smuzhiyun 		{"2147483648",	10,	2147483648LL},
257*4882a593Smuzhiyun 		{"2147483649",	10,	2147483649LL},
258*4882a593Smuzhiyun 		{"4294967295",	10,	4294967295LL},
259*4882a593Smuzhiyun 		{"4294967296",	10,	4294967296LL},
260*4882a593Smuzhiyun 		{"4294967297",	10,	4294967297LL},
261*4882a593Smuzhiyun 		{"9223372036854775807",	10,	9223372036854775807LL},
262*4882a593Smuzhiyun 
263*4882a593Smuzhiyun 		{"-0",	10,	0LL},
264*4882a593Smuzhiyun 		{"-1",	10,	-1LL},
265*4882a593Smuzhiyun 		{"-2",	10,	-2LL},
266*4882a593Smuzhiyun 		{"-9223372036854775808",	10,	LLONG_MIN},
267*4882a593Smuzhiyun 	};
268*4882a593Smuzhiyun 	TEST_OK(kstrtoll, long long, "%lld", test_ll_ok);
269*4882a593Smuzhiyun }
270*4882a593Smuzhiyun 
test_kstrtoll_fail(void)271*4882a593Smuzhiyun static void __init test_kstrtoll_fail(void)
272*4882a593Smuzhiyun {
273*4882a593Smuzhiyun 	static DEFINE_TEST_FAIL(test_ll_fail) = {
274*4882a593Smuzhiyun 		{"9223372036854775808",	10},
275*4882a593Smuzhiyun 		{"9223372036854775809",	10},
276*4882a593Smuzhiyun 		{"18446744073709551614",	10},
277*4882a593Smuzhiyun 		{"18446744073709551615",	10},
278*4882a593Smuzhiyun 		{"-9223372036854775809",	10},
279*4882a593Smuzhiyun 		{"-18446744073709551614",	10},
280*4882a593Smuzhiyun 		{"-18446744073709551615",	10},
281*4882a593Smuzhiyun 		/* sign is first character if any */
282*4882a593Smuzhiyun 		{"-+1", 0},
283*4882a593Smuzhiyun 		{"-+1", 8},
284*4882a593Smuzhiyun 		{"-+1", 10},
285*4882a593Smuzhiyun 		{"-+1", 16},
286*4882a593Smuzhiyun 	};
287*4882a593Smuzhiyun 	TEST_FAIL(kstrtoll, long long, "%lld", test_ll_fail);
288*4882a593Smuzhiyun }
289*4882a593Smuzhiyun 
test_kstrtou64_ok(void)290*4882a593Smuzhiyun static void __init test_kstrtou64_ok(void)
291*4882a593Smuzhiyun {
292*4882a593Smuzhiyun 	DECLARE_TEST_OK(u64, struct test_u64);
293*4882a593Smuzhiyun 	static DEFINE_TEST_OK(struct test_u64, test_u64_ok) = {
294*4882a593Smuzhiyun 		{"0",	10,	0},
295*4882a593Smuzhiyun 		{"1",	10,	1},
296*4882a593Smuzhiyun 		{"126",	10,	126},
297*4882a593Smuzhiyun 		{"127",	10,	127},
298*4882a593Smuzhiyun 		{"128",	10,	128},
299*4882a593Smuzhiyun 		{"129",	10,	129},
300*4882a593Smuzhiyun 		{"254",	10,	254},
301*4882a593Smuzhiyun 		{"255",	10,	255},
302*4882a593Smuzhiyun 		{"256",	10,	256},
303*4882a593Smuzhiyun 		{"257",	10,	257},
304*4882a593Smuzhiyun 		{"32766",	10,	32766},
305*4882a593Smuzhiyun 		{"32767",	10,	32767},
306*4882a593Smuzhiyun 		{"32768",	10,	32768},
307*4882a593Smuzhiyun 		{"32769",	10,	32769},
308*4882a593Smuzhiyun 		{"65534",	10,	65534},
309*4882a593Smuzhiyun 		{"65535",	10,	65535},
310*4882a593Smuzhiyun 		{"65536",	10,	65536},
311*4882a593Smuzhiyun 		{"65537",	10,	65537},
312*4882a593Smuzhiyun 		{"2147483646",	10,	2147483646},
313*4882a593Smuzhiyun 		{"2147483647",	10,	2147483647},
314*4882a593Smuzhiyun 		{"2147483648",	10,	2147483648ULL},
315*4882a593Smuzhiyun 		{"2147483649",	10,	2147483649ULL},
316*4882a593Smuzhiyun 		{"4294967294",	10,	4294967294ULL},
317*4882a593Smuzhiyun 		{"4294967295",	10,	4294967295ULL},
318*4882a593Smuzhiyun 		{"4294967296",	10,	4294967296ULL},
319*4882a593Smuzhiyun 		{"4294967297",	10,	4294967297ULL},
320*4882a593Smuzhiyun 		{"9223372036854775806",	10,	9223372036854775806ULL},
321*4882a593Smuzhiyun 		{"9223372036854775807",	10,	9223372036854775807ULL},
322*4882a593Smuzhiyun 		{"9223372036854775808",	10,	9223372036854775808ULL},
323*4882a593Smuzhiyun 		{"9223372036854775809",	10,	9223372036854775809ULL},
324*4882a593Smuzhiyun 		{"18446744073709551614",	10,	18446744073709551614ULL},
325*4882a593Smuzhiyun 		{"18446744073709551615",	10,	18446744073709551615ULL},
326*4882a593Smuzhiyun 	};
327*4882a593Smuzhiyun 	TEST_OK(kstrtou64, u64, "%llu", test_u64_ok);
328*4882a593Smuzhiyun }
329*4882a593Smuzhiyun 
test_kstrtou64_fail(void)330*4882a593Smuzhiyun static void __init test_kstrtou64_fail(void)
331*4882a593Smuzhiyun {
332*4882a593Smuzhiyun 	static DEFINE_TEST_FAIL(test_u64_fail) = {
333*4882a593Smuzhiyun 		{"-2",	10},
334*4882a593Smuzhiyun 		{"-1",	10},
335*4882a593Smuzhiyun 		{"18446744073709551616",	10},
336*4882a593Smuzhiyun 		{"18446744073709551617",	10},
337*4882a593Smuzhiyun 	};
338*4882a593Smuzhiyun 	TEST_FAIL(kstrtou64, u64, "%llu", test_u64_fail);
339*4882a593Smuzhiyun }
340*4882a593Smuzhiyun 
test_kstrtos64_ok(void)341*4882a593Smuzhiyun static void __init test_kstrtos64_ok(void)
342*4882a593Smuzhiyun {
343*4882a593Smuzhiyun 	DECLARE_TEST_OK(s64, struct test_s64);
344*4882a593Smuzhiyun 	static DEFINE_TEST_OK(struct test_s64, test_s64_ok) = {
345*4882a593Smuzhiyun 		{"-128",	10,	-128},
346*4882a593Smuzhiyun 		{"-127",	10,	-127},
347*4882a593Smuzhiyun 		{"-1",	10,	-1},
348*4882a593Smuzhiyun 		{"0",	10,	0},
349*4882a593Smuzhiyun 		{"1",	10,	1},
350*4882a593Smuzhiyun 		{"126",	10,	126},
351*4882a593Smuzhiyun 		{"127",	10,	127},
352*4882a593Smuzhiyun 		{"128",	10,	128},
353*4882a593Smuzhiyun 		{"129",	10,	129},
354*4882a593Smuzhiyun 		{"254",	10,	254},
355*4882a593Smuzhiyun 		{"255",	10,	255},
356*4882a593Smuzhiyun 		{"256",	10,	256},
357*4882a593Smuzhiyun 		{"257",	10,	257},
358*4882a593Smuzhiyun 		{"32766",	10,	32766},
359*4882a593Smuzhiyun 		{"32767",	10,	32767},
360*4882a593Smuzhiyun 		{"32768",	10,	32768},
361*4882a593Smuzhiyun 		{"32769",	10,	32769},
362*4882a593Smuzhiyun 		{"65534",	10,	65534},
363*4882a593Smuzhiyun 		{"65535",	10,	65535},
364*4882a593Smuzhiyun 		{"65536",	10,	65536},
365*4882a593Smuzhiyun 		{"65537",	10,	65537},
366*4882a593Smuzhiyun 		{"2147483646",	10,	2147483646},
367*4882a593Smuzhiyun 		{"2147483647",	10,	2147483647},
368*4882a593Smuzhiyun 		{"2147483648",	10,	2147483648LL},
369*4882a593Smuzhiyun 		{"2147483649",	10,	2147483649LL},
370*4882a593Smuzhiyun 		{"4294967294",	10,	4294967294LL},
371*4882a593Smuzhiyun 		{"4294967295",	10,	4294967295LL},
372*4882a593Smuzhiyun 		{"4294967296",	10,	4294967296LL},
373*4882a593Smuzhiyun 		{"4294967297",	10,	4294967297LL},
374*4882a593Smuzhiyun 		{"9223372036854775806",	10,	9223372036854775806LL},
375*4882a593Smuzhiyun 		{"9223372036854775807",	10,	9223372036854775807LL},
376*4882a593Smuzhiyun 	};
377*4882a593Smuzhiyun 	TEST_OK(kstrtos64, s64, "%lld", test_s64_ok);
378*4882a593Smuzhiyun }
379*4882a593Smuzhiyun 
test_kstrtos64_fail(void)380*4882a593Smuzhiyun static void __init test_kstrtos64_fail(void)
381*4882a593Smuzhiyun {
382*4882a593Smuzhiyun 	static DEFINE_TEST_FAIL(test_s64_fail) = {
383*4882a593Smuzhiyun 		{"9223372036854775808",	10},
384*4882a593Smuzhiyun 		{"9223372036854775809",	10},
385*4882a593Smuzhiyun 		{"18446744073709551614",	10},
386*4882a593Smuzhiyun 		{"18446744073709551615",	10},
387*4882a593Smuzhiyun 		{"18446744073709551616",	10},
388*4882a593Smuzhiyun 		{"18446744073709551617",	10},
389*4882a593Smuzhiyun 	};
390*4882a593Smuzhiyun 	TEST_FAIL(kstrtos64, s64, "%lld", test_s64_fail);
391*4882a593Smuzhiyun }
392*4882a593Smuzhiyun 
test_kstrtou32_ok(void)393*4882a593Smuzhiyun static void __init test_kstrtou32_ok(void)
394*4882a593Smuzhiyun {
395*4882a593Smuzhiyun 	DECLARE_TEST_OK(u32, struct test_u32);
396*4882a593Smuzhiyun 	static DEFINE_TEST_OK(struct test_u32, test_u32_ok) = {
397*4882a593Smuzhiyun 		{"0",	10,	0},
398*4882a593Smuzhiyun 		{"1",	10,	1},
399*4882a593Smuzhiyun 		{"126",	10,	126},
400*4882a593Smuzhiyun 		{"127",	10,	127},
401*4882a593Smuzhiyun 		{"128",	10,	128},
402*4882a593Smuzhiyun 		{"129",	10,	129},
403*4882a593Smuzhiyun 		{"254",	10,	254},
404*4882a593Smuzhiyun 		{"255",	10,	255},
405*4882a593Smuzhiyun 		{"256",	10,	256},
406*4882a593Smuzhiyun 		{"257",	10,	257},
407*4882a593Smuzhiyun 		{"32766",	10,	32766},
408*4882a593Smuzhiyun 		{"32767",	10,	32767},
409*4882a593Smuzhiyun 		{"32768",	10,	32768},
410*4882a593Smuzhiyun 		{"32769",	10,	32769},
411*4882a593Smuzhiyun 		{"65534",	10,	65534},
412*4882a593Smuzhiyun 		{"65535",	10,	65535},
413*4882a593Smuzhiyun 		{"65536",	10,	65536},
414*4882a593Smuzhiyun 		{"65537",	10,	65537},
415*4882a593Smuzhiyun 		{"2147483646",	10,	2147483646},
416*4882a593Smuzhiyun 		{"2147483647",	10,	2147483647},
417*4882a593Smuzhiyun 		{"2147483648",	10,	2147483648U},
418*4882a593Smuzhiyun 		{"2147483649",	10,	2147483649U},
419*4882a593Smuzhiyun 		{"4294967294",	10,	4294967294U},
420*4882a593Smuzhiyun 		{"4294967295",	10,	4294967295U},
421*4882a593Smuzhiyun 	};
422*4882a593Smuzhiyun 	TEST_OK(kstrtou32, u32, "%u", test_u32_ok);
423*4882a593Smuzhiyun }
424*4882a593Smuzhiyun 
test_kstrtou32_fail(void)425*4882a593Smuzhiyun static void __init test_kstrtou32_fail(void)
426*4882a593Smuzhiyun {
427*4882a593Smuzhiyun 	static DEFINE_TEST_FAIL(test_u32_fail) = {
428*4882a593Smuzhiyun 		{"-2",	10},
429*4882a593Smuzhiyun 		{"-1",	10},
430*4882a593Smuzhiyun 		{"4294967296",	10},
431*4882a593Smuzhiyun 		{"4294967297",	10},
432*4882a593Smuzhiyun 		{"9223372036854775806",	10},
433*4882a593Smuzhiyun 		{"9223372036854775807",	10},
434*4882a593Smuzhiyun 		{"9223372036854775808",	10},
435*4882a593Smuzhiyun 		{"9223372036854775809",	10},
436*4882a593Smuzhiyun 		{"18446744073709551614",	10},
437*4882a593Smuzhiyun 		{"18446744073709551615",	10},
438*4882a593Smuzhiyun 		{"18446744073709551616",	10},
439*4882a593Smuzhiyun 		{"18446744073709551617",	10},
440*4882a593Smuzhiyun 	};
441*4882a593Smuzhiyun 	TEST_FAIL(kstrtou32, u32, "%u", test_u32_fail);
442*4882a593Smuzhiyun }
443*4882a593Smuzhiyun 
test_kstrtos32_ok(void)444*4882a593Smuzhiyun static void __init test_kstrtos32_ok(void)
445*4882a593Smuzhiyun {
446*4882a593Smuzhiyun 	DECLARE_TEST_OK(s32, struct test_s32);
447*4882a593Smuzhiyun 	static DEFINE_TEST_OK(struct test_s32, test_s32_ok) = {
448*4882a593Smuzhiyun 		{"-128",	10,	-128},
449*4882a593Smuzhiyun 		{"-127",	10,	-127},
450*4882a593Smuzhiyun 		{"-1",	10,	-1},
451*4882a593Smuzhiyun 		{"0",	10,	0},
452*4882a593Smuzhiyun 		{"1",	10,	1},
453*4882a593Smuzhiyun 		{"126",	10,	126},
454*4882a593Smuzhiyun 		{"127",	10,	127},
455*4882a593Smuzhiyun 		{"128",	10,	128},
456*4882a593Smuzhiyun 		{"129",	10,	129},
457*4882a593Smuzhiyun 		{"254",	10,	254},
458*4882a593Smuzhiyun 		{"255",	10,	255},
459*4882a593Smuzhiyun 		{"256",	10,	256},
460*4882a593Smuzhiyun 		{"257",	10,	257},
461*4882a593Smuzhiyun 		{"32766",	10,	32766},
462*4882a593Smuzhiyun 		{"32767",	10,	32767},
463*4882a593Smuzhiyun 		{"32768",	10,	32768},
464*4882a593Smuzhiyun 		{"32769",	10,	32769},
465*4882a593Smuzhiyun 		{"65534",	10,	65534},
466*4882a593Smuzhiyun 		{"65535",	10,	65535},
467*4882a593Smuzhiyun 		{"65536",	10,	65536},
468*4882a593Smuzhiyun 		{"65537",	10,	65537},
469*4882a593Smuzhiyun 		{"2147483646",	10,	2147483646},
470*4882a593Smuzhiyun 		{"2147483647",	10,	2147483647},
471*4882a593Smuzhiyun 	};
472*4882a593Smuzhiyun 	TEST_OK(kstrtos32, s32, "%d", test_s32_ok);
473*4882a593Smuzhiyun }
474*4882a593Smuzhiyun 
test_kstrtos32_fail(void)475*4882a593Smuzhiyun static void __init test_kstrtos32_fail(void)
476*4882a593Smuzhiyun {
477*4882a593Smuzhiyun 	static DEFINE_TEST_FAIL(test_s32_fail) = {
478*4882a593Smuzhiyun 		{"2147483648",	10},
479*4882a593Smuzhiyun 		{"2147483649",	10},
480*4882a593Smuzhiyun 		{"4294967294",	10},
481*4882a593Smuzhiyun 		{"4294967295",	10},
482*4882a593Smuzhiyun 		{"4294967296",	10},
483*4882a593Smuzhiyun 		{"4294967297",	10},
484*4882a593Smuzhiyun 		{"9223372036854775806",	10},
485*4882a593Smuzhiyun 		{"9223372036854775807",	10},
486*4882a593Smuzhiyun 		{"9223372036854775808",	10},
487*4882a593Smuzhiyun 		{"9223372036854775809",	10},
488*4882a593Smuzhiyun 		{"18446744073709551614",	10},
489*4882a593Smuzhiyun 		{"18446744073709551615",	10},
490*4882a593Smuzhiyun 		{"18446744073709551616",	10},
491*4882a593Smuzhiyun 		{"18446744073709551617",	10},
492*4882a593Smuzhiyun 	};
493*4882a593Smuzhiyun 	TEST_FAIL(kstrtos32, s32, "%d", test_s32_fail);
494*4882a593Smuzhiyun }
495*4882a593Smuzhiyun 
test_kstrtou16_ok(void)496*4882a593Smuzhiyun static void __init test_kstrtou16_ok(void)
497*4882a593Smuzhiyun {
498*4882a593Smuzhiyun 	DECLARE_TEST_OK(u16, struct test_u16);
499*4882a593Smuzhiyun 	static DEFINE_TEST_OK(struct test_u16, test_u16_ok) = {
500*4882a593Smuzhiyun 		{"0",	10,	0},
501*4882a593Smuzhiyun 		{"1",	10,	1},
502*4882a593Smuzhiyun 		{"126",	10,	126},
503*4882a593Smuzhiyun 		{"127",	10,	127},
504*4882a593Smuzhiyun 		{"128",	10,	128},
505*4882a593Smuzhiyun 		{"129",	10,	129},
506*4882a593Smuzhiyun 		{"254",	10,	254},
507*4882a593Smuzhiyun 		{"255",	10,	255},
508*4882a593Smuzhiyun 		{"256",	10,	256},
509*4882a593Smuzhiyun 		{"257",	10,	257},
510*4882a593Smuzhiyun 		{"32766",	10,	32766},
511*4882a593Smuzhiyun 		{"32767",	10,	32767},
512*4882a593Smuzhiyun 		{"32768",	10,	32768},
513*4882a593Smuzhiyun 		{"32769",	10,	32769},
514*4882a593Smuzhiyun 		{"65534",	10,	65534},
515*4882a593Smuzhiyun 		{"65535",	10,	65535},
516*4882a593Smuzhiyun 	};
517*4882a593Smuzhiyun 	TEST_OK(kstrtou16, u16, "%hu", test_u16_ok);
518*4882a593Smuzhiyun }
519*4882a593Smuzhiyun 
test_kstrtou16_fail(void)520*4882a593Smuzhiyun static void __init test_kstrtou16_fail(void)
521*4882a593Smuzhiyun {
522*4882a593Smuzhiyun 	static DEFINE_TEST_FAIL(test_u16_fail) = {
523*4882a593Smuzhiyun 		{"-2",	10},
524*4882a593Smuzhiyun 		{"-1",	10},
525*4882a593Smuzhiyun 		{"65536",	10},
526*4882a593Smuzhiyun 		{"65537",	10},
527*4882a593Smuzhiyun 		{"2147483646",	10},
528*4882a593Smuzhiyun 		{"2147483647",	10},
529*4882a593Smuzhiyun 		{"2147483648",	10},
530*4882a593Smuzhiyun 		{"2147483649",	10},
531*4882a593Smuzhiyun 		{"4294967294",	10},
532*4882a593Smuzhiyun 		{"4294967295",	10},
533*4882a593Smuzhiyun 		{"4294967296",	10},
534*4882a593Smuzhiyun 		{"4294967297",	10},
535*4882a593Smuzhiyun 		{"9223372036854775806",	10},
536*4882a593Smuzhiyun 		{"9223372036854775807",	10},
537*4882a593Smuzhiyun 		{"9223372036854775808",	10},
538*4882a593Smuzhiyun 		{"9223372036854775809",	10},
539*4882a593Smuzhiyun 		{"18446744073709551614",	10},
540*4882a593Smuzhiyun 		{"18446744073709551615",	10},
541*4882a593Smuzhiyun 		{"18446744073709551616",	10},
542*4882a593Smuzhiyun 		{"18446744073709551617",	10},
543*4882a593Smuzhiyun 	};
544*4882a593Smuzhiyun 	TEST_FAIL(kstrtou16, u16, "%hu", test_u16_fail);
545*4882a593Smuzhiyun }
546*4882a593Smuzhiyun 
test_kstrtos16_ok(void)547*4882a593Smuzhiyun static void __init test_kstrtos16_ok(void)
548*4882a593Smuzhiyun {
549*4882a593Smuzhiyun 	DECLARE_TEST_OK(s16, struct test_s16);
550*4882a593Smuzhiyun 	static DEFINE_TEST_OK(struct test_s16, test_s16_ok) = {
551*4882a593Smuzhiyun 		{"-130",	10,	-130},
552*4882a593Smuzhiyun 		{"-129",	10,	-129},
553*4882a593Smuzhiyun 		{"-128",	10,	-128},
554*4882a593Smuzhiyun 		{"-127",	10,	-127},
555*4882a593Smuzhiyun 		{"-1",	10,	-1},
556*4882a593Smuzhiyun 		{"0",	10,	0},
557*4882a593Smuzhiyun 		{"1",	10,	1},
558*4882a593Smuzhiyun 		{"126",	10,	126},
559*4882a593Smuzhiyun 		{"127",	10,	127},
560*4882a593Smuzhiyun 		{"128",	10,	128},
561*4882a593Smuzhiyun 		{"129",	10,	129},
562*4882a593Smuzhiyun 		{"254",	10,	254},
563*4882a593Smuzhiyun 		{"255",	10,	255},
564*4882a593Smuzhiyun 		{"256",	10,	256},
565*4882a593Smuzhiyun 		{"257",	10,	257},
566*4882a593Smuzhiyun 		{"32766",	10,	32766},
567*4882a593Smuzhiyun 		{"32767",	10,	32767},
568*4882a593Smuzhiyun 	};
569*4882a593Smuzhiyun 	TEST_OK(kstrtos16, s16, "%hd", test_s16_ok);
570*4882a593Smuzhiyun }
571*4882a593Smuzhiyun 
test_kstrtos16_fail(void)572*4882a593Smuzhiyun static void __init test_kstrtos16_fail(void)
573*4882a593Smuzhiyun {
574*4882a593Smuzhiyun 	static DEFINE_TEST_FAIL(test_s16_fail) = {
575*4882a593Smuzhiyun 		{"32768",	10},
576*4882a593Smuzhiyun 		{"32769",	10},
577*4882a593Smuzhiyun 		{"65534",	10},
578*4882a593Smuzhiyun 		{"65535",	10},
579*4882a593Smuzhiyun 		{"65536",	10},
580*4882a593Smuzhiyun 		{"65537",	10},
581*4882a593Smuzhiyun 		{"2147483646",	10},
582*4882a593Smuzhiyun 		{"2147483647",	10},
583*4882a593Smuzhiyun 		{"2147483648",	10},
584*4882a593Smuzhiyun 		{"2147483649",	10},
585*4882a593Smuzhiyun 		{"4294967294",	10},
586*4882a593Smuzhiyun 		{"4294967295",	10},
587*4882a593Smuzhiyun 		{"4294967296",	10},
588*4882a593Smuzhiyun 		{"4294967297",	10},
589*4882a593Smuzhiyun 		{"9223372036854775806",	10},
590*4882a593Smuzhiyun 		{"9223372036854775807",	10},
591*4882a593Smuzhiyun 		{"9223372036854775808",	10},
592*4882a593Smuzhiyun 		{"9223372036854775809",	10},
593*4882a593Smuzhiyun 		{"18446744073709551614",	10},
594*4882a593Smuzhiyun 		{"18446744073709551615",	10},
595*4882a593Smuzhiyun 		{"18446744073709551616",	10},
596*4882a593Smuzhiyun 		{"18446744073709551617",	10},
597*4882a593Smuzhiyun 	};
598*4882a593Smuzhiyun 	TEST_FAIL(kstrtos16, s16, "%hd", test_s16_fail);
599*4882a593Smuzhiyun }
600*4882a593Smuzhiyun 
test_kstrtou8_ok(void)601*4882a593Smuzhiyun static void __init test_kstrtou8_ok(void)
602*4882a593Smuzhiyun {
603*4882a593Smuzhiyun 	DECLARE_TEST_OK(u8, struct test_u8);
604*4882a593Smuzhiyun 	static DEFINE_TEST_OK(struct test_u8, test_u8_ok) = {
605*4882a593Smuzhiyun 		{"0",	10,	0},
606*4882a593Smuzhiyun 		{"1",	10,	1},
607*4882a593Smuzhiyun 		{"126",	10,	126},
608*4882a593Smuzhiyun 		{"127",	10,	127},
609*4882a593Smuzhiyun 		{"128",	10,	128},
610*4882a593Smuzhiyun 		{"129",	10,	129},
611*4882a593Smuzhiyun 		{"254",	10,	254},
612*4882a593Smuzhiyun 		{"255",	10,	255},
613*4882a593Smuzhiyun 	};
614*4882a593Smuzhiyun 	TEST_OK(kstrtou8, u8, "%hhu", test_u8_ok);
615*4882a593Smuzhiyun }
616*4882a593Smuzhiyun 
test_kstrtou8_fail(void)617*4882a593Smuzhiyun static void __init test_kstrtou8_fail(void)
618*4882a593Smuzhiyun {
619*4882a593Smuzhiyun 	static DEFINE_TEST_FAIL(test_u8_fail) = {
620*4882a593Smuzhiyun 		{"-2",	10},
621*4882a593Smuzhiyun 		{"-1",	10},
622*4882a593Smuzhiyun 		{"256",	10},
623*4882a593Smuzhiyun 		{"257",	10},
624*4882a593Smuzhiyun 		{"32766",	10},
625*4882a593Smuzhiyun 		{"32767",	10},
626*4882a593Smuzhiyun 		{"32768",	10},
627*4882a593Smuzhiyun 		{"32769",	10},
628*4882a593Smuzhiyun 		{"65534",	10},
629*4882a593Smuzhiyun 		{"65535",	10},
630*4882a593Smuzhiyun 		{"65536",	10},
631*4882a593Smuzhiyun 		{"65537",	10},
632*4882a593Smuzhiyun 		{"2147483646",	10},
633*4882a593Smuzhiyun 		{"2147483647",	10},
634*4882a593Smuzhiyun 		{"2147483648",	10},
635*4882a593Smuzhiyun 		{"2147483649",	10},
636*4882a593Smuzhiyun 		{"4294967294",	10},
637*4882a593Smuzhiyun 		{"4294967295",	10},
638*4882a593Smuzhiyun 		{"4294967296",	10},
639*4882a593Smuzhiyun 		{"4294967297",	10},
640*4882a593Smuzhiyun 		{"9223372036854775806",	10},
641*4882a593Smuzhiyun 		{"9223372036854775807",	10},
642*4882a593Smuzhiyun 		{"9223372036854775808",	10},
643*4882a593Smuzhiyun 		{"9223372036854775809",	10},
644*4882a593Smuzhiyun 		{"18446744073709551614",	10},
645*4882a593Smuzhiyun 		{"18446744073709551615",	10},
646*4882a593Smuzhiyun 		{"18446744073709551616",	10},
647*4882a593Smuzhiyun 		{"18446744073709551617",	10},
648*4882a593Smuzhiyun 	};
649*4882a593Smuzhiyun 	TEST_FAIL(kstrtou8, u8, "%hhu", test_u8_fail);
650*4882a593Smuzhiyun }
651*4882a593Smuzhiyun 
test_kstrtos8_ok(void)652*4882a593Smuzhiyun static void __init test_kstrtos8_ok(void)
653*4882a593Smuzhiyun {
654*4882a593Smuzhiyun 	DECLARE_TEST_OK(s8, struct test_s8);
655*4882a593Smuzhiyun 	static DEFINE_TEST_OK(struct test_s8, test_s8_ok) = {
656*4882a593Smuzhiyun 		{"-128",	10,	-128},
657*4882a593Smuzhiyun 		{"-127",	10,	-127},
658*4882a593Smuzhiyun 		{"-1",	10,	-1},
659*4882a593Smuzhiyun 		{"0",	10,	0},
660*4882a593Smuzhiyun 		{"1",	10,	1},
661*4882a593Smuzhiyun 		{"126",	10,	126},
662*4882a593Smuzhiyun 		{"127",	10,	127},
663*4882a593Smuzhiyun 	};
664*4882a593Smuzhiyun 	TEST_OK(kstrtos8, s8, "%hhd", test_s8_ok);
665*4882a593Smuzhiyun }
666*4882a593Smuzhiyun 
test_kstrtos8_fail(void)667*4882a593Smuzhiyun static void __init test_kstrtos8_fail(void)
668*4882a593Smuzhiyun {
669*4882a593Smuzhiyun 	static DEFINE_TEST_FAIL(test_s8_fail) = {
670*4882a593Smuzhiyun 		{"-130",	10},
671*4882a593Smuzhiyun 		{"-129",	10},
672*4882a593Smuzhiyun 		{"128",	10},
673*4882a593Smuzhiyun 		{"129",	10},
674*4882a593Smuzhiyun 		{"254",	10},
675*4882a593Smuzhiyun 		{"255",	10},
676*4882a593Smuzhiyun 		{"256",	10},
677*4882a593Smuzhiyun 		{"257",	10},
678*4882a593Smuzhiyun 		{"32766",	10},
679*4882a593Smuzhiyun 		{"32767",	10},
680*4882a593Smuzhiyun 		{"32768",	10},
681*4882a593Smuzhiyun 		{"32769",	10},
682*4882a593Smuzhiyun 		{"65534",	10},
683*4882a593Smuzhiyun 		{"65535",	10},
684*4882a593Smuzhiyun 		{"65536",	10},
685*4882a593Smuzhiyun 		{"65537",	10},
686*4882a593Smuzhiyun 		{"2147483646",	10},
687*4882a593Smuzhiyun 		{"2147483647",	10},
688*4882a593Smuzhiyun 		{"2147483648",	10},
689*4882a593Smuzhiyun 		{"2147483649",	10},
690*4882a593Smuzhiyun 		{"4294967294",	10},
691*4882a593Smuzhiyun 		{"4294967295",	10},
692*4882a593Smuzhiyun 		{"4294967296",	10},
693*4882a593Smuzhiyun 		{"4294967297",	10},
694*4882a593Smuzhiyun 		{"9223372036854775806",	10},
695*4882a593Smuzhiyun 		{"9223372036854775807",	10},
696*4882a593Smuzhiyun 		{"9223372036854775808",	10},
697*4882a593Smuzhiyun 		{"9223372036854775809",	10},
698*4882a593Smuzhiyun 		{"18446744073709551614",	10},
699*4882a593Smuzhiyun 		{"18446744073709551615",	10},
700*4882a593Smuzhiyun 		{"18446744073709551616",	10},
701*4882a593Smuzhiyun 		{"18446744073709551617",	10},
702*4882a593Smuzhiyun 	};
703*4882a593Smuzhiyun 	TEST_FAIL(kstrtos8, s8, "%hhd", test_s8_fail);
704*4882a593Smuzhiyun }
705*4882a593Smuzhiyun 
test_kstrtox_init(void)706*4882a593Smuzhiyun static int __init test_kstrtox_init(void)
707*4882a593Smuzhiyun {
708*4882a593Smuzhiyun 	test_kstrtoull_ok();
709*4882a593Smuzhiyun 	test_kstrtoull_fail();
710*4882a593Smuzhiyun 	test_kstrtoll_ok();
711*4882a593Smuzhiyun 	test_kstrtoll_fail();
712*4882a593Smuzhiyun 
713*4882a593Smuzhiyun 	test_kstrtou64_ok();
714*4882a593Smuzhiyun 	test_kstrtou64_fail();
715*4882a593Smuzhiyun 	test_kstrtos64_ok();
716*4882a593Smuzhiyun 	test_kstrtos64_fail();
717*4882a593Smuzhiyun 
718*4882a593Smuzhiyun 	test_kstrtou32_ok();
719*4882a593Smuzhiyun 	test_kstrtou32_fail();
720*4882a593Smuzhiyun 	test_kstrtos32_ok();
721*4882a593Smuzhiyun 	test_kstrtos32_fail();
722*4882a593Smuzhiyun 
723*4882a593Smuzhiyun 	test_kstrtou16_ok();
724*4882a593Smuzhiyun 	test_kstrtou16_fail();
725*4882a593Smuzhiyun 	test_kstrtos16_ok();
726*4882a593Smuzhiyun 	test_kstrtos16_fail();
727*4882a593Smuzhiyun 
728*4882a593Smuzhiyun 	test_kstrtou8_ok();
729*4882a593Smuzhiyun 	test_kstrtou8_fail();
730*4882a593Smuzhiyun 	test_kstrtos8_ok();
731*4882a593Smuzhiyun 	test_kstrtos8_fail();
732*4882a593Smuzhiyun 	return -EINVAL;
733*4882a593Smuzhiyun }
734*4882a593Smuzhiyun module_init(test_kstrtox_init);
735*4882a593Smuzhiyun MODULE_LICENSE("Dual BSD/GPL");
736