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 21using 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 */ 28HWTEST_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 */ 61HWTEST_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 */ 94HWTEST_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 */ 127HWTEST_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 */ 152HWTEST_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 */ 169HWTEST_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 */ 186HWTEST_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 */ 203HWTEST_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 */ 248HWTEST_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 */ 281HWTEST_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 */ 338HWTEST_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 */ 371HWTEST_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 */ 420HWTEST_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 */ 453HWTEST_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 */ 502HWTEST_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 */ 535HWTEST_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 */ 588HWTEST_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 */ 641HWTEST_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 */ 690HWTEST_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 */ 739HWTEST_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 */ 788HWTEST_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 */ 837HWTEST_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 */ 886HWTEST_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 */ 935HWTEST_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 */ 1000HWTEST_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 */ 1033HWTEST_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 */ 1054HWTEST_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}