|
1 | | - |
2 | 1 | #include <gtest/gtest.h> |
3 | 2 |
|
4 | 3 | #ifdef _WIN32 |
@@ -399,28 +398,69 @@ TEST(u8str_algo, to_lower_upper) |
399 | 398 | EXPECT_EQ(upper.to_std_string(), "HELLO WORLD!"); |
400 | 399 | } |
401 | 400 |
|
402 | | -// 연산자 테스트: +=, +, ==, != |
403 | | -TEST(u8str_operators, plus_and_compare) |
| 401 | +// ----------------------------------------------------------------------------- |
| 402 | +// 추가된 파서/세터 기능에 대한 테스트 |
| 403 | +// ----------------------------------------------------------------------------- |
| 404 | +// to_int64 / from_int64 테스트 |
| 405 | +TEST(u8str_parse, to_from_int64) |
404 | 406 | { |
405 | | - j2::string::u8::u8str a("Hello"); |
406 | | - j2::string::u8::u8str b("World"); |
407 | | - |
408 | | - a += " "; |
409 | | - a += b; |
410 | | - EXPECT_EQ(a.to_std_string(), "Hello World"); |
411 | | - |
412 | | - j2::string::u8::u8str c = ::u8("Hello") + " " + b; |
413 | | - EXPECT_EQ(c.to_std_string(), "Hello World"); |
414 | | - |
415 | | - j2::string::u8::u8str d("Hello World"); |
416 | | - EXPECT_TRUE(c == d); |
417 | | - EXPECT_FALSE(c != d); |
| 407 | + j2::string::u8::u8str s("1234567890"); |
| 408 | + int64_t i = 0; |
| 409 | + EXPECT_TRUE(s.to_int64(i)); |
| 410 | + EXPECT_EQ(i, 1234567890LL); |
| 411 | + |
| 412 | + // 음수 |
| 413 | + s.from_int64(-42); |
| 414 | + EXPECT_EQ(s.to_std_string(), std::to_string(-42)); |
| 415 | + EXPECT_TRUE(s.to_int64(i)); |
| 416 | + EXPECT_EQ(i, -42LL); |
| 417 | + |
| 418 | + // 실패 케이스: 숫자와 잔여문자 존재 |
| 419 | + s.from_cstr("12abc"); |
| 420 | + EXPECT_FALSE(s.to_int64(i)); |
| 421 | +} |
418 | 422 |
|
419 | | - j2::string::u8::u8str e("Different"); |
420 | | - EXPECT_FALSE(c == e); |
421 | | - EXPECT_TRUE(c != e); |
| 423 | +// to_double / from_double 테스트 |
| 424 | +TEST(u8str_parse, to_from_double) |
| 425 | +{ |
| 426 | + j2::string::u8::u8str s("3.14159"); |
| 427 | + double d = 0.0; |
| 428 | + EXPECT_TRUE(s.to_double(d)); |
| 429 | + EXPECT_NEAR(d, 3.14159, 1e-12); |
| 430 | + |
| 431 | + // 지수 표기 |
| 432 | + s.from_cstr("1.2e3"); |
| 433 | + EXPECT_TRUE(s.to_double(d)); |
| 434 | + EXPECT_NEAR(d, 1200.0, 1e-12); |
| 435 | + |
| 436 | + // from_double 로 설정 후 roundtrip |
| 437 | + s.from_double(-0.5); |
| 438 | + EXPECT_TRUE(s.to_double(d)); |
| 439 | + EXPECT_NEAR(d, -0.5, 1e-12); |
| 440 | + |
| 441 | + // 실패 케이스 |
| 442 | + s.from_cstr("3.14abc"); |
| 443 | + EXPECT_FALSE(s.to_double(d)); |
| 444 | +} |
422 | 445 |
|
423 | | - // const char* + u8str 조합 테스트 |
424 | | - j2::string::u8::u8str f = "Say " + ::u8("Hi"); |
425 | | - EXPECT_EQ(f.to_std_string(), "Say Hi"); |
| 446 | +// to_bool / from_bool 테스트 |
| 447 | +TEST(u8str_parse, to_from_bool) |
| 448 | +{ |
| 449 | + j2::string::u8::u8str s("true"); |
| 450 | + bool b = false; |
| 451 | + EXPECT_TRUE(s.to_bool(b)); |
| 452 | + EXPECT_TRUE(b); |
| 453 | + |
| 454 | + s.from_cstr("FALSE"); |
| 455 | + EXPECT_TRUE(s.to_bool(b)); |
| 456 | + EXPECT_FALSE(b); |
| 457 | + |
| 458 | + // from_bool 로 설정 후 roundtrip |
| 459 | + s.from_bool(true); |
| 460 | + EXPECT_TRUE(s.to_bool(b)); |
| 461 | + EXPECT_TRUE(b); |
| 462 | + |
| 463 | + // 실패 케이스: 허용되지 않는 표현 |
| 464 | + s.from_cstr("yes"); |
| 465 | + EXPECT_FALSE(s.to_bool(b)); |
426 | 466 | } |
0 commit comments