1 /*
2 * Copyright (c) 2022 Huawei Device Co., Ltd.
3 * Licensed under the Apache License, Version 2.0 (the "License");
4 * you may not use this file except in compliance with the License.
5 * You may obtain a copy of the License at
6 *
7 * http://www.apache.org/licenses/LICENSE-2.0
8 *
9 * Unless required by applicable law or agreed to in writing, software
10 * distributed under the License is distributed on an "AS IS" BASIS,
11 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 * See the License for the specific language governing permissions and
13 * limitations under the License.
14 */
15
16 #include "test.h"
17 #include <vsnprintf_s_p.h>
18 #include "functionalext.h"
19
20 #define MAX_LOG_LEN 1024 /* maximum length of a log, include '\0' */
21 #define MAX_TAG_LEN 32 /* log tag size, include '\0' */
22 #define SECUREC_STRING_MAX_LEN 0x7fffffffUL
23
24 typedef void (*TEST_FUN)(void);
25
vsprintf_test(char * strDest,size_t destMax,size_t count,int priv,const char * fmt,...)26 static int vsprintf_test(char *strDest, size_t destMax, size_t count, int priv, const char *fmt, ...)
27 {
28 int ret;
29 va_list ap;
30 va_start(ap, fmt);
31 ret = vsnprintfp_s(strDest, destMax, count, priv, fmt, ap);
32 va_end(ap);
33 return ret;
34 }
35
36 /**
37 * @tc.name : vsnprintfp_s_0010
38 * @tc.desc : test vsnprintf normal condition
39 * @tc.level : Level 0
40 */
vsnprintfp_s_0010(void)41 static void vsnprintfp_s_0010(void)
42 {
43 char buf[MAX_LOG_LEN] = {0};
44 char *fmt = "MUSL";
45 int ret = vsprintf_test(buf, MAX_LOG_LEN, MAX_LOG_LEN - 1, true, fmt);
46 EXPECT_TRUE("vsnprintfp_s_0010", ret > 0);
47 EXPECT_STREQ("vsnprintfp_s_0010", buf, "MUSL");
48 }
49
50 /**
51 * @tc.name : vsnprintfp_s_0020
52 * @tc.desc : test vsnprintf both param buf and fmt are NULL
53 * @tc.level : Level 2
54 */
vsnprintfp_s_0020(void)55 static void vsnprintfp_s_0020(void)
56 {
57 char *buf = NULL;
58 char *fmt = NULL;
59 int ret = vsprintf_test(buf, MAX_LOG_LEN, MAX_LOG_LEN - 1, true, fmt);
60 EXPECT_TRUE("vsnprintfp_s_0020", ret < 0);
61 }
62
63 /**
64 * @tc.name : vsnprintfp_s_0030
65 * @tc.desc : test vsnprintf param destMax is smaller than count
66 * @tc.level : Level 1
67 */
vsnprintfp_s_0030(void)68 static void vsnprintfp_s_0030(void)
69 {
70 char buf[MAX_LOG_LEN] = {0};
71 char *fmt = "MUSL";
72 int ret = vsprintf_test(buf, MAX_LOG_LEN - 1, MAX_LOG_LEN, true, fmt);
73 EXPECT_TRUE("vsnprintfp_s_0030", ret > 0);
74 EXPECT_STREQ("vsnprintfp_s_0030", buf, "MUSL");
75 }
76
77 /**
78 * @tc.name : vsnprintfp_s_0040
79 * @tc.desc : test vsnprintf param fmt with %s
80 * @tc.level : Level 1
81 */
vsnprintfp_s_0040(void)82 static void vsnprintfp_s_0040(void)
83 {
84 char buf[MAX_LOG_LEN] = {0};
85 char *fmt = "%s";
86 int ret = vsprintf_test(buf, MAX_LOG_LEN - 1, MAX_LOG_LEN, false, fmt, "MUSL");
87 EXPECT_TRUE("vsnprintfp_s_0040", ret > 0);
88 EXPECT_STREQ("vsnprintfp_s_0040", buf, "MUSL");
89 }
90
91 /**
92 * @tc.name : vsnprintfp_s_0050
93 * @tc.desc : test vsnprintf param destMax is 0
94 * @tc.level : Level 2
95 */
vsnprintfp_s_0050(void)96 static void vsnprintfp_s_0050(void)
97 {
98 char buf[MAX_LOG_LEN] = {0};
99 char *fmt = "MUSL";
100 int ret = vsprintf_test(buf, 0, MAX_LOG_LEN - 1, true, fmt);
101 EXPECT_TRUE("vsnprintfp_s_0050", ret < 0);
102 EXPECT_STREQ("vsnprintfp_s_0050", buf, "");
103 }
104
105 /**
106 * @tc.name : vsnprintfp_s_0060
107 * @tc.desc : test vsnprintf param destMax is greater than SECUREC_STRING_MAX_LEN
108 * @tc.level : Level 2
109 */
vsnprintfp_s_0060(void)110 static void vsnprintfp_s_0060(void)
111 {
112 char buf[MAX_LOG_LEN] = {0};
113 char *fmt = "MUSL";
114 int ret = vsprintf_test(buf, SECUREC_STRING_MAX_LEN + 1, MAX_LOG_LEN - 1, true, fmt);
115 EXPECT_TRUE("vsnprintfp_s_0060", ret < 0);
116 EXPECT_STREQ("vsnprintfp_s_0060", buf, "");
117 }
118
119 /**
120 * @tc.name : vsnprintfp_s_0070
121 * @tc.desc : test vsnprintf param count is greater than SECUREC_STRING_MAX_LEN
122 * @tc.level : Level 2
123 */
vsnprintfp_s_0070(void)124 static void vsnprintfp_s_0070(void)
125 {
126 char buf[MAX_LOG_LEN] = {0};
127 char *fmt = "MUSL";
128 int ret = vsprintf_test(buf, MAX_LOG_LEN - 1, SECUREC_STRING_MAX_LEN + 1, true, fmt);
129 EXPECT_TRUE("vsnprintfp_s_0070", ret < 0);
130 EXPECT_STREQ("vsnprintfp_s_0070", buf, "");
131 }
132
133 /**
134 * @tc.name : vsnprintfp_s_0080
135 * @tc.desc : test vsnprintf param fmt is NULL
136 * @tc.level : Level 2
137 */
vsnprintfp_s_0080(void)138 static void vsnprintfp_s_0080(void)
139 {
140 char buf[MAX_LOG_LEN] = {0};
141 char *fmt = NULL;
142 int ret = vsprintf_test(buf, MAX_LOG_LEN, MAX_LOG_LEN - 1, true, fmt);
143 EXPECT_TRUE("vsnprintfp_s_0080", ret < 0);
144 }
145
146 /**
147 * @tc.name : vsnprintfp_s_0090
148 * @tc.desc : test vsnprintf param count is less than buf's size
149 * @tc.level : Level 2
150 */
vsnprintfp_s_0090(void)151 static void vsnprintfp_s_0090(void)
152 {
153 char buf[2] = {0};
154 char *fmt = "%s";
155 int ret = vsprintf_test(buf, 1, 1, false, fmt, "test_test");
156 EXPECT_TRUE("vsnprintfp_s_0090", ret < 0);
157 }
158
159 /**
160 * @tc.name : vsnprintfp_s_0100
161 * @tc.desc : test vsnprintf param fmt is ""
162 * @tc.level : Level 1
163 */
vsnprintfp_s_0100(void)164 static void vsnprintfp_s_0100(void)
165 {
166 char buf[MAX_LOG_LEN] = {0};
167 char *fmt = "";
168 int ret = vsprintf_test(buf, MAX_LOG_LEN, MAX_LOG_LEN - 1, true, fmt);
169 EXPECT_TRUE("vsnprintfp_s_0100", ret == 0);
170 EXPECT_STREQ("vsnprintfp_s_0100", buf, "");
171 }
172
173 /**
174 * @tc.name : vsnprintfp_s_0110
175 * @tc.desc : test vsnprintf param fmt is "%02d"
176 * @tc.level : Level 1
177 */
vsnprintfp_s_0110(void)178 static void vsnprintfp_s_0110(void)
179 {
180 char buf[MAX_LOG_LEN] = {0};
181 char *fmt = "%02d";
182 int ret = vsprintf_test(buf, MAX_LOG_LEN, MAX_LOG_LEN - 1, false, fmt, 2);
183 EXPECT_TRUE("vsnprintfp_s_0110", ret > 0);
184 EXPECT_STREQ("vsnprintfp_s_0110", buf, "02");
185 }
186
187 /**
188 * @tc.name : vsnprintfp_s_0120
189 * @tc.desc : test vsnprintf param fmt is "%p"
190 * @tc.level : Level 1
191 */
vsnprintfp_s_0120(void)192 static void vsnprintfp_s_0120(void)
193 {
194 char buf[MAX_LOG_LEN] = {0};
195 char *fmt = "%p";
196 int ret = vsprintf_test(buf, MAX_LOG_LEN, MAX_LOG_LEN - 1, false, fmt, &buf[0]);
197 EXPECT_TRUE("vsnprintfp_s_0120", ret > 0);
198 EXPECT_TRUE("vsnprintfp_s_0120", strlen(buf) > 0);
199 }
200
201 /**
202 * @tc.name : vsnprintfp_s_0130
203 * @tc.desc : test vsnprintf param fmt is "%S"
204 * @tc.level : Level 1
205 */
vsnprintfp_s_0130(void)206 static void vsnprintfp_s_0130(void)
207 {
208 char buf[MAX_LOG_LEN] = {0};
209 char *fmt = "%S";
210 int ret = vsprintf_test(buf, MAX_LOG_LEN, MAX_LOG_LEN - 1, false, fmt, "Test");
211 EXPECT_TRUE("vsnprintfp_s_0130", ret < 0);
212 }
213
214 /**
215 * @tc.name : vsnprintfp_s_0140
216 * @tc.desc : test vsnprintf param fmt is "%c"
217 * @tc.level : Level 1
218 */
vsnprintfp_s_0140(void)219 static void vsnprintfp_s_0140(void)
220 {
221 char buf[MAX_LOG_LEN] = {0};
222 char *fmt = "%c";
223 int ret = vsprintf_test(buf, MAX_LOG_LEN, MAX_LOG_LEN - 1, false, fmt, 'a');
224 EXPECT_TRUE("vsnprintfp_s_0140", ret > 0);
225 EXPECT_STREQ("vsnprintfp_s_0140", buf, "a");
226 }
227
228 /**
229 * @tc.name : vsnprintfp_s_0150
230 * @tc.desc : test vsnprintf param fmt is "%lu"
231 * @tc.level : Level 1
232 */
vsnprintfp_s_0150(void)233 static void vsnprintfp_s_0150(void)
234 {
235 char buf[MAX_LOG_LEN] = {0};
236 char *fmt = "%lu";
237 int ret = vsprintf_test(buf, MAX_LOG_LEN, MAX_LOG_LEN - 1, false, fmt, 21);
238 EXPECT_TRUE("vsnprintfp_s_0150", ret > 0);
239 EXPECT_STREQ("vsnprintfp_s_0150", buf, "21");
240 }
241
242 /**
243 * @tc.name : vsnprintfp_s_0160
244 * @tc.desc : test vsnprintf param fmt is "%.3f, %2.2f"
245 * @tc.level : Level 1
246 */
vsnprintfp_s_0160(void)247 static void vsnprintfp_s_0160(void)
248 {
249 char buf[MAX_LOG_LEN] = {0};
250 char *fmt = "%.3f, %2.2f";
251 int ret = vsprintf_test(buf, MAX_LOG_LEN, MAX_LOG_LEN - 1, false, fmt, 3.14, 2.2);
252 EXPECT_TRUE("vsnprintfp_s_0160", ret > 0);
253 EXPECT_STREQ("vsnprintfp_s_0160", buf, "3.140, 2.20");
254 }
255
256 /**
257 * @tc.name : vsnprintfp_s_0170
258 * @tc.desc : test vsnprintf param fmt is "%% %n\n"
259 * @tc.level : Level 1
260 */
vsnprintfp_s_0170(void)261 static void vsnprintfp_s_0170(void)
262 {
263 char buf[MAX_LOG_LEN] = {0};
264 char *fmt = "%% %n\n";
265 int ret = vsprintf_test(buf, MAX_LOG_LEN, MAX_LOG_LEN - 1, true, fmt);
266 EXPECT_TRUE("vsnprintfp_s_0170", ret < 0);
267 }
268
269 /**
270 * @tc.name : vsnprintfp_s_0180
271 * @tc.desc : test vsnprintf param fmt is "%F"
272 * @tc.level : Level 1
273 */
vsnprintfp_s_0180(void)274 static void vsnprintfp_s_0180(void)
275 {
276 char buf[MAX_LOG_LEN] = {0};
277 char *fmt = "%F";
278 int ret = vsprintf_test(buf, MAX_LOG_LEN, MAX_LOG_LEN - 1, false, fmt, 3.14);
279 EXPECT_TRUE("vsnprintfp_s_0180", ret > 0);
280 EXPECT_STREQ("vsnprintfp_s_0180", buf, "3.140000");
281 }
282
283 /**
284 * @tc.name : vsnprintfp_s_0190
285 * @tc.desc : test vsnprintf param fmt is "%x"
286 * @tc.level : Level 1
287 */
vsnprintfp_s_0190(void)288 static void vsnprintfp_s_0190(void)
289 {
290 char buf[MAX_LOG_LEN] = {0};
291 char *fmt = "%x";
292 int ret = vsprintf_test(buf, MAX_LOG_LEN, MAX_LOG_LEN - 1, false, fmt, 61);
293 EXPECT_TRUE("vsnprintfp_s_0190", ret > 0);
294 EXPECT_STREQ("vsnprintfp_s_0190", buf, "3d");
295 }
296
297 /**
298 * @tc.name : vsnprintfp_s_0200
299 * @tc.desc : test vsnprintf param fmt is "%X"
300 * @tc.level : Level 1
301 */
vsnprintfp_s_0200(void)302 static void vsnprintfp_s_0200(void)
303 {
304 char buf[MAX_LOG_LEN] = {0};
305 char *fmt = "%X";
306 int ret = vsprintf_test(buf, MAX_LOG_LEN, MAX_LOG_LEN - 1, false, fmt, 61);
307 EXPECT_TRUE("vsnprintfp_s_0200", ret > 0);
308 EXPECT_STREQ("vsnprintfp_s_0200", buf, "3D");
309 }
310
311 /**
312 * @tc.name : vsnprintfp_s_0210
313 * @tc.desc : test vsnprintf param fmt is "%5d*"
314 * @tc.level : Level 1
315 */
vsnprintfp_s_0210(void)316 static void vsnprintfp_s_0210(void)
317 {
318 char buf[MAX_LOG_LEN] = {0};
319 char *fmt = "*%5d*";
320 int ret = vsprintf_test(buf, MAX_LOG_LEN, MAX_LOG_LEN - 1, false, fmt, 1024);
321 EXPECT_TRUE("vsnprintfp_s_0210", ret > 0);
322 EXPECT_STREQ("vsnprintfp_s_0210", buf, "* 1024*");
323 }
324
325 /**
326 * @tc.name : vsnprintfp_s_0220
327 * @tc.desc : test vsnprintf param fmt is "%% %n\n"
328 * @tc.level : Level 1
329 */
vsnprintfp_s_0220(void)330 static void vsnprintfp_s_0220(void)
331 {
332 char buf[MAX_LOG_LEN] = {0};
333 char *fmt = "%#0*X";
334 int ret = vsprintf_test(buf, MAX_LOG_LEN, MAX_LOG_LEN - 1, false, fmt, 8, 128);
335 EXPECT_TRUE("vsnprintfp_s_0220", ret > 0);
336 EXPECT_STREQ("vsnprintfp_s_0220", buf, "0X000080");
337 }
338
339 /**
340 * @tc.name : vsnprintfp_s_0230
341 * @tc.desc : test vsnprintf param fmt is "%+d"
342 * @tc.level : Level 1
343 */
vsnprintfp_s_0230(void)344 static void vsnprintfp_s_0230(void)
345 {
346 char buf[MAX_LOG_LEN] = {0};
347 char *fmt = "%+d";
348 int ret = vsprintf_test(buf, MAX_LOG_LEN, MAX_LOG_LEN - 1, false, fmt, 22);
349 EXPECT_TRUE("vsnprintfp_s_0230", ret > 0);
350 EXPECT_STREQ("vsnprintfp_s_0230", buf, "+22");
351 }
352
353 /**
354 * @tc.name : vsnprintfp_s_0240
355 * @tc.desc : test vsnprintf param fmt is "%-d"
356 * @tc.level : Level 1
357 */
vsnprintfp_s_0240(void)358 static void vsnprintfp_s_0240(void)
359 {
360 char buf[MAX_LOG_LEN] = {0};
361 char *fmt = "%-d";
362 int ret = vsprintf_test(buf, MAX_LOG_LEN, MAX_LOG_LEN - 1, false, fmt, 22);
363 EXPECT_TRUE("vsnprintfp_s_0240", ret > 0);
364 EXPECT_STREQ("vsnprintfp_s_0240", buf, "22");
365 }
366
367 /**
368 * @tc.name : vsnprintfp_s_0250
369 * @tc.desc : test vsnprintf param fmt is "%ho"
370 * @tc.level : Level 1
371 */
vsnprintfp_s_0250(void)372 static void vsnprintfp_s_0250(void)
373 {
374 char buf[MAX_LOG_LEN] = {0};
375 char *fmt = "%ho";
376 int ret = vsprintf_test(buf, MAX_LOG_LEN, MAX_LOG_LEN - 1, false, fmt, 9);
377 EXPECT_TRUE("vsnprintfp_s_0250", ret > 0);
378 EXPECT_STREQ("vsnprintfp_s_0250", buf, "11");
379 }
380
381 /**
382 * @tc.name : vsnprintfp_s_0260
383 * @tc.desc : test vsnprintf param fmt is "%Le"
384 * @tc.level : Level 1
385 */
vsnprintfp_s_0260(void)386 static void vsnprintfp_s_0260(void)
387 {
388 char buf[MAX_LOG_LEN] = {0};
389 char *fmt = "%Le";
390 int ret = vsprintf_test(buf, MAX_LOG_LEN, MAX_LOG_LEN - 1, false, fmt, 10000);
391 EXPECT_TRUE("vsnprintfp_s_0260", ret == 0);
392 }
393
394 /**
395 * @tc.name : vsnprintfp_s_0270
396 * @tc.desc : test vsnprintf param fmt is "%{public}d"
397 * @tc.level : Level 1
398 */
vsnprintfp_s_0270(void)399 static void vsnprintfp_s_0270(void)
400 {
401 char buf[MAX_LOG_LEN] = {0};
402 char *fmt = "%{public}d";
403 int ret = vsprintf_test(buf, MAX_LOG_LEN, MAX_LOG_LEN - 1, true, fmt, 22);
404 EXPECT_TRUE("vsnprintfp_s_0270", ret > 0);
405 EXPECT_STREQ("vsnprintfp_s_0270", buf, "22");
406 }
407
408 /**
409 * @tc.name : vsnprintfp_s_0280
410 * @tc.desc : test vsnprintf param fmt is "%{private}d"
411 * @tc.level : Level 1
412 */
vsnprintfp_s_0280(void)413 static void vsnprintfp_s_0280(void)
414 {
415 char buf[MAX_LOG_LEN] = {0};
416 char *fmt = "%{private}d";
417 int ret = vsprintf_test(buf, MAX_LOG_LEN, MAX_LOG_LEN - 1, true, fmt, 22);
418 EXPECT_TRUE("vsnprintfp_s_0280", ret > 0);
419 EXPECT_STREQ("vsnprintfp_s_0280", buf, "<private>");
420 }
421
422 /**
423 * @tc.name : vsnprintfp_s_0290
424 * @tc.desc : test vsnprintf param fmt is "%C"
425 * @tc.level : Level 1
426 */
vsnprintfp_s_0290(void)427 static void vsnprintfp_s_0290(void)
428 {
429 char buf[MAX_LOG_LEN] = {0};
430 char *fmt = "%C";
431 int ret = vsprintf_test(buf, MAX_LOG_LEN, MAX_LOG_LEN - 1, false, fmt, 'a');
432 EXPECT_TRUE("vsnprintfp_s_0290", ret > 0);
433 EXPECT_STREQ("vsnprintfp_s_0290", buf, "a");
434 }
435
436 /**
437 * @tc.name : vsnprintfp_s_0300
438 * @tc.desc : test vsnprintf param fmt is "%c"
439 * @tc.level : Level 1
440 */
vsnprintfp_s_0300(void)441 static void vsnprintfp_s_0300(void)
442 {
443 char buf[MAX_LOG_LEN] = {0};
444 char *fmt = "%c";
445 int ret = vsprintf_test(buf, MAX_LOG_LEN, MAX_LOG_LEN - 1, false, fmt, 'a');
446 EXPECT_TRUE("vsnprintfp_s_0300", ret > 0);
447 EXPECT_STREQ("vsnprintfp_s_0300", buf, "a");
448 }
449
450 /**
451 * @tc.name : vsnprintfp_s_0310
452 * @tc.desc : test vsnprintf param fmt is "%I64 %hho"
453 * @tc.level : Level 1
454 */
vsnprintfp_s_0310(void)455 static void vsnprintfp_s_0310(void)
456 {
457 char buf[MAX_LOG_LEN] = {0};
458 char *fmt = "%I64o %hho";
459 int ret = vsprintf_test(buf, MAX_LOG_LEN, MAX_LOG_LEN - 1, false, fmt, 2, 3);
460 EXPECT_TRUE("vsnprintfp_s_0310", ret > 0);
461 EXPECT_STREQ("vsnprintfp_s_0310", buf, "6040000000003 66");
462 }
463
464 /**
465 * @tc.name : vsnprintfp_s_0320
466 * @tc.desc : test vsnprintf param fmt is "%.3f"
467 * @tc.level : Level 1
468 */
vsnprintfp_s_0320(void)469 static void vsnprintfp_s_0320(void)
470 {
471 char buf[MAX_LOG_LEN] = {0};
472 char *fmt = "%.3f";
473 int ret = vsprintf_test(buf, MAX_LOG_LEN, MAX_LOG_LEN - 1, false, fmt, 3.14);
474 EXPECT_TRUE("vsnprintfp_s_0320", ret > 0);
475 EXPECT_STREQ("vsnprintfp_s_0320", buf, "3.140");
476 }
477
478 /**
479 * @tc.name : vsnprintfp_s_0330
480 * @tc.desc : test vsnprintf param fmt is "%{private}f"
481 * @tc.level : Level 1
482 */
vsnprintfp_s_0330(void)483 static void vsnprintfp_s_0330(void)
484 {
485 char buf[2] = {0};
486 char *fmt = "%{private}f";
487 int ret = vsprintf_test(buf, 2, 1, false, fmt, 3.14);
488 EXPECT_TRUE("vsnprintfp_s_0330", ret < 0);
489 EXPECT_STREQ("vsnprintfp_s_0330", buf, "3");
490 }
491
492 /**
493 * @tc.name : vsnprintfp_s_0340
494 * @tc.desc : test vsnprintf param fmt is "% d"
495 * @tc.level : Level 1
496 */
vsnprintfp_s_0340(void)497 static void vsnprintfp_s_0340(void)
498 {
499 char buf[MAX_LOG_LEN] = {0};
500 char *fmt = "% d";
501 int ret = vsprintf_test(buf, MAX_LOG_LEN, MAX_LOG_LEN - 1, false, fmt, 2);
502 EXPECT_TRUE("vsnprintfp_s_0340", ret > 0);
503 EXPECT_STREQ("vsnprintfp_s_0340", buf, " 2");
504 }
505
506 /**
507 * @tc.name : vsnprintfp_s_0350
508 * @tc.desc : test vsnprintf param fmt is "*%t*"
509 * @tc.level : Level 1
510 */
vsnprintfp_s_0350(void)511 static void vsnprintfp_s_0350(void)
512 {
513 char buf[MAX_LOG_LEN] = {0};
514 char *fmt = "*%t*";
515 int ret = vsprintf_test(buf, MAX_LOG_LEN, MAX_LOG_LEN - 1, false, fmt);
516 EXPECT_TRUE("vsnprintfp_s_0350", ret < 0);
517 }
518
519 /**
520 * @tc.name : vsnprintfp_s_0360
521 * @tc.desc : test vsnprintf param fmt is "%ld"
522 * @tc.level : Level 0
523 */
vsnprintfp_s_0360(void)524 static void vsnprintfp_s_0360(void)
525 {
526 char buf[MAX_LOG_LEN] = {0};
527 char *fmt = "%ld";
528 int ret = vsprintf_test(buf, MAX_LOG_LEN, MAX_LOG_LEN - 1, false, fmt, 333);
529 EXPECT_TRUE("vsnprintfp_s_0360", ret > 0);
530 EXPECT_STREQ("vsnprintfp_s_0360", buf, "333");
531 }
532
533 /**
534 * @tc.name : vsnprintfp_s_0370
535 * @tc.desc : test vsnprintf param fmt is "%V"
536 * @tc.level : Level 2
537 */
vsnprintfp_s_0370(void)538 static void vsnprintfp_s_0370(void)
539 {
540 char buf[MAX_LOG_LEN] = {0};
541 char *fmt = "%V";
542 int ret = vsprintf_test(buf, MAX_LOG_LEN, MAX_LOG_LEN - 1, false, fmt, 9);
543 EXPECT_TRUE("vsnprintfp_s_0370", ret < 0);
544 }
545
546 /**
547 * @tc.name : vsnprintfp_s_0380
548 * @tc.desc : test vsnprintf param fmt is "%{public}wc"
549 * @tc.level : Level 0
550 */
vsnprintfp_s_0380(void)551 static void vsnprintfp_s_0380(void)
552 {
553 char buf[MAX_LOG_LEN] = {0};
554 char *fmt = "%{public}wc";
555 int ret = vsprintf_test(buf, MAX_LOG_LEN, MAX_LOG_LEN - 1, false, fmt, 'a');
556 EXPECT_TRUE("vsnprintfp_s_0380", ret > 0);
557 EXPECT_STREQ("vsnprintfp_s_0380", buf, "a");
558 }
559
560 /**
561 * @tc.name : vsnprintfp_s_0390
562 * @tc.desc : test vsnprintf param fmt is "%I"
563 * @tc.level : Level 0
564 */
vsnprintfp_s_0390(void)565 static void vsnprintfp_s_0390(void)
566 {
567 char buf[MAX_LOG_LEN] = {0};
568 char *fmt = "%I";
569 int ret = vsprintf_test(buf, MAX_LOG_LEN, MAX_LOG_LEN - 1, false, fmt, 22);
570 EXPECT_TRUE("vsnprintfp_s_0390", ret > 0);
571 EXPECT_STREQ("vsnprintfp_s_0390", buf, "I");
572 }
573
574 /**
575 * @tc.name : vsnprintfp_s_0400
576 * @tc.desc : test vsnprintf param fmt is "%I64d %I32d"
577 * @tc.level : Level 0
578 */
vsnprintfp_s_0400(void)579 static void vsnprintfp_s_0400(void)
580 {
581 char buf[MAX_LOG_LEN] = {0};
582 char *fmt = "%I64d %I32d";
583 int ret = vsprintf_test(buf, MAX_LOG_LEN, MAX_LOG_LEN - 1, false, fmt, 22, 33);
584 EXPECT_TRUE("vsnprintfp_s_0400", ret > 0);
585 EXPECT_STREQ("vsnprintfp_s_0400", buf, "94489280545 942945337");
586 }
587
588 /**
589 * @tc.name : vsnprintfp_s_0410
590 * @tc.desc : test vsnprintf param fmt is "%Id %Ii %Io %Iu %Ix %IX"
591 * @tc.level : Level 0
592 */
vsnprintfp_s_0410(void)593 static void vsnprintfp_s_0410(void)
594 {
595 char buf[MAX_LOG_LEN] = {0};
596 char *fmt = "%Id %Ii %Io %Iu %Ix %IX";
597 int ret = vsprintf_test(buf, MAX_LOG_LEN, MAX_LOG_LEN - 1, false, fmt, 22, 33, 44, 55, 66, 77);
598 EXPECT_TRUE("vsnprintfp_s_0410", ret > 0);
599 EXPECT_STREQ("vsnprintfp_s_0410", buf, "22 33 54 55 42 4D");
600 }
601
602 /**
603 * @tc.name : vsnprintfp_s_0420
604 * @tc.desc : test vsnprintf param fmt is "%0c"
605 * @tc.level : Level 0
606 */
vsnprintfp_s_0420(void)607 static void vsnprintfp_s_0420(void)
608 {
609 char buf[MAX_LOG_LEN] = {0};
610 char *fmt = "%0c";
611 int ret = vsprintf_test(buf, MAX_LOG_LEN, MAX_LOG_LEN - 1, false, fmt, 'c');
612 EXPECT_TRUE("vsnprintfp_s_0420", ret > 0);
613 EXPECT_STREQ("vsnprintfp_s_0420", buf, "c");
614 }
615
616 /**
617 * @tc.name : vsnprintfp_s_0430
618 * @tc.desc : test vsnprintf param fmt is "%hhd"
619 * @tc.level : Level 0
620 */
vsnprintfp_s_0430(void)621 static void vsnprintfp_s_0430(void)
622 {
623 char buf[MAX_LOG_LEN] = {0};
624 char *fmt = "%hhd";
625 int ret = vsprintf_test(buf, MAX_LOG_LEN, MAX_LOG_LEN - 1, false, fmt, 1024);
626 EXPECT_TRUE("vsnprintfp_s_0430", ret > 0);
627 EXPECT_STREQ("vsnprintfp_s_0430", buf, "0");
628 }
629
630 /**
631 * @tc.name : vsnprintfp_s_0440
632 * @tc.desc : test vsnprintf param fmt is "%#o"
633 * @tc.level : Level 0
634 */
vsnprintfp_s_0440(void)635 static void vsnprintfp_s_0440(void)
636 {
637 char buf[MAX_LOG_LEN] = {0};
638 char *fmt = "%#o";
639 int ret = vsprintf_test(buf, MAX_LOG_LEN, MAX_LOG_LEN - 1, false, fmt, 64);
640 EXPECT_TRUE("vsnprintfp_s_0440", ret > 0);
641 EXPECT_STREQ("vsnprintfp_s_0440", buf, "0100");
642 }
643
644 /**
645 * @tc.name : vsnprintfp_s_0450
646 * @tc.desc : test vsnprintf param fmt is "%#o"
647 * @tc.level : Level 0
648 */
vsnprintfp_s_0450(void)649 static void vsnprintfp_s_0450(void)
650 {
651 char buf[MAX_LOG_LEN] = {0};
652 char *fmt = "%{public}ws";
653 int ret = vsprintf_test(buf, MAX_LOG_LEN, MAX_LOG_LEN - 1, false, fmt, "test");
654 EXPECT_TRUE("vsnprintfp_s_0450", ret < 0);
655 }
656
657 /**
658 * @tc.name : vsnprintfp_s_0460
659 * @tc.desc : test vsnprintf param fmt is "%123123d"
660 * @tc.level : Level 2
661 */
vsnprintfp_s_0460(void)662 static void vsnprintfp_s_0460(void)
663 {
664 char buf[MAX_LOG_LEN] = {0};
665 char *fmt = "%123123d";
666 int ret = vsprintf_test(buf, MAX_LOG_LEN, MAX_LOG_LEN - 1, false, fmt, 1024);
667 EXPECT_TRUE("vsnprintfp_s_0460", ret < 0);
668 }
669
670 /**
671 * @tc.name : vsnprintfp_s_0470
672 * @tc.desc : test vsnprintf param fmt is "%+123123d"
673 * @tc.level : Level 2
674 */
vsnprintfp_s_0470(void)675 static void vsnprintfp_s_0470(void)
676 {
677 char buf[MAX_LOG_LEN] = {0};
678 char *fmt = "%+123123d";
679 int ret = vsprintf_test(buf, MAX_LOG_LEN, MAX_LOG_LEN - 1, false, fmt, 1024);
680 EXPECT_TRUE("vsnprintfp_s_0470", ret < 0);
681 }
682
683 /**
684 * @tc.name : vsnprintfp_s_0480
685 * @tc.desc : param count < PRIVATE_STR_LEN(9) and format is {private}
686 * @tc.level : Level 2
687 */
vsnprintfp_s_0480(void)688 static void vsnprintfp_s_0480(void)
689 {
690 char buf[MAX_LOG_LEN] = {0};
691 char *fmt = "%{private}d";
692 int ret = vsprintf_test(buf, 8, 7, true, fmt, 22);
693 EXPECT_TRUE("vsnprintfp_s_0480", ret < 0);
694 }
695
696 /**
697 * @tc.name : vsnprintfp_s_0490
698 * @tc.desc : test vsnprintf param fmt is "%d" and arg is (char)128
699 * @tc.level : Level 1
700 */
vsnprintfp_s_0490(void)701 static void vsnprintfp_s_0490(void)
702 {
703 char buf[MAX_LOG_LEN] = {0};
704 char *fmt = "%hhd";
705 char num = 128;
706 int ret = vsprintf_test(buf, MAX_LOG_LEN, MAX_LOG_LEN - 1, false, fmt, num);
707 EXPECT_TRUE("vsnprintfp_s_0490", ret > 0);
708 EXPECT_STREQ("vsnprintfp_s_0490", buf, "-128");
709 }
710
711 /**
712 * @tc.name : vsnprintfp_s_0500
713 * @tc.desc : test vsnprintf param fmt is "%d" and arg is (char)128
714 * @tc.level : Level 1
715 */
vsnprintfp_s_0500(void)716 static void vsnprintfp_s_0500(void)
717 {
718 char buf[MAX_LOG_LEN] = {0};
719 char *fmt = "%*d";
720 int ret = vsprintf_test(buf, MAX_LOG_LEN, MAX_LOG_LEN - 1, false, fmt, 1, 1024);
721 EXPECT_TRUE("vsnprintfp_s_0500", ret > 0);
722 EXPECT_STREQ("vsnprintfp_s_0500", buf, "1024");
723 }
724
725 /**
726 * @tc.name : vsnprintfp_s_0510
727 * @tc.desc : test vsnprintf param fmt is "%I63d"
728 * @tc.level : Level 2
729 */
vsnprintfp_s_0510(void)730 static void vsnprintfp_s_0510(void)
731 {
732 char buf[MAX_LOG_LEN] = {0};
733 char *fmt = "%I63d";
734 int ret = vsprintf_test(buf, MAX_LOG_LEN, MAX_LOG_LEN - 1, false, fmt, 22);
735 EXPECT_TRUE("vsnprintfp_s_0510", ret > 0);
736 }
737
738 /**
739 * @tc.name : vsnprintfp_s_0520
740 * @tc.desc : test vsnprintf param fmt is "%I31d"
741 * @tc.level : Level 2
742 */
vsnprintfp_s_0520(void)743 static void vsnprintfp_s_0520(void)
744 {
745 char buf[MAX_LOG_LEN] = {0};
746 char *fmt = "%I31d";
747 int ret = vsprintf_test(buf, MAX_LOG_LEN, MAX_LOG_LEN - 1, false, fmt, 22);
748 EXPECT_TRUE("vsnprintfp_s_0520", ret > 0);
749 }
750
751 /**
752 * @tc.name : vsnprintfp_s_0530
753 * @tc.desc : test vsnprintf param fmt is "%.g"
754 * @tc.level : Level 1
755 */
vsnprintfp_s_0530(void)756 static void vsnprintfp_s_0530(void)
757 {
758 char buf[MAX_LOG_LEN] = {0};
759 char *fmt = "%.g";
760 int ret = vsprintf_test(buf, MAX_LOG_LEN, MAX_LOG_LEN - 1, false, fmt, 0.12000);
761 EXPECT_TRUE("vsnprintfp_s_0530", ret > 0);
762 EXPECT_STREQ("vsnprintfp_s_0530", buf, "0.1");
763 }
764
765 TEST_FUN G_Fun_Array[] = {
766 vsnprintfp_s_0010,
767 vsnprintfp_s_0020,
768 vsnprintfp_s_0030,
769 vsnprintfp_s_0040,
770 vsnprintfp_s_0050,
771 vsnprintfp_s_0060,
772 vsnprintfp_s_0070,
773 vsnprintfp_s_0080,
774 vsnprintfp_s_0090,
775 vsnprintfp_s_0100,
776 vsnprintfp_s_0110,
777 vsnprintfp_s_0120,
778 vsnprintfp_s_0130,
779 vsnprintfp_s_0140,
780 vsnprintfp_s_0150,
781 vsnprintfp_s_0160,
782 vsnprintfp_s_0170,
783 vsnprintfp_s_0180,
784 vsnprintfp_s_0190,
785 vsnprintfp_s_0200,
786 vsnprintfp_s_0210,
787 vsnprintfp_s_0220,
788 vsnprintfp_s_0230,
789 vsnprintfp_s_0240,
790 vsnprintfp_s_0250,
791 vsnprintfp_s_0260,
792 vsnprintfp_s_0270,
793 vsnprintfp_s_0280,
794 vsnprintfp_s_0290,
795 vsnprintfp_s_0300,
796 vsnprintfp_s_0310,
797 vsnprintfp_s_0320,
798 vsnprintfp_s_0330,
799 vsnprintfp_s_0340,
800 vsnprintfp_s_0350,
801 vsnprintfp_s_0360,
802 vsnprintfp_s_0370,
803 vsnprintfp_s_0380,
804 vsnprintfp_s_0390,
805 vsnprintfp_s_0400,
806 vsnprintfp_s_0410,
807 vsnprintfp_s_0420,
808 vsnprintfp_s_0430,
809 vsnprintfp_s_0440,
810 vsnprintfp_s_0450,
811 vsnprintfp_s_0460,
812 vsnprintfp_s_0470,
813 vsnprintfp_s_0480,
814 vsnprintfp_s_0490,
815 vsnprintfp_s_0500,
816 vsnprintfp_s_0510,
817 vsnprintfp_s_0520,
818 vsnprintfp_s_0530,
819 };
820
main(void)821 int main(void)
822 {
823 int num = sizeof(G_Fun_Array) / sizeof(TEST_FUN);
824 for (int pos = 0; pos < num; ++pos) {
825 G_Fun_Array[pos]();
826 }
827 return t_status;
828 }
829