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);