This is an automated email from the ASF dual-hosted git repository.

ggregory pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/commons-text.git

commit d48c65c5d7116297de131e4e39d0dd5db8805416
Author: Gary Gregory <garydgreg...@gmail.com>
AuthorDate: Tue Jun 30 08:19:01 2020 -0400

    Add 
org.apache.commons.text.TextStringBuilder.TextStringBuilder(CharSequence).
---
 src/changes/changes.xml                            |  1 +
 .../org/apache/commons/text/TextStringBuilder.java | 20 +++++++++++---
 .../apache/commons/text/TextStringBuilderTest.java | 31 +++++++++++++++++++---
 3 files changed, 45 insertions(+), 7 deletions(-)

diff --git a/src/changes/changes.xml b/src/changes/changes.xml
index a411a6c..8e67b46 100644
--- a/src/changes/changes.xml
+++ b/src/changes/changes.xml
@@ -60,6 +60,7 @@ The <action> type attribute can be add,update,fix,remove.
     <action                  type="add" dev="ggregory" due-to="Gary 
Gregory">Add org.apache.commons.text.TextStringBuilder.toString(int, 
int).</action>
     <action                  type="add" dev="ggregory" due-to="Gary 
Gregory">Add org.apache.commons.text.TextStringBuilder.readFrom(Reader, 
int).</action>
     <action                  type="add" dev="ggregory" due-to="Gary 
Gregory">Add 
org.apache.commons.text.TextStringBuilder.charAtDelete(int).</action>
+    <action                  type="add" dev="ggregory" due-to="Gary 
Gregory">Add 
org.apache.commons.text.TextStringBuilder.TextStringBuilder(CharSequence).</action>
    
     <action                  type="update" dev="ggregory" due-to="Gary 
Gregory">[test] junit-jupiter 5.5.1 -> 5.5.2.</action>
     <action                  type="update" dev="ggregory" due-to="Gary 
Gregory">[test] org.assertj:assertj-core 3.13.2 -> 3.16.1.</action>
     <action                  type="update" dev="ggregory" due-to="Gary 
Gregory">[build] com.puppycrawl.tools:checkstyle 8.23 -> 8.27.</action>
diff --git a/src/main/java/org/apache/commons/text/TextStringBuilder.java 
b/src/main/java/org/apache/commons/text/TextStringBuilder.java
index a48069a..a0f7480 100644
--- a/src/main/java/org/apache/commons/text/TextStringBuilder.java
+++ b/src/main/java/org/apache/commons/text/TextStringBuilder.java
@@ -295,7 +295,7 @@ public class TextStringBuilder implements CharSequence, 
Appendable, Serializable
     }
 
     /**
-     * Constructor that creates an empty builder the specified initial 
capacity.
+     * Constructs an instance with the specified initial capacity.
      *
      * @param initialCapacity
      *            the initial capacity, zero or less will be converted to 32
@@ -306,14 +306,26 @@ public class TextStringBuilder implements CharSequence, 
Appendable, Serializable
     }
 
     /**
-     * Constructor that creates a builder from the string, allocating 32 extra 
characters for growth.
+     * Constructs an instance from a character sequence, allocating 32 extra 
characters for growth.
+     *
+     * @param seq the string to copy, null treated as blank string
+     * @since 1.9
+     */
+    public TextStringBuilder(final CharSequence seq) {
+        this(StringUtils.length(seq) + CAPACITY);
+        if (seq != null) {
+            append(seq);
+        }
+    }
+
+    /**
+     * Constructs an instance from a string, allocating 32 extra characters 
for growth.
      *
      * @param str
      *            the string to copy, null treated as blank string
      */
     public TextStringBuilder(final String str) {
-        super();
-        buffer = new char[StringUtils.length(str) + CAPACITY];
+        this(StringUtils.length(str) + CAPACITY);
         if (str != null) {
             append(str);
         }
diff --git a/src/test/java/org/apache/commons/text/TextStringBuilderTest.java 
b/src/test/java/org/apache/commons/text/TextStringBuilderTest.java
index e43fc0f..51161f6 100644
--- a/src/test/java/org/apache/commons/text/TextStringBuilderTest.java
+++ b/src/test/java/org/apache/commons/text/TextStringBuilderTest.java
@@ -550,6 +550,22 @@ public class TextStringBuilderTest {
         assertTrue(sb.getBuffer().length >= 5);
     }
 
+    @Test
+    public void testConstructorCharSequence() {
+        final CharBuffer str = CharBuffer.wrap("A");
+        final int length = str.length();
+        final TextStringBuilder sb = new TextStringBuilder(str);
+        assertEquals(TextStringBuilder.CAPACITY + length, sb.capacity());
+        assertEquals(length, sb.toCharArray().length);
+    }
+
+    @Test
+    public void testConstructorDefault() {
+        final TextStringBuilder sb = new TextStringBuilder();
+        assertEquals(TextStringBuilder.CAPACITY, sb.capacity());
+        assertEquals(0, sb.toCharArray().length);
+    }
+
     // -----------------------------------------------------------------------
     @Test
     public void testConstructors() {
@@ -594,6 +610,15 @@ public class TextStringBuilderTest {
         assertEquals(3, sb7.size());
     }
 
+    @Test
+    public void testConstructorString() {
+        final String str = "A";
+        final int length = str.length();
+        final TextStringBuilder sb = new TextStringBuilder(str);
+        assertEquals(TextStringBuilder.CAPACITY + length, sb.capacity());
+        assertEquals(length, sb.toCharArray().length);
+    }
+
     // -----------------------------------------------------------------------
     @Test
     public void testContains_char() {
@@ -888,7 +913,7 @@ public class TextStringBuilderTest {
         sb.append("junit");
         a = sb.getChars(input);
         assertSame(input, a);
-        assertTrue(Arrays.equals(new char[] {'j', 'u', 'n', 'i', 't', 0, 0, 0, 
0, 0 }, a));
+        assertTrue(Arrays.equals(new char[] {'j', 'u', 'n', 'i', 't', 0, 0, 0, 
0, 0}, a));
 
         a = sb.getChars(null);
         assertNotSame(input, a);
@@ -911,11 +936,11 @@ public class TextStringBuilderTest {
         sb.append("junit");
         char[] a = new char[5];
         sb.getChars(0, 5, a, 0);
-        assertTrue(Arrays.equals(new char[] {'j', 'u', 'n', 'i', 't' }, a));
+        assertTrue(Arrays.equals(new char[] {'j', 'u', 'n', 'i', 't'}, a));
 
         a = new char[5];
         sb.getChars(0, 2, a, 3);
-        assertTrue(Arrays.equals(new char[] {0, 0, 0, 'j', 'u' }, a));
+        assertTrue(Arrays.equals(new char[] {0, 0, 0, 'j', 'u'}, a));
 
         try {
             sb.getChars(-1, 0, a, 0);

Reply via email to