diff options
author | Abseil Team <absl-team@google.com> | 2024-04-18 08:17:00 -0700 |
---|---|---|
committer | Copybara-Service <copybara-worker@google.com> | 2024-04-18 08:18:20 -0700 |
commit | 6645f3141269fdb88ba772439f7af7bcd87dd39a (patch) | |
tree | 7ad7595f719e20e103ed3d8e9cfe97f3bcde33cf /absl/strings/cord_test.cc | |
parent | 4eb6f626f84779f7ba5a12f93acbaafd742c6851 (diff) | |
download | abseil-6645f3141269fdb88ba772439f7af7bcd87dd39a.tar.gz abseil-6645f3141269fdb88ba772439f7af7bcd87dd39a.tar.bz2 abseil-6645f3141269fdb88ba772439f7af7bcd87dd39a.zip |
Add `absl::AppendCordToString`
PiperOrigin-RevId: 626039936
Change-Id: I6e791363bab06d66029a8565c42d158a2fe176f0
Diffstat (limited to 'absl/strings/cord_test.cc')
-rw-r--r-- | absl/strings/cord_test.cc | 32 |
1 files changed, 32 insertions, 0 deletions
diff --git a/absl/strings/cord_test.cc b/absl/strings/cord_test.cc index cdd52463..658ad55b 100644 --- a/absl/strings/cord_test.cc +++ b/absl/strings/cord_test.cc @@ -703,6 +703,38 @@ TEST_P(CordTest, CopyToString) { "copying ", "to ", "a ", "string."}))); } +static void VerifyAppendCordToString(const absl::Cord& cord) { + std::string initially_empty; + absl::AppendCordToString(cord, &initially_empty); + EXPECT_EQ(initially_empty, cord); + + const absl::string_view kInitialContents = "initial contents."; + std::string expected_after_append = + absl::StrCat(kInitialContents, std::string(cord)); + + std::string no_reserve(kInitialContents); + absl::AppendCordToString(cord, &no_reserve); + EXPECT_EQ(no_reserve, expected_after_append); + + std::string has_reserved_capacity(kInitialContents); + has_reserved_capacity.reserve(has_reserved_capacity.size() + cord.size()); + const char* address_before_copy = has_reserved_capacity.data(); + absl::AppendCordToString(cord, &has_reserved_capacity); + EXPECT_EQ(has_reserved_capacity, expected_after_append); + EXPECT_EQ(has_reserved_capacity.data(), address_before_copy) + << "AppendCordToString allocated new string storage; " + "has_reserved_capacity = \"" + << has_reserved_capacity << "\""; +} + +TEST_P(CordTest, AppendToString) { + VerifyAppendCordToString(absl::Cord()); // empty cords cannot carry CRCs + VerifyAppendCordToString(MaybeHardened(absl::Cord("small cord"))); + VerifyAppendCordToString(MaybeHardened( + absl::MakeFragmentedCord({"fragmented ", "cord ", "to ", "test ", + "appending ", "to ", "a ", "string."}))); +} + TEST_P(CordTest, AppendEmptyBuffer) { absl::Cord cord; cord.Append(absl::CordBuffer()); |