Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(594)

Unified Diff: third_party/WebKit/Source/wtf/text/StringBuilderTest.cpp

Issue 2033293002: Implement StringImpl sharing for StringView::toString(). (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Fix preload scanner bug. Created 4 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: third_party/WebKit/Source/wtf/text/StringBuilderTest.cpp
diff --git a/third_party/WebKit/Source/wtf/text/StringBuilderTest.cpp b/third_party/WebKit/Source/wtf/text/StringBuilderTest.cpp
index 5a3736887977a6ca5539042b42eaa7fcd174db1c..8ccf1f5d3ee66b5b48f58acc23cceaa010ff69fc 100644
--- a/third_party/WebKit/Source/wtf/text/StringBuilderTest.cpp
+++ b/third_party/WebKit/Source/wtf/text/StringBuilderTest.cpp
@@ -95,6 +95,24 @@ TEST(StringBuilderTest, Append)
builder2.append("0123456789");
EXPECT_EQ(characters, builder2.characters8());
+ StringBuilder builder3;
+ builder3.append("xyz", 1, 2);
+ expectBuilderContent("yz", builder3);
+
+ StringBuilder builder4;
+ builder4.append("abc", 5, 3);
+ expectEmpty(builder4);
+
+ StringBuilder builder5;
+ builder5.append(StringView(StringView("def"), 1, 1));
+ expectBuilderContent("e", builder5);
+
+ // append() has special code paths for String backed StringView instead of
+ // just char* backed ones.
+ StringBuilder builder6;
+ builder6.append(String("ghi"), 1, 2);
+ expectBuilderContent("hi", builder6);
+
// Test appending UChar32 characters to StringBuilder.
StringBuilder builderForUChar32Append;
UChar32 frakturAChar = 0x1D504;
@@ -106,6 +124,20 @@ TEST(StringBuilderTest, Append)
expectBuilderContent(String(resultArray, WTF_ARRAY_LENGTH(resultArray)), builderForUChar32Append);
}
+TEST(StringBuilderTest, AppendSharingImpl)
+{
+ String string("abc");
+ StringBuilder builder1;
+ builder1.append(string);
+ EXPECT_EQ(string.impl(), builder1.toString().impl());
+ EXPECT_EQ(string.impl(), builder1.toAtomicString().impl());
+
+ StringBuilder builder2;
+ builder2.append(string, 0, string.length());
+ EXPECT_EQ(string.impl(), builder2.toString().impl());
+ EXPECT_EQ(string.impl(), builder2.toAtomicString().impl());
+}
+
TEST(StringBuilderTest, ToString)
{
StringBuilder builder;

Powered by Google App Engine
This is Rietveld 408576698