1 /*
2 * Copyright (c) 2021 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 <stdio.h>
17
18 #include "IoTest.h"
19 #include <securec.h>
20
21 using namespace testing::ext;
22
23 /**
24 * @tc.number SUB_KERNEL_IO_SPRINTF_0100
25 * @tc.name sprintf basic function test of int with boundary value
26 * @tc.desc [C- SOFTWARE -0200]
27 */
HWTEST_F(IoTest, testSprintfIntBoundary, Function | MediumTest | Level1)28 HWTEST_F(IoTest, testSprintfIntBoundary, Function | MediumTest | Level1)
29 {
30 char str[100] = {0};
31 int ret = sprintf(str, "%d", -2147483648);
32 EXPECT_EQ(ret, 11) << "> sprintf fail, errno = " << errno;
33 EXPECT_STREQ(str, "-2147483648");
34
35 ret = sprintf(str, "%d", 2147483647);
36 EXPECT_EQ(ret, 10) << "> sprintf fail, errno = " << errno;
37 EXPECT_STREQ(str, "2147483647");
38
39 ret = sprintf(str, "%i", -2147483648);
40 EXPECT_EQ(ret, 11) << "> sprintf fail, errno = " << errno;
41 EXPECT_STREQ(str, "-2147483648");
42
43 ret = sprintf(str, "%i", 2147483647);
44 EXPECT_EQ(ret, 10) << "> sprintf fail, errno = " << errno;
45 EXPECT_STREQ(str, "2147483647");
46
47 ret = sprintf(str, "%u", 0);
48 EXPECT_EQ(ret, 1) << "> sprintf fail, errno = " << errno;
49 EXPECT_STREQ(str, "0");
50
51 ret = sprintf(str, "%u", 4294967295);
52 EXPECT_EQ(ret, 10) << "> sprintf fail, errno = " << errno;
53 EXPECT_STREQ(str, "4294967295");
54 }
55
56 /**
57 * @tc.number SUB_KERNEL_IO_SPRINTF_0200
58 * @tc.name sprintf basic function test of long int with boundary value
59 * @tc.desc [C- SOFTWARE -0200]
60 */
HWTEST_F(IoTest, testSprintfIntLdBoundary, Function | MediumTest | Level1)61 HWTEST_F(IoTest, testSprintfIntLdBoundary, Function | MediumTest | Level1)
62 {
63 char str[100] = {0};
64 int ret = sprintf(str, "%ld", -2147483648); // 2^31-1
65 EXPECT_EQ(ret, 11) << "> sprintf fail, errno = " << errno;
66 EXPECT_STREQ(str, "-2147483648");
67
68 ret = sprintf(str, "%ld", 2147483647);
69 EXPECT_EQ(ret, 10) << "> sprintf fail, errno = " << errno;
70 EXPECT_STREQ(str, "2147483647");
71
72 ret = sprintf(str, "%li", -2147483648);
73 EXPECT_EQ(ret, 11) << "> sprintf fail, errno = " << errno;
74 EXPECT_STREQ(str, "-2147483648");
75
76 ret = sprintf(str, "%li", 2147483647);
77 EXPECT_EQ(ret, 10) << "> sprintf fail, errno = " << errno;
78 EXPECT_STREQ(str, "2147483647");
79
80 ret = sprintf(str, "%lu", 0);
81 EXPECT_EQ(ret, 1) << "> sprintf fail, errno = " << errno;
82 EXPECT_STREQ(str, "0");
83
84 ret = sprintf(str, "%lu", 4294967295);
85 EXPECT_EQ(ret, 10) << "> sprintf fail, errno = " << errno;
86 EXPECT_STREQ(str, "4294967295");
87 }
88
89 /**
90 * @tc.number SUB_KERNEL_IO_SPRINTF_0300
91 * @tc.name sprintf basic function test of long long int with boundary value
92 * @tc.desc [C- SOFTWARE -0200]
93 */
HWTEST_F(IoTest, testSprintfIntLldBoundary, Function | MediumTest | Level1)94 HWTEST_F(IoTest, testSprintfIntLldBoundary, Function | MediumTest | Level1)
95 {
96 char str[100] = {0};
97 int ret = sprintf(str, "%lld", -9223372036854775807LL); // 2^63-1
98 EXPECT_EQ(ret, 20) << "> sprintf fail, errno = " << errno;
99 EXPECT_STREQ(str, "-9223372036854775807");
100
101 ret = sprintf(str, "%lld", 9223372036854775807);
102 EXPECT_EQ(ret, 19) << "> sprintf fail, errno = " << errno;
103 EXPECT_STREQ(str, "9223372036854775807");
104
105 ret = sprintf(str, "%lli", -9223372036854775807);
106 EXPECT_EQ(ret, 20) << "> sprintf fail, errno = " << errno;
107 EXPECT_STREQ(str, "-9223372036854775807");
108
109 ret = sprintf(str, "%lli", 9223372036854775807);
110 EXPECT_EQ(ret, 19) << "> sprintf fail, errno = " << errno;
111 EXPECT_STREQ(str, "9223372036854775807");
112
113 ret = sprintf(str, "%llu", (unsigned long long)0);
114 EXPECT_EQ(ret, 1) << "> sprintf fail, errno = " << errno;
115 EXPECT_STREQ(str, "0");
116
117 ret = sprintf(str, "%llu", 18446744073709551615llu);
118 EXPECT_EQ(ret, 20) << "> sprintf fail, errno = " << errno;
119 EXPECT_STREQ(str, "18446744073709551615");
120 }
121
122 /**
123 * @tc.number SUB_KERNEL_IO_SPRINTF_0400
124 * @tc.name sprintf basic function test of intmax_t and uintmax_t with boundary value
125 * @tc.desc [C- SOFTWARE -0200]
126 */
HWTEST_F(IoTest, testSprintfIntMaxTBoundary, Function | MediumTest | Level1)127 HWTEST_F(IoTest, testSprintfIntMaxTBoundary, Function | MediumTest | Level1)
128 {
129 char str[100] = {0};
130 int ret = sprintf(str, "%jd", -9223372036854775807LL);
131 EXPECT_EQ(ret, 20) << "> sprintf fail, errno = " << errno;
132 EXPECT_STREQ(str, "-9223372036854775807");
133
134 ret = sprintf(str, "%jd", 9223372036854775807LL);
135 EXPECT_EQ(ret, 19) << "> sprintf fail, errno = " << errno;
136 EXPECT_STREQ(str, "9223372036854775807");
137
138 ret = sprintf(str, "%jd", 0ULL);
139 EXPECT_EQ(ret, 1) << "> sprintf fail, errno = " << errno;
140 EXPECT_STREQ(str, "0");
141
142 ret = sprintf(str, "%jd", 18446744073709551615ULL);
143 EXPECT_EQ(ret, 2) << "> sprintf fail, errno = " << errno;
144 EXPECT_STREQ(str, "-1");
145 }
146
147 /**
148 * @tc.number SUB_KERNEL_IO_SPRINTF_0500
149 * @tc.name sprintf basic function test of ptrdiff_t with boundary value
150 * @tc.desc [C- SOFTWARE -0200]
151 */
HWTEST_F(IoTest, testSprintfPtrdiffTBoundary, Function | MediumTest | Level1)152 HWTEST_F(IoTest, testSprintfPtrdiffTBoundary, Function | MediumTest | Level1)
153 {
154 char str[50] = {0};
155 int ret = sprintf(str, "%td", 2147483647);
156 EXPECT_EQ(ret, 10) << "> sprintf fail, errno = " << errno;
157 EXPECT_STREQ(str, "2147483647");
158
159 ret = sprintf(str, "%td", -2147483648);
160 EXPECT_EQ(ret, 11) << "> sprintf fail, errno = " << errno;
161 EXPECT_STREQ(str, "-2147483648");
162 }
163
164 /**
165 * @tc.number SUB_KERNEL_IO_SPRINTF_0600
166 * @tc.name sprintf basic function test of size_t with boundary value
167 * @tc.desc [C- SOFTWARE -0200]
168 */
HWTEST_F(IoTest, testSprintfSizeTBoundary, Function | MediumTest | Level1)169 HWTEST_F(IoTest, testSprintfSizeTBoundary, Function | MediumTest | Level1)
170 {
171 char str[50] = {0};
172 int ret = sprintf(str, "%zd", 2147483647);
173 EXPECT_EQ(ret, 10) << "> sprintf fail, errno = " << errno;
174 EXPECT_STREQ(str, "2147483647");
175
176 ret = sprintf(str, "%zd", -2147483648);
177 EXPECT_EQ(ret, 11) << "> sprintf fail, errno = " << errno;
178 EXPECT_STREQ(str, "-2147483648");
179 }
180
181 /**
182 * @tc.number SUB_KERNEL_IO_SPRINTF_0700
183 * @tc.name sprintf basic function test of signed char and short int with boundary value
184 * @tc.desc [C- SOFTWARE -0200]
185 */
HWTEST_F(IoTest, testSprintfIntHhdBoundary, Function | MediumTest | Level1)186 HWTEST_F(IoTest, testSprintfIntHhdBoundary, Function | MediumTest | Level1)
187 {
188 char str[50] = {0};
189 int ret = sprintf(str, "%hd %hhd %hu %hhu", 32767, 127, 65535, 255);
190 EXPECT_EQ(ret, 19) << "> sprintf fail, errno = " << errno;
191 EXPECT_STREQ(str, "32767 127 65535 255");
192
193 ret = sprintf(str, "%hd %hhd %hu %hhu", -32768, -128, 0, 0);
194 EXPECT_EQ(ret, 15) << "> sprintf fail, errno = " << errno;
195 EXPECT_STREQ(str, "-32768 -128 0 0");
196 }
197
198 /**
199 * @tc.number SUB_KERNEL_IO_SPRINTF_0800
200 * @tc.name sprintf basic function test of align right
201 * @tc.desc [C- SOFTWARE -0200]
202 */
HWTEST_F(IoTest, testSprintfAlighRight, Function | MediumTest | Level1)203 HWTEST_F(IoTest, testSprintfAlighRight, Function | MediumTest | Level1)
204 {
205 char str[50] = {0};
206 int ret = sprintf(str, "%5d %5d", 1, -1);
207 EXPECT_EQ(ret, 11) << "> sprintf fail, errno = " << errno;
208 EXPECT_STREQ(str, " 1 -1");
209
210 ret = sprintf(str, "%5i %5i", 1, -1);
211 EXPECT_EQ(ret, 11) << "> sprintf fail, errno = " << errno;
212 EXPECT_STREQ(str, " 1 -1");
213
214 ret = sprintf(str, "%5u %5u", 1, 0);
215 EXPECT_EQ(ret, 11) << "> sprintf fail, errno = " << errno;
216 EXPECT_STREQ(str, " 1 0");
217
218 ret = sprintf(str, "% 5d % 5d", 1, -1);
219 EXPECT_EQ(ret, 11) << "> sprintf fail, errno = " << errno;
220 EXPECT_STREQ(str, " 1 -1");
221
222 ret = sprintf(str, "% 5i % 5i", 1, -1);
223 EXPECT_EQ(ret, 11) << "> sprintf fail, errno = " << errno;
224 EXPECT_STREQ(str, " 1 -1");
225
226 ret = sprintf(str, "% 5u % 5u", 1, 0);
227 EXPECT_EQ(ret, 11) << "> sprintf fail, errno = " << errno;
228 EXPECT_STREQ(str, " 1 0");
229
230 ret = sprintf(str, "%+5d %+5d", 1, -1);
231 EXPECT_EQ(ret, 11) << "> sprintf fail, errno = " << errno;
232 EXPECT_STREQ(str, " +1 -1");
233
234 ret = sprintf(str, "%+5i %+5i", 1, -1);
235 EXPECT_EQ(ret, 11) << "> sprintf fail, errno = " << errno;
236 EXPECT_STREQ(str, " +1 -1");
237
238 ret = sprintf(str, "%+5u %+5u", 1, 0);
239 EXPECT_EQ(ret, 11) << "> sprintf fail, errno = " << errno;
240 EXPECT_STREQ(str, " 1 0");
241 }
242
243 /**
244 * @tc.number SUB_KERNEL_IO_SPRINTF_0900
245 * @tc.name sprintf basic function test of align left
246 * @tc.desc [C- SOFTWARE -0200]
247 */
HWTEST_F(IoTest, testSprintfAlighLeft, Function | MediumTest | Level1)248 HWTEST_F(IoTest, testSprintfAlighLeft, Function | MediumTest | Level1)
249 {
250 char str[50] = {0};
251 int ret = sprintf(str, "%-5d %-5d", 1, -1);
252 EXPECT_EQ(ret, 11) << "> sprintf fail, errno = " << errno;
253 EXPECT_STREQ(str, "1 -1 ");
254
255 ret = sprintf(str, "%-5i %-5i", 1, -1);
256 EXPECT_EQ(ret, 11) << "> sprintf fail, errno = " << errno;
257 EXPECT_STREQ(str, "1 -1 ");
258
259 ret = sprintf(str, "%-5u %-5u", 1, 0);
260 EXPECT_EQ(ret, 11) << "> sprintf fail, errno = " << errno;
261 EXPECT_STREQ(str, "1 0 ");
262
263 ret = sprintf(str, "%0-5d %0-5d", 1, -1);
264 EXPECT_EQ(ret, 11) << "> sprintf fail, errno = " << errno;
265 EXPECT_STREQ(str, "1 -1 ");
266
267 ret = sprintf(str, "%0-5i %0-5i", 1, -1);
268 EXPECT_EQ(ret, 11) << "> sprintf fail, errno = " << errno;
269 EXPECT_STREQ(str, "1 -1 ");
270
271 ret = sprintf(str, "%0-5u %0-5u", 1, 0);
272 EXPECT_EQ(ret, 11) << "> sprintf fail, errno = " << errno;
273 EXPECT_STREQ(str, "1 0 ");
274 }
275
276 /**
277 * @tc.number SUB_KERNEL_IO_SPRINTF_1000
278 * @tc.name sprintf basic function test of other format
279 * @tc.desc [C- SOFTWARE -0200]
280 */
HWTEST_F(IoTest, testSprintfOtherFormat, Function | MediumTest | Level1)281 HWTEST_F(IoTest, testSprintfOtherFormat, Function | MediumTest | Level1)
282 {
283 char str[50] = {0};
284 int ret = sprintf(str, "%.5d %.5d", 1, -1);
285 EXPECT_EQ(ret, 12) << "> sprintf fail, errno = " << errno;
286 EXPECT_STREQ(str, "00001 -00001");
287
288 ret = sprintf(str, "%.5i %.5i", 1, -1);
289 EXPECT_EQ(ret, 12) << "> sprintf fail, errno = " << errno;
290 EXPECT_STREQ(str, "00001 -00001");
291
292 ret = sprintf(str, "%.5u %.5u", 1, 0);
293 EXPECT_EQ(ret, 11) << "> sprintf fail, errno = " << errno;
294 EXPECT_STREQ(str, "00001 00000");
295
296 ret = sprintf(str, "%#5d %#5d", 1, -1);
297 EXPECT_EQ(ret, 11) << "> sprintf fail, errno = " << errno;
298 EXPECT_STREQ(str, " 1 -1");
299
300 ret = sprintf(str, "%#5i %#5i", 1, -1);
301 EXPECT_EQ(ret, 11) << "> sprintf fail, errno = " << errno;
302 EXPECT_STREQ(str, " 1 -1");
303
304 ret = sprintf(str, "%8.5d %8.5d", 1, -1);
305 EXPECT_EQ(ret, 17) << "> sprintf fail, errno = " << errno;
306 EXPECT_STREQ(str, " 00001 -00001");
307
308 ret = sprintf(str, "%#05d %#05d", 1, -1);
309 EXPECT_EQ(ret, 11) << "> sprintf fail, errno = " << errno;
310 EXPECT_STREQ(str, "00001 -0001");
311
312 ret = sprintf(str, "%#05i %#05i", 1, -1);
313 EXPECT_EQ(ret, 11) << "> sprintf fail, errno = " << errno;
314 EXPECT_STREQ(str, "00001 -0001");
315
316 ret = sprintf(str, "%8.5i %8.5i", 1, -1);
317 EXPECT_EQ(ret, 17) << "> sprintf fail, errno = " << errno;
318 EXPECT_STREQ(str, " 00001 -00001");
319
320 ret = sprintf(str, "%#5u %#5u", 1, 0);
321 EXPECT_EQ(ret, 11) << "> sprintf fail, errno = " << errno;
322 EXPECT_STREQ(str, " 1 0");
323
324 ret = sprintf(str, "%#05u %#05u", 1, 0);
325 EXPECT_EQ(ret, 11) << "> sprintf fail, errno = " << errno;
326 EXPECT_STREQ(str, "00001 00000");
327
328 ret = sprintf(str, "%8.5u %8.5u", 1, 0);
329 EXPECT_EQ(ret, 17) << "> sprintf fail, errno = " << errno;
330 EXPECT_STREQ(str, " 00001 00000");
331 }
332
333 /**
334 * @tc.number SUB_KERNEL_IO_SPRINTF_1100
335 * @tc.name sprintf basic function test of octal
336 * @tc.desc [C- SOFTWARE -0200]
337 */
HWTEST_F(IoTest, testSprintfOctal, Function | MediumTest | Level1)338 HWTEST_F(IoTest, testSprintfOctal, Function | MediumTest | Level1)
339 {
340 char str[50] = {0};
341 int ret = sprintf(str, "%o", 4294967295);
342 EXPECT_EQ(ret, 11) << "> sprintf fail, errno = " << errno;
343 EXPECT_STREQ(str, "37777777777");
344
345 ret = sprintf(str, "%o", 0);
346 EXPECT_EQ(ret, 1) << "> sprintf fail, errno = " << errno;
347 EXPECT_STREQ(str, "0");
348
349 ret = sprintf(str, "%o", -1);
350 EXPECT_EQ(ret, 11) << "> sprintf fail, errno = " << errno;
351 EXPECT_STREQ(str, "37777777777");
352
353 ret = sprintf(str, "%lo", 4294967295);
354 EXPECT_EQ(ret, 11) << "> sprintf fail, errno = " << errno;
355 EXPECT_STREQ(str, "37777777777");
356
357 ret = sprintf(str, "%lo", 0);
358 EXPECT_EQ(ret, 1) << "> sprintf fail, errno = " << errno;
359 EXPECT_STREQ(str, "0");
360
361 ret = sprintf(str, "%*o", 10, 65535);
362 EXPECT_EQ(ret, 10) << "> sprintf fail, errno = " << errno;
363 EXPECT_STREQ(str, " 177777");
364 }
365
366 /**
367 * @tc.number SUB_KERNEL_IO_SPRINTF_1200
368 * @tc.name sprintf basic function test of octal with width
369 * @tc.desc [C- SOFTWARE -0200]
370 */
HWTEST_F(IoTest, testSprintfOctalWidth, Function | MediumTest | Level1)371 HWTEST_F(IoTest, testSprintfOctalWidth, Function | MediumTest | Level1)
372 {
373 char str[50] = {0};
374 int ret = sprintf(str, "%10o", 65535);
375 EXPECT_EQ(ret, 10) << "> sprintf fail, errno = " << errno;
376 EXPECT_STREQ(str, " 177777");
377
378 ret = sprintf(str, "% 10o", 65535);
379 EXPECT_EQ(ret, 10) << "> sprintf fail, errno = " << errno;
380 EXPECT_STREQ(str, " 177777");
381
382 ret = sprintf(str, "%010o", 65535);
383 EXPECT_EQ(ret, 10) << "> sprintf fail, errno = " << errno;
384 EXPECT_STREQ(str, "0000177777");
385
386 ret = sprintf(str, "%-10o", 65535);
387 EXPECT_EQ(ret, 10) << "> sprintf fail, errno = " << errno;
388 EXPECT_STREQ(str, "177777 ");
389
390 ret = sprintf(str, "%+10o", 65535);
391 EXPECT_EQ(ret, 10) << "> sprintf fail, errno = " << errno;
392 EXPECT_STREQ(str, " 177777");
393
394 ret = sprintf(str, "%0-10o", 65535);
395 EXPECT_EQ(ret, 10) << "> sprintf fail, errno = " << errno;
396 EXPECT_STREQ(str, "177777 ");
397
398 ret = sprintf(str, "%.10o", 65535);
399 EXPECT_EQ(ret, 10) << "> sprintf fail, errno = " << errno;
400 EXPECT_STREQ(str, "0000177777");
401
402 ret = sprintf(str, "%#10o", 65535);
403 EXPECT_EQ(ret, 10) << "> sprintf fail, errno = " << errno;
404 EXPECT_STREQ(str, " 0177777");
405
406 ret = sprintf(str, "%#010o", 65535);
407 EXPECT_EQ(ret, 10) << "> sprintf fail, errno = " << errno;
408 EXPECT_STREQ(str, "0000177777");
409
410 ret = sprintf(str, "%10.8o", 65535);
411 EXPECT_EQ(ret, 10) << "> sprintf fail, errno = " << errno;
412 EXPECT_STREQ(str, " 00177777");
413 }
414
415 /**
416 * @tc.number SUB_KERNEL_IO_SPRINTF_1300
417 * @tc.name sprintf basic function test of lowercase hex with boundary value
418 * @tc.desc [C- SOFTWARE -0200]
419 */
HWTEST_F(IoTest, testSprintfLowercaseHex, Function | MediumTest | Level1)420 HWTEST_F(IoTest, testSprintfLowercaseHex, Function | MediumTest | Level1)
421 {
422 char str[50] = {0};
423 int ret = sprintf(str, "%x", 4294967295);
424 EXPECT_EQ(ret, 8) << "> sprintf fail, errno = " << errno;
425 EXPECT_STREQ(str, "ffffffff");
426
427 ret = sprintf(str, "%x", 0);
428 EXPECT_EQ(ret, 1) << "> sprintf fail, errno = " << errno;
429 EXPECT_STREQ(str, "0");
430
431 ret = sprintf(str, "%x", -1);
432 EXPECT_EQ(ret, 8) << "> sprintf fail, errno = " << errno;
433 EXPECT_STREQ(str, "ffffffff");
434
435 ret = sprintf(str, "%lx", 4294967295);
436 EXPECT_EQ(ret, 8) << "> sprintf fail, errno = " << errno;
437 EXPECT_STREQ(str, "ffffffff");
438
439 ret = sprintf(str, "%lx", 0);
440 EXPECT_EQ(ret, 1) << "> sprintf fail, errno = " << errno;
441 EXPECT_STREQ(str, "0");
442
443 ret = sprintf(str, "%*x", 10, 65535);
444 EXPECT_EQ(ret, 10) << "> sprintf fail, errno = " << errno;
445 EXPECT_STREQ(str, " ffff");
446 }
447
448 /**
449 * @tc.number SUB_KERNEL_IO_SPRINTF_1400
450 * @tc.name sprintf basic function test of lowercase hex with width
451 * @tc.desc [C- SOFTWARE -0200]
452 */
HWTEST_F(IoTest, testSprintfLowercaseHexWidth, Function | MediumTest | Level1)453 HWTEST_F(IoTest, testSprintfLowercaseHexWidth, Function | MediumTest | Level1)
454 {
455 char str[50] = {0};
456 int ret = sprintf(str, "%10x", 65535);
457 EXPECT_EQ(ret, 10) << "> sprintf fail, errno = " << errno;
458 EXPECT_STREQ(str, " ffff");
459
460 ret = sprintf(str, "% 10x", 65535);
461 EXPECT_EQ(ret, 10) << "> sprintf fail, errno = " << errno;
462 EXPECT_STREQ(str, " ffff");
463
464 ret = sprintf(str, "%010x", 65535);
465 EXPECT_EQ(ret, 10) << "> sprintf fail, errno = " << errno;
466 EXPECT_STREQ(str, "000000ffff");
467
468 ret = sprintf(str, "%-10x", 65535);
469 EXPECT_EQ(ret, 10) << "> sprintf fail, errno = " << errno;
470 EXPECT_STREQ(str, "ffff ");
471
472 ret = sprintf(str, "%+10x", 65535);
473 EXPECT_EQ(ret, 10) << "> sprintf fail, errno = " << errno;
474 EXPECT_STREQ(str, " ffff");
475
476 ret = sprintf(str, "%0-10x", 65535);
477 EXPECT_EQ(ret, 10) << "> sprintf fail, errno = " << errno;
478 EXPECT_STREQ(str, "ffff ");
479
480 ret = sprintf(str, "%.10x", 65535);
481 EXPECT_EQ(ret, 10) << "> sprintf fail, errno = " << errno;
482 EXPECT_STREQ(str, "000000ffff");
483
484 ret = sprintf(str, "%#10x", 65535);
485 EXPECT_EQ(ret, 10) << "> sprintf fail, errno = " << errno;
486 EXPECT_STREQ(str, " 0xffff");
487
488 ret = sprintf(str, "%#010x", 65535);
489 EXPECT_EQ(ret, 10) << "> sprintf fail, errno = " << errno;
490 EXPECT_STREQ(str, "0x0000ffff");
491
492 ret = sprintf(str, "%10.8x", 65535);
493 EXPECT_EQ(ret, 10) << "> sprintf fail, errno = " << errno;
494 EXPECT_STREQ(str, " 0000ffff");
495 }
496
497 /**
498 * @tc.number SUB_KERNEL_IO_SPRINTF_1500
499 * @tc.name sprintf basic function test of uppercase hex with boundary value
500 * @tc.desc [C- SOFTWARE -0200]
501 */
HWTEST_F(IoTest, testSprintfUppercaseHex, Function | MediumTest | Level1)502 HWTEST_F(IoTest, testSprintfUppercaseHex, Function | MediumTest | Level1)
503 {
504 char str[50] = {0};
505 int ret = sprintf(str, "%X", 4294967295);
506 EXPECT_EQ(ret, 8) << "> sprintf fail, errno = " << errno;
507 EXPECT_STREQ(str, "FFFFFFFF");
508
509 ret = sprintf(str, "%X", 0);
510 EXPECT_EQ(ret, 1) << "> sprintf fail, errno = " << errno;
511 EXPECT_STREQ(str, "0");
512
513 ret = sprintf(str, "%X", -1);
514 EXPECT_EQ(ret, 8) << "> sprintf fail, errno = " << errno;
515 EXPECT_STREQ(str, "FFFFFFFF");
516
517 ret = sprintf(str, "%lX", 4294967295);
518 EXPECT_EQ(ret, 8) << "> sprintf fail, errno = " << errno;
519 EXPECT_STREQ(str, "FFFFFFFF");
520
521 ret = sprintf(str, "%lX", 0);
522 EXPECT_EQ(ret, 1) << "> sprintf fail, errno = " << errno;
523 EXPECT_STREQ(str, "0");
524
525 ret = sprintf(str, "%*X", 10, 65535);
526 EXPECT_EQ(ret, 10) << "> sprintf fail, errno = " << errno;
527 EXPECT_STREQ(str, " FFFF");
528 }
529
530 /**
531 * @tc.number SUB_KERNEL_IO_SPRINTF_1600
532 * @tc.name sprintf basic function test of uppercase hex with width
533 * @tc.desc [C- SOFTWARE -0200]
534 */
HWTEST_F(IoTest, testSprintfUppercaseHexWidth, Function | MediumTest | Level1)535 HWTEST_F(IoTest, testSprintfUppercaseHexWidth, Function | MediumTest | Level1)
536 {
537 char str[50] = {0};
538 int ret = sprintf(str, "%10X", 65535);
539 EXPECT_EQ(ret, 10) << "> sprintf fail, errno = " << errno;
540 EXPECT_STREQ(str, " FFFF");
541
542 ret = sprintf(str, "% 10X", 65535);
543 EXPECT_EQ(ret, 10) << "> sprintf fail, errno = " << errno;
544 EXPECT_STREQ(str, " FFFF");
545
546 ret = sprintf(str, "%010X", 65535);
547 EXPECT_EQ(ret, 10) << "> sprintf fail, errno = " << errno;
548 EXPECT_STREQ(str, "000000FFFF");
549
550 ret = sprintf(str, "%*X", 10, 65535);
551 EXPECT_EQ(ret, 10) << "> sprintf fail, errno = " << errno;
552 EXPECT_STREQ(str, " FFFF");
553
554 ret = sprintf(str, "%-10X", 65535);
555 EXPECT_EQ(ret, 10) << "> sprintf fail, errno = " << errno;
556 EXPECT_STREQ(str, "FFFF ");
557
558 ret = sprintf(str, "%+10X", 65535);
559 EXPECT_EQ(ret, 10) << "> sprintf fail, errno = " << errno;
560 EXPECT_STREQ(str, " FFFF");
561
562 ret = sprintf(str, "%0-10X", 65535);
563 EXPECT_EQ(ret, 10) << "> sprintf fail, errno = " << errno;
564 EXPECT_STREQ(str, "FFFF ");
565
566 ret = sprintf(str, "%.10X", 65535);
567 EXPECT_EQ(ret, 10) << "> sprintf fail, errno = " << errno;
568 EXPECT_STREQ(str, "000000FFFF");
569
570 ret = sprintf(str, "%#10X", 65535);
571 EXPECT_EQ(ret, 10) << "> sprintf fail, errno = " << errno;
572 EXPECT_STREQ(str, " 0XFFFF");
573
574 ret = sprintf(str, "%#010X", 65535);
575 EXPECT_EQ(ret, 10) << "> sprintf fail, errno = " << errno;
576 EXPECT_STREQ(str, "0X0000FFFF");
577
578 ret = sprintf(str, "%10.8X", 65535);
579 EXPECT_EQ(ret, 10) << "> sprintf fail, errno = " << errno;
580 EXPECT_STREQ(str, " 0000FFFF");
581 }
582
583 /**
584 * @tc.number SUB_KERNEL_IO_SPRINTF_1700
585 * @tc.name sprintf basic function test of float
586 * @tc.desc [C- SOFTWARE -0200]
587 */
HWTEST_F(IoTest, testSprintfFloat, Function | MediumTest | Level1)588 HWTEST_F(IoTest, testSprintfFloat, Function | MediumTest | Level1)
589 {
590 char str[100] = {0};
591 int ret = sprintf(str, "%f", -1.1);
592 EXPECT_EQ(ret, 9) << "> sprintf fail, errno = " << errno;
593 EXPECT_STREQ(str, "-1.100000");
594
595 ret = sprintf(str, "%.3f", -.123456);
596 EXPECT_EQ(ret, 6) << "> sprintf fail, errno = " << errno;
597 EXPECT_STREQ(str, "-0.123");
598
599 ret = sprintf(str, "%Lf", 1.1);
600 EXPECT_EQ(ret, 8) << "> sprintf fail, errno = " << errno;
601 EXPECT_STREQ(str, "1.100000");
602
603 ret = sprintf(str, "%5.1f %5.1f", 6., -6.);
604 EXPECT_EQ(ret, 11) << "> sprintf fail, errno = " << errno;
605 EXPECT_STREQ(str, " 6.0 -6.0");
606
607 ret = sprintf(str, "%05.1f %05.1f", 6., -6.);
608 EXPECT_EQ(ret, 11) << "> sprintf fail, errno = " << errno;
609 EXPECT_STREQ(str, "006.0 -06.0");
610
611 ret = sprintf(str, "%+05.1f %+05.1f", 6., -6.);
612 EXPECT_EQ(ret, 11) << "> sprintf fail, errno = " << errno;
613 EXPECT_STREQ(str, "+06.0 -06.0");
614
615 ret = sprintf(str, "%.3f %.5f", 1.6666, -1.1);
616 EXPECT_EQ(ret, 14) << "> sprintf fail, errno = " << errno;
617 EXPECT_STREQ(str, "1.667 -1.10000");
618
619 ret = sprintf(str, "%.0f %.0f", 1.1, 1.6);
620 EXPECT_EQ(ret, 3) << "> sprintf fail, errno = " << errno;
621 EXPECT_STREQ(str, "1 2");
622
623 ret = sprintf(str, "%+3.2f %+3.2f", 1.1, -1.1);
624 EXPECT_EQ(ret, 11) << "> sprintf fail, errno = " << errno;
625 EXPECT_STREQ(str, "+1.10 -1.10");
626
627 ret = sprintf(str, "hello %+3.2f world", 1.1);
628 EXPECT_EQ(ret, 17) << "> sprintf fail, errno = " << errno;
629 EXPECT_STREQ(str, "hello +1.10 world");
630
631 ret = sprintf(str, "%.*f", 3, 1.6666666666);
632 EXPECT_EQ(ret, 5) << "> sprintf fail, errno = " << errno;
633 EXPECT_STREQ(str, "1.667");
634 }
635
636 /**
637 * @tc.number SUB_KERNEL_IO_SPRINTF_1800
638 * @tc.name sprintf basic function test of float with format a
639 * @tc.desc [C- SOFTWARE -0200]
640 */
HWTEST_F(IoTest, testSprintfLowercaseA, Function | MediumTest | Level1)641 HWTEST_F(IoTest, testSprintfLowercaseA, Function | MediumTest | Level1)
642 {
643 char str[50] = {0};
644 int ret = sprintf(str, "%a", 0.00457878e+16);
645 EXPECT_EQ(ret, 17) << "> sprintf fail, errno = " << errno;
646 EXPECT_STREQ(str, "0x1.4d266c6ebp+45");
647
648 ret = sprintf(str, "%La", 0.00457878e+16);
649 EXPECT_EQ(ret, 17) << "> sprintf fail, errno = " << errno;
650 EXPECT_STREQ(str, "0x1.4d266c6ebp+45");
651
652 ret = sprintf(str, "%.*a", 3, 1.6666666666);
653 EXPECT_EQ(ret, 10) << "> sprintf fail, errno = " << errno;
654 EXPECT_STREQ(str, "0x1.aabp+0");
655
656 ret = sprintf(str, "%.3a %.5a", 1.6666, -1.1);
657 EXPECT_EQ(ret, 24) << "> sprintf fail, errno = " << errno;
658 EXPECT_STREQ(str, "0x1.aaap+0 -0x1.1999ap+0");
659
660 ret = sprintf(str, "%5.1a %10.1a", 6., -6.);
661 EXPECT_EQ(ret, 19) << "> sprintf fail, errno = " << errno;
662 EXPECT_STREQ(str, "0x1.8p+2 -0x1.8p+2");
663
664 ret = sprintf(str, "%05.1a %010.1a", 6., -6.);
665 EXPECT_EQ(ret, 19) << "> sprintf fail, errno = " << errno;
666 EXPECT_STREQ(str, "0x1.8p+2 -0x01.8p+2");
667
668 ret = sprintf(str, "%+05.1a %+010.1a", 6., -6.);
669 EXPECT_EQ(ret, 20) << "> sprintf fail, errno = " << errno;
670 EXPECT_STREQ(str, "+0x1.8p+2 -0x01.8p+2");
671
672 ret = sprintf(str, "%.0a %.0a", 1.1, 1.6);
673 EXPECT_EQ(ret, 13) << "> sprintf fail, errno = " << errno;
674 EXPECT_STREQ(str, "0x1p+0 0x2p+0");
675
676 ret = sprintf(str, "%+3.2a %+3.2a", 1.1, -1.1);
677 EXPECT_EQ(ret, 21) << "> sprintf fail, errno = " << errno;
678 EXPECT_STREQ(str, "+0x1.1ap+0 -0x1.1ap+0");
679
680 ret = sprintf(str, "hello %+3.2a world", 1.1);
681 EXPECT_EQ(ret, 22) << "> sprintf fail, errno = " << errno;
682 EXPECT_STREQ(str, "hello +0x1.1ap+0 world");
683 }
684
685 /**
686 * @tc.number SUB_KERNEL_IO_SPRINTF_1900
687 * @tc.name sprintf basic function test of float with format A
688 * @tc.desc [C- SOFTWARE -0200]
689 */
HWTEST_F(IoTest, testSprintfUppercaseA, Function | MediumTest | Level1)690 HWTEST_F(IoTest, testSprintfUppercaseA, Function | MediumTest | Level1)
691 {
692 char str[50] = {0};
693 int ret = sprintf(str, "%A", -0.00457878e+16);
694 EXPECT_EQ(ret, 18) << "> sprintf fail, errno = " << errno;
695 EXPECT_STREQ(str, "-0X1.4D266C6EBP+45");
696
697 ret = sprintf(str, "%LA", -0.00457878e+16);
698 EXPECT_EQ(ret, 18) << "> sprintf fail, errno = " << errno;
699 EXPECT_STREQ(str, "-0X1.4D266C6EBP+45");
700
701 ret = sprintf(str, "%.*A", 3, 1.6666666666);
702 EXPECT_EQ(ret, 10) << "> sprintf fail, errno = " << errno;
703 EXPECT_STREQ(str, "0X1.AABP+0");
704
705 ret = sprintf(str, "%.3A %.5A", 1.6666, -1.1);
706 EXPECT_EQ(ret, 24) << "> sprintf fail, errno = " << errno;
707 EXPECT_STREQ(str, "0X1.AAAP+0 -0X1.1999AP+0");
708
709 ret = sprintf(str, "%5.1A %10.1A", 6., -6.);
710 EXPECT_EQ(ret, 19) << "> sprintf fail, errno = " << errno;
711 EXPECT_STREQ(str, "0X1.8P+2 -0X1.8P+2");
712
713 ret = sprintf(str, "%05.1A %010.1A", 6., -6.);
714 EXPECT_EQ(ret, 19) << "> sprintf fail, errno = " << errno;
715 EXPECT_STREQ(str, "0X1.8P+2 -0X01.8P+2");
716
717 ret = sprintf(str, "%+05.1A %+010.1A", 6., -6.);
718 EXPECT_EQ(ret, 20) << "> sprintf fail, errno = " << errno;
719 EXPECT_STREQ(str, "+0X1.8P+2 -0X01.8P+2");
720
721 ret = sprintf(str, "%.0A %.0A", 1.1, 1.6);
722 EXPECT_EQ(ret, 13) << "> sprintf fail, errno = " << errno;
723 EXPECT_STREQ(str, "0X1P+0 0X2P+0");
724
725 ret = sprintf(str, "%+3.2A %+3.2A", 1.1, -1.1);
726 EXPECT_EQ(ret, 21) << "> sprintf fail, errno = " << errno;
727 EXPECT_STREQ(str, "+0X1.1AP+0 -0X1.1AP+0");
728
729 ret = sprintf(str, "hello %+3.2A world", 1.1);
730 EXPECT_EQ(ret, 22) << "> sprintf fail, errno = " << errno;
731 EXPECT_STREQ(str, "hello +0X1.1AP+0 world");
732 }
733
734 /**
735 * @tc.number SUB_KERNEL_IO_SPRINTF_2000
736 * @tc.name sprintf basic function test of float with format E,lowercase
737 * @tc.desc [C- SOFTWARE -0200]
738 */
HWTEST_F(IoTest, testSprintfLowercaseE, Function | MediumTest | Level1)739 HWTEST_F(IoTest, testSprintfLowercaseE, Function | MediumTest | Level1)
740 {
741 char str[50] = {0};
742 int ret = sprintf(str, "%e", 0.00457878e+16);
743 EXPECT_EQ(ret, 12) << "> sprintf fail, errno = " << errno;
744 EXPECT_STREQ(str, "4.578780e+13");
745
746 ret = sprintf(str, "%Le", 0.00457878e+16);
747 EXPECT_EQ(ret, 12) << "> sprintf fail, errno = " << errno;
748 EXPECT_STREQ(str, "4.578780e+13");
749
750 ret = sprintf(str, "%.*e", 3, 1.6666666666);
751 EXPECT_EQ(ret, 9) << "> sprintf fail, errno = " << errno;
752 EXPECT_STREQ(str, "1.667e+00");
753
754 ret = sprintf(str, "%5.1e %10.1e", 6., -6.);
755 EXPECT_EQ(ret, 18) << "> sprintf fail, errno = " << errno;
756 EXPECT_STREQ(str, "6.0e+00 -6.0e+00");
757
758 ret = sprintf(str, "%05.1e %010.1e", 6., -6.);
759 EXPECT_EQ(ret, 18) << "> sprintf fail, errno = " << errno;
760 EXPECT_STREQ(str, "6.0e+00 -006.0e+00");
761
762 ret = sprintf(str, "%+05.1e %+010.1e", 6., -6.);
763 EXPECT_EQ(ret, 19) << "> sprintf fail, errno = " << errno;
764 EXPECT_STREQ(str, "+6.0e+00 -006.0e+00");
765
766 ret = sprintf(str, "%.3e %.5e", 1.6666, -1.1);
767 EXPECT_EQ(ret, 22) << "> sprintf fail, errno = " << errno;
768 EXPECT_STREQ(str, "1.667e+00 -1.10000e+00");
769
770 ret = sprintf(str, "%.0e %.0e", 1.1, 1.6);
771 EXPECT_EQ(ret, 11) << "> sprintf fail, errno = " << errno;
772 EXPECT_STREQ(str, "1e+00 2e+00");
773
774 ret = sprintf(str, "%+3.2e %+3.2e", 1.1, -1.1);
775 EXPECT_EQ(ret, 19) << "> sprintf fail, errno = " << errno;
776 EXPECT_STREQ(str, "+1.10e+00 -1.10e+00");
777
778 ret = sprintf(str, "hello %+3.2e world", 1.1);
779 EXPECT_EQ(ret, 21) << "> sprintf fail, errno = " << errno;
780 EXPECT_STREQ(str, "hello +1.10e+00 world");
781 }
782
783 /**
784 * @tc.number SUB_KERNEL_IO_SPRINTF_2100
785 * @tc.name sprintf basic function test of float with format E,uppercase
786 * @tc.desc [C- SOFTWARE -0200]
787 */
HWTEST_F(IoTest, testSprintfUppercaseE, Function | MediumTest | Level1)788 HWTEST_F(IoTest, testSprintfUppercaseE, Function | MediumTest | Level1)
789 {
790 char str[50] = {0};
791 int ret = sprintf(str, "%E", -0.00457878e+16);
792 EXPECT_EQ(ret, 13) << "> sprintf fail, errno = " << errno;
793 EXPECT_STREQ(str, "-4.578780E+13");
794
795 ret = sprintf(str, "%LE", -0.00457878e+16);
796 EXPECT_EQ(ret, 13) << "> sprintf fail, errno = " << errno;
797 EXPECT_STREQ(str, "-4.578780E+13");
798
799 ret = sprintf(str, "%.*E", 3, 1.6666666666);
800 EXPECT_EQ(ret, 9) << "> sprintf fail, errno = " << errno;
801 EXPECT_STREQ(str, "1.667E+00");
802
803 ret = sprintf(str, "%5.1E %10.1E", 6., -6.);
804 EXPECT_EQ(ret, 18) << "> sprintf fail, errno = " << errno;
805 EXPECT_STREQ(str, "6.0E+00 -6.0E+00");
806
807 ret = sprintf(str, "%05.1E %010.1E", 6., -6.);
808 EXPECT_EQ(ret, 18) << "> sprintf fail, errno = " << errno;
809 EXPECT_STREQ(str, "6.0E+00 -006.0E+00");
810
811 ret = sprintf(str, "%+05.1E %+010.1E", 6., -6.);
812 EXPECT_EQ(ret, 19) << "> sprintf fail, errno = " << errno;
813 EXPECT_STREQ(str, "+6.0E+00 -006.0E+00");
814
815 ret = sprintf(str, "%.3E %.5E", 1.6666, -1.1);
816 EXPECT_EQ(ret, 22) << "> sprintf fail, errno = " << errno;
817 EXPECT_STREQ(str, "1.667E+00 -1.10000E+00");
818
819 ret = sprintf(str, "%.0E %.0E", 1.1, 1.6);
820 EXPECT_EQ(ret, 11) << "> sprintf fail, errno = " << errno;
821 EXPECT_STREQ(str, "1E+00 2E+00");
822
823 ret = sprintf(str, "%+3.2E %+3.2E", 1.1, -1.1);
824 EXPECT_EQ(ret, 19) << "> sprintf fail, errno = " << errno;
825 EXPECT_STREQ(str, "+1.10E+00 -1.10E+00");
826
827 ret = sprintf(str, "hello %+3.2E world", 1.1);
828 EXPECT_EQ(ret, 21) << "> sprintf fail, errno = " << errno;
829 EXPECT_STREQ(str, "hello +1.10E+00 world");
830 }
831
832 /**
833 * @tc.number SUB_KERNEL_IO_SPRINTF_2200
834 * @tc.name sprintf basic function test of float with format G,lowercase
835 * @tc.desc [C- SOFTWARE -0200]
836 */
HWTEST_F(IoTest, testSprintfLowercaseG, Function | MediumTest | Level1)837 HWTEST_F(IoTest, testSprintfLowercaseG, Function | MediumTest | Level1)
838 {
839 char str[50] = {0};
840 int ret = sprintf(str, "%g", 0.00457878e+16);
841 EXPECT_EQ(ret, 11) << "> sprintf fail, errno = " << errno;
842 EXPECT_STREQ(str, "4.57878e+13");
843
844 ret = sprintf(str, "%Lg", 0.00457878e+16);
845 EXPECT_EQ(ret, 11) << "> sprintf fail, errno = " << errno;
846 EXPECT_STREQ(str, "4.57878e+13");
847
848 ret = sprintf(str, "%.*g", 3, 1.6666666666);
849 EXPECT_EQ(ret, 4) << "> sprintf fail, errno = " << errno;
850 EXPECT_STREQ(str, "1.67");
851
852 ret = sprintf(str, "%5.1g %10.1g", 6., -6.);
853 EXPECT_EQ(ret, 16) << "> sprintf fail, errno = " << errno;
854 EXPECT_STREQ(str, " 6 -6");
855
856 ret = sprintf(str, "%05.1g %010.1g", 6., -6.);
857 EXPECT_EQ(ret, 16) << "> sprintf fail, errno = " << errno;
858 EXPECT_STREQ(str, "00006 -000000006");
859
860 ret = sprintf(str, "%+05.1g %+010.1g", 6., -6.);
861 EXPECT_EQ(ret, 16) << "> sprintf fail, errno = " << errno;
862 EXPECT_STREQ(str, "+0006 -000000006");
863
864 ret = sprintf(str, "%.3g %.5g", 1.6666, -1.1);
865 EXPECT_EQ(ret, 9) << "> sprintf fail, errno = " << errno;
866 EXPECT_STREQ(str, "1.67 -1.1");
867
868 ret = sprintf(str, "%.0g %.0g", 1.1, 1.6);
869 EXPECT_EQ(ret, 3) << "> sprintf fail, errno = " << errno;
870 EXPECT_STREQ(str, "1 2");
871
872 ret = sprintf(str, "%+3.2g %+3.2g", 1.1, -1.1);
873 EXPECT_EQ(ret, 9) << "> sprintf fail, errno = " << errno;
874 EXPECT_STREQ(str, "+1.1 -1.1");
875
876 ret = sprintf(str, "hello %+3.2g world", 1.1);
877 EXPECT_EQ(ret, 16) << "> sprintf fail, errno = " << errno;
878 EXPECT_STREQ(str, "hello +1.1 world");
879 }
880
881 /**
882 * @tc.number SUB_KERNEL_IO_SPRINTF_2300
883 * @tc.name sprintf basic function test of float with format G,uppercase
884 * @tc.desc [C- SOFTWARE -0200]
885 */
HWTEST_F(IoTest, testSprintfUppercaseG, Function | MediumTest | Level1)886 HWTEST_F(IoTest, testSprintfUppercaseG, Function | MediumTest | Level1)
887 {
888 char str[50] = {0};
889 int ret = sprintf(str, "%G", 0.00457878e+16);
890 EXPECT_EQ(ret, 11) << "> sprintf fail, errno = " << errno;
891 EXPECT_STREQ(str, "4.57878E+13");
892
893 ret = sprintf(str, "%LG", 0.00457878e+16);
894 EXPECT_EQ(ret, 11) << "> sprintf fail, errno = " << errno;
895 EXPECT_STREQ(str, "4.57878E+13");
896
897 ret = sprintf(str, "%.*G", 3, 1.6666666666);
898 EXPECT_EQ(ret, 4) << "> sprintf fail, errno = " << errno;
899 EXPECT_STREQ(str, "1.67");
900
901 ret = sprintf(str, "%5.1G %10.1G", 6., -6.);
902 EXPECT_EQ(ret, 16) << "> sprintf fail, errno = " << errno;
903 EXPECT_STREQ(str, " 6 -6");
904
905 ret = sprintf(str, "%05.1G %010.1G", 6., -6.);
906 EXPECT_EQ(ret, 16) << "> sprintf fail, errno = " << errno;
907 EXPECT_STREQ(str, "00006 -000000006");
908
909 ret = sprintf(str, "%+05.1G %+010.1G", 6., -6.);
910 EXPECT_EQ(ret, 16) << "> sprintf fail, errno = " << errno;
911 EXPECT_STREQ(str, "+0006 -000000006");
912
913 ret = sprintf(str, "%.3G %.5G", 1.6666, -1.1);
914 EXPECT_EQ(ret, 9) << "> sprintf fail, errno = " << errno;
915 EXPECT_STREQ(str, "1.67 -1.1");
916
917 ret = sprintf(str, "%.0G %.0G", 1.1, 1.6);
918 EXPECT_EQ(ret, 3) << "> sprintf fail, errno = " << errno;
919 EXPECT_STREQ(str, "1 2");
920
921 ret = sprintf(str, "%+3.2G %+3.2G", 1.1, -1.1);
922 EXPECT_EQ(ret, 9) << "> sprintf fail, errno = " << errno;
923 EXPECT_STREQ(str, "+1.1 -1.1");
924
925 ret = sprintf(str, "hello %+3.2G world", 1.1);
926 EXPECT_EQ(ret, 16) << "> sprintf fail, errno = " << errno;
927 EXPECT_STREQ(str, "hello +1.1 world");
928 }
929
930 /**
931 * @tc.number SUB_KERNEL_IO_SPRINTF_2400
932 * @tc.name sprintf basic function test of string
933 * @tc.desc [C- SOFTWARE -0200]
934 */
HWTEST_F(IoTest, testSprintfString, Function | MediumTest | Level1)935 HWTEST_F(IoTest, testSprintfString, Function | MediumTest | Level1)
936 {
937 char str[100] = {0};
938 int ret = sprintf(str, "%s", "hello world");
939 EXPECT_EQ(ret, 11) << "> sprintf fail, errno = " << errno;
940 EXPECT_STREQ(str, "hello world");
941
942 ret = sprintf(str, "%7s", "hello");
943 EXPECT_EQ(ret, 7) << "> sprintf fail, errno = " << errno;
944 EXPECT_STREQ(str, " hello");
945
946 ret = sprintf(str, "%-7s", "hello");
947 EXPECT_EQ(ret, 7) << "> sprintf fail, errno = " << errno;
948 EXPECT_STREQ(str, "hello ");
949
950 ret = sprintf(str, "%0-7s", "hello");
951 EXPECT_EQ(ret, 7) << "> sprintf fail, errno = " << errno;
952 EXPECT_STREQ(str, "hello ");
953
954 ret = sprintf(str, "%.6s", "hello");
955 EXPECT_EQ(ret, 5) << "> sprintf fail, errno = " << errno;
956 EXPECT_STREQ(str, "hello");
957
958 ret = sprintf(str, "%.6s", "");
959 EXPECT_EQ(ret, 0) << "> sprintf fail, errno = " << errno;
960 EXPECT_STREQ(str, "");
961
962 ret = sprintf(str, "%.3s", "hello");
963 EXPECT_EQ(ret, 3) << "> sprintf fail, errno = " << errno;
964 EXPECT_STREQ(str, "hel");
965
966 ret = sprintf(str, "%.3s%.6s", "abcd", "hello");
967 EXPECT_EQ(ret, 8) << "> sprintf fail, errno = " << errno;
968 EXPECT_STREQ(str, "abchello");
969
970 ret = sprintf(str, "%.3s%.6s", "abcd", "hello");
971 EXPECT_EQ(ret, 8) << "> sprintf fail, errno = " << errno;
972 EXPECT_STREQ(str, "abchello");
973
974 ret = sprintf(str, "%6.3s", "hello world");
975 EXPECT_EQ(ret, 6) << "> sprintf fail, errno = " << errno;
976 EXPECT_STREQ(str, " hel");
977
978 ret = sprintf(str, "%*s", 5, "hello world");
979 EXPECT_EQ(ret, 11) << "> sprintf fail, errno = " << errno;
980 EXPECT_STREQ(str, "hello world");
981
982 ret = sprintf(str, "%.*s", 5, "hello world");
983 EXPECT_EQ(ret, 5) << "> sprintf fail, errno = " << errno;
984 EXPECT_STREQ(str, "hello");
985
986 ret = sprintf(str, "123 %s 000", "hello");
987 EXPECT_EQ(ret, 13) << "> sprintf fail, errno = " << errno;
988 EXPECT_STREQ(str, "123 hello 000");
989
990 ret = sprintf(str, "th%s(a)|%s|", "is", "string");
991 EXPECT_EQ(ret, 15) << "> sprintf fail, errno = " << errno;
992 EXPECT_STREQ(str, "this(a)|string|");
993 }
994
995 /**
996 * @tc.number SUB_KERNEL_IO_SPRINTF_2500
997 * @tc.name sprintf basic function test of char
998 * @tc.desc [C- SOFTWARE -0200]
999 */
HWTEST_F(IoTest, testSprintfChar, Function | MediumTest | Level1)1000 HWTEST_F(IoTest, testSprintfChar, Function | MediumTest | Level1)
1001 {
1002 char str[100] = {0};
1003 int ret = sprintf(str, "%c", 97);
1004 EXPECT_EQ(ret, 1) << "> sprintf fail, errno = " << errno;
1005 EXPECT_STREQ(str, "a");
1006
1007 ret = sprintf(str, "%5c", 97);
1008 EXPECT_EQ(ret, 5) << "> sprintf fail, errno = " << errno;
1009 EXPECT_STREQ(str, " a");
1010
1011 ret = sprintf(str, "%-5c", 97);
1012 EXPECT_EQ(ret, 5) << "> sprintf fail, errno = " << errno;
1013 EXPECT_STREQ(str, "a ");
1014
1015 ret = sprintf(str, "%0-5c", 97);
1016 EXPECT_EQ(ret, 5) << "> sprintf fail, errno = " << errno;
1017 EXPECT_STREQ(str, "a ");
1018
1019 ret = sprintf(str, "hello %c world", '!');
1020 EXPECT_EQ(ret, 13) << "> sprintf fail, errno = " << errno;
1021 EXPECT_STREQ(str, "hello ! world");
1022
1023 ret = sprintf(str, "(%c) and |%.5c|", 'a', 'b');
1024 EXPECT_EQ(ret, 11) << "> sprintf fail, errno = " << errno;
1025 EXPECT_STREQ(str, "(a) and |b|");
1026 }
1027
1028 /**
1029 * @tc.number SUB_KERNEL_IO_SPRINTF_2600
1030 * @tc.name sprintf basic function test of pointer
1031 * @tc.desc [C- SOFTWARE -0200]
1032 */
HWTEST_F(IoTest, testSprintfPointer, Function | MediumTest | Level1)1033 HWTEST_F(IoTest, testSprintfPointer, Function | MediumTest | Level1)
1034 {
1035 char str[100] = {0};
1036 int ret = sprintf(str, "%p", 97);
1037 EXPECT_EQ(ret, 4) << "> sprintf fail, errno = " << errno;
1038 EXPECT_STREQ(str, "0x61");
1039
1040 ret = sprintf(str, "%p * %p", 255, 65535);
1041 EXPECT_EQ(ret, 13) << "> sprintf fail, errno = " << errno;
1042 EXPECT_STREQ(str, "0xff * 0xffff");
1043
1044 ret = sprintf(str, "%p", 0xfffff);
1045 EXPECT_EQ(ret, 7) << "> sprintf fail, errno = " << errno;
1046 EXPECT_STREQ(str, "0xfffff");
1047 }
1048
1049 /**
1050 * @tc.number SUB_KERNEL_IO_SPRINTF_2700
1051 * @tc.name sprintf basic function test of percent format
1052 * @tc.desc [C- SOFTWARE -0200]
1053 */
HWTEST_F(IoTest, testSprintfPercent, Function | MediumTest | Level1)1054 HWTEST_F(IoTest, testSprintfPercent, Function | MediumTest | Level1)
1055 {
1056 char str[100] = {0};
1057 int ret = sprintf(str, "%%", 97);
1058 EXPECT_EQ(ret, 1) << "> sprintf fail, errno = " << errno;
1059 EXPECT_STREQ(str, "%");
1060 }