Source/WTF: Make StringBuilder::toAtomicString() consistent with StringBuilder::toStr...
authorbenjamin@webkit.org <benjamin@webkit.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Tue, 5 Feb 2013 20:49:20 +0000 (20:49 +0000)
committerbenjamin@webkit.org <benjamin@webkit.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Tue, 5 Feb 2013 20:49:20 +0000 (20:49 +0000)
https://bugs.webkit.org/show_bug.cgi?id=108894

Patch by Benjamin Poulain <bpoulain@apple.com> on 2013-02-05
Reviewed by Andreas Kling.

* wtf/text/StringBuilder.h:
(WTF::StringBuilder::toAtomicString): The function was returning the nullAtom for strings of length zero.
This is inconsistent with StringBuilder::toString() which always return an empty string.

This patch unifies the behavior.

Tools: Make StringBuilder::toAtomicString() consistent with StringBuilder::toString() for strings of null length
https://bugs.webkit.org/show_bug.cgi?id=108894

Patch by Benjamin Poulain <bpoulain@apple.com> on 2013-02-05
Reviewed by Andreas Kling.

* TestWebKitAPI/Tests/WTF/StringBuilder.cpp:
Extend the tests to check toAtomicString() on an empty builder.

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@141917 268f45cc-cd09-0410-ab3c-d52691b4dbfc

Source/WTF/ChangeLog
Source/WTF/wtf/text/StringBuilder.h
Tools/ChangeLog
Tools/TestWebKitAPI/Tests/WTF/StringBuilder.cpp

index f71e5f8..43fb228 100644 (file)
@@ -1,3 +1,16 @@
+2013-02-05  Benjamin Poulain  <bpoulain@apple.com>
+
+        Make StringBuilder::toAtomicString() consistent with StringBuilder::toString() for strings of length zero
+        https://bugs.webkit.org/show_bug.cgi?id=108894
+
+        Reviewed by Andreas Kling.
+
+        * wtf/text/StringBuilder.h:
+        (WTF::StringBuilder::toAtomicString): The function was returning the nullAtom for strings of length zero.
+        This is inconsistent with StringBuilder::toString() which always return an empty string.
+
+        This patch unifies the behavior.
+
 2013-02-04  Mark Hahnenberg  <mhahnenberg@apple.com>
 
         Structure::m_outOfLineCapacity is unnecessary
index 75a8f25..cf77d61 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2009, 2010, 2012 Apple Inc. All rights reserved.
+ * Copyright (C) 2009, 2010, 2012, 2013 Apple Inc. All rights reserved.
  * Copyright (C) 2012 Google Inc. All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -179,7 +179,7 @@ public:
     AtomicString toAtomicString() const
     {
         if (!m_length)
-            return AtomicString();
+            return emptyAtom;
 
         // If the buffer is sufficiently over-allocated, make a new AtomicString from a copy so its buffer is not so large.
         if (canShrink()) {
index c831498..16d2653 100644 (file)
@@ -1,3 +1,13 @@
+2013-02-05  Benjamin Poulain  <bpoulain@apple.com>
+
+        Make StringBuilder::toAtomicString() consistent with StringBuilder::toString() for strings of null length
+        https://bugs.webkit.org/show_bug.cgi?id=108894
+
+        Reviewed by Andreas Kling.
+
+        * TestWebKitAPI/Tests/WTF/StringBuilder.cpp:
+        Extend the tests to check toAtomicString() on an empty builder.
+
 2013-02-05  Jochen Eisinger  <jochen@chromium.org>
 
         [chromium] remove methods from the WebTestRunner interface that are only used by WebTestProxyBase
index 03be759..d1b5b43 100644 (file)
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2011 Google Inc. All rights reserved.
+ * Copyright (C) 2013 Apple Inc. All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
  * modification, are permitted provided that the following conditions are
@@ -284,4 +285,51 @@ TEST(StringBuilderTest, ToAtomicString)
     ASSERT_EQ(atomicString2.impl(), string.impl());
 }
 
+TEST(StringBuilderTest, ToAtomicStringOnEmpty)
+{
+    { // Default constructed.
+        StringBuilder builder;
+        AtomicString atomicString = builder.toAtomicString();
+        ASSERT_EQ(emptyAtom, atomicString);
+    }
+    { // With capacity.
+        StringBuilder builder;
+        builder.reserveCapacity(64);
+        AtomicString atomicString = builder.toAtomicString();
+        ASSERT_EQ(emptyAtom, atomicString);
+    }
+    { // AtomicString constructed from a null string.
+        StringBuilder builder;
+        builder.append(String());
+        AtomicString atomicString = builder.toAtomicString();
+        ASSERT_EQ(emptyAtom, atomicString);
+    }
+    { // AtomicString constructed from an empty string.
+        StringBuilder builder;
+        builder.append(emptyString());
+        AtomicString atomicString = builder.toAtomicString();
+        ASSERT_EQ(emptyAtom, atomicString);
+    }
+    { // AtomicString constructed from an empty StringBuilder.
+        StringBuilder builder;
+        StringBuilder emptyBuilder;
+        builder.append(emptyBuilder);
+        AtomicString atomicString = builder.toAtomicString();
+        ASSERT_EQ(emptyAtom, atomicString);
+    }
+    { // AtomicString constructed from an empty char* string.
+        StringBuilder builder;
+        builder.append("", 0);
+        AtomicString atomicString = builder.toAtomicString();
+        ASSERT_EQ(emptyAtom, atomicString);
+    }
+    { // Cleared StringBuilder.
+        StringBuilder builder;
+        builder.appendLiteral("WebKit");
+        builder.clear();
+        AtomicString atomicString = builder.toAtomicString();
+        ASSERT_EQ(emptyAtom, atomicString);
+    }
+}
+
 } // namespace