| 592 | } |
| 593 | |
| 594 | UNIT(core_string) { |
| 595 | String s; |
| 596 | |
| 597 | INFO("Testing string functionality"); |
| 598 | |
| 599 | EXPECT_FALSE(s.is_large_or_external()); |
| 600 | EXPECT_FALSE(s.is_external()); |
| 601 | |
| 602 | EXPECT_EQ(s.assign('a'), Error::kOk); |
| 603 | EXPECT_EQ(s.size(), 1u); |
| 604 | EXPECT_EQ(s.capacity(), String::kSSOCapacity); |
| 605 | EXPECT_EQ(s.data()[0], 'a'); |
| 606 | EXPECT_EQ(s.data()[1], '\0'); |
| 607 | EXPECT_TRUE(s.equals("a")); |
| 608 | EXPECT_TRUE(s.equals("a", 1)); |
| 609 | |
| 610 | EXPECT_EQ(s.assign_chars('b', 4), Error::kOk); |
| 611 | EXPECT_EQ(s.size(), 4u); |
| 612 | EXPECT_EQ(s.capacity(), String::kSSOCapacity); |
| 613 | EXPECT_EQ(s.data()[0], 'b'); |
| 614 | EXPECT_EQ(s.data()[1], 'b'); |
| 615 | EXPECT_EQ(s.data()[2], 'b'); |
| 616 | EXPECT_EQ(s.data()[3], 'b'); |
| 617 | EXPECT_EQ(s.data()[4], '\0'); |
| 618 | EXPECT_TRUE(s.equals("bbbb")); |
| 619 | EXPECT_TRUE(s.equals("bbbb", 4)); |
| 620 | |
| 621 | EXPECT_EQ(s.assign("abc"), Error::kOk); |
| 622 | EXPECT_EQ(s.size(), 3u); |
| 623 | EXPECT_EQ(s.capacity(), String::kSSOCapacity); |
| 624 | EXPECT_EQ(s.data()[0], 'a'); |
| 625 | EXPECT_EQ(s.data()[1], 'b'); |
| 626 | EXPECT_EQ(s.data()[2], 'c'); |
| 627 | EXPECT_EQ(s.data()[3], '\0'); |
| 628 | EXPECT_TRUE(s.equals("abc")); |
| 629 | EXPECT_TRUE(s.equals("abc", 3)); |
| 630 | |
| 631 | const char* large = "Large string that will not fit into SSO buffer"; |
| 632 | EXPECT_EQ(s.assign(large), Error::kOk); |
| 633 | EXPECT_TRUE(s.is_large_or_external()); |
| 634 | EXPECT_EQ(s.size(), strlen(large)); |
| 635 | EXPECT_GT(s.capacity(), String::kSSOCapacity); |
| 636 | EXPECT_TRUE(s.equals(large)); |
| 637 | EXPECT_TRUE(s.equals(large, strlen(large))); |
| 638 | |
| 639 | const char* additional = " (additional content)"; |
| 640 | EXPECT_TRUE(s.is_large_or_external()); |
| 641 | EXPECT_EQ(s.append(additional), Error::kOk); |
| 642 | EXPECT_EQ(s.size(), strlen(large) + strlen(additional)); |
| 643 | |
| 644 | EXPECT_EQ(s.clear(), Error::kOk); |
| 645 | EXPECT_EQ(s.size(), 0u); |
| 646 | EXPECT_TRUE(s.is_empty()); |
| 647 | EXPECT_EQ(s.data()[0], '\0'); |
| 648 | EXPECT_TRUE(s.is_large_or_external()); // Clear should never release the memory. |
| 649 | |
| 650 | EXPECT_EQ(s.append_uint(1234), Error::kOk); |
| 651 | EXPECT_TRUE(s.equals("1234")); |
nothing calls this directly
no test coverage detected