• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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