You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@commons.apache.org by gg...@apache.org on 2020/06/28 19:26:03 UTC
[commons-text] 04/06: Sort members.
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 f4e32f0d883657a7aedaff62ef9c8d43e79bdfd5
Author: Gary Gregory <ga...@gmail.com>
AuthorDate: Sun Jun 28 15:09:38 2020 -0400
Sort members.
---
.../apache/commons/text/TextStringBuilderTest.java | 2713 ++++++++++----------
1 file changed, 1363 insertions(+), 1350 deletions(-)
diff --git a/src/test/java/org/apache/commons/text/TextStringBuilderTest.java b/src/test/java/org/apache/commons/text/TextStringBuilderTest.java
index e21f147..8be8278 100644
--- a/src/test/java/org/apache/commons/text/TextStringBuilderTest.java
+++ b/src/test/java/org/apache/commons/text/TextStringBuilderTest.java
@@ -47,181 +47,377 @@ import org.junit.jupiter.api.Test;
*/
public class TextStringBuilderTest {
- // -----------------------------------------------------------------------
- @Test
- public void testConstructors() {
- final TextStringBuilder sb0 = new TextStringBuilder();
- assertEquals(32, sb0.capacity());
- assertEquals(0, sb0.length());
- assertEquals(0, sb0.size());
-
- final TextStringBuilder sb1 = new TextStringBuilder(32);
- assertEquals(32, sb1.capacity());
- assertEquals(0, sb1.length());
- assertEquals(0, sb1.size());
-
- final TextStringBuilder sb2 = new TextStringBuilder(0);
- assertEquals(32, sb2.capacity());
- assertEquals(0, sb2.length());
- assertEquals(0, sb2.size());
-
- final TextStringBuilder sb3 = new TextStringBuilder(-1);
- assertEquals(32, sb3.capacity());
- assertEquals(0, sb3.length());
- assertEquals(0, sb3.size());
-
- final TextStringBuilder sb4 = new TextStringBuilder(1);
- assertEquals(1, sb4.capacity());
- assertEquals(0, sb4.length());
- assertEquals(0, sb4.size());
+ private static class MockReadable implements Readable {
- final TextStringBuilder sb5 = new TextStringBuilder((String) null);
- assertEquals(32, sb5.capacity());
- assertEquals(0, sb5.length());
- assertEquals(0, sb5.size());
+ private final CharBuffer src;
- final TextStringBuilder sb6 = new TextStringBuilder("");
- assertEquals(32, sb6.capacity());
- assertEquals(0, sb6.length());
- assertEquals(0, sb6.size());
+ MockReadable(final String src) {
+ this.src = CharBuffer.wrap(src);
+ }
- final TextStringBuilder sb7 = new TextStringBuilder("foo");
- assertEquals(35, sb7.capacity());
- assertEquals(3, sb7.length());
- assertEquals(3, sb7.size());
+ @Override
+ public int read(final CharBuffer cb) throws IOException {
+ return src.read(cb);
+ }
}
- // -----------------------------------------------------------------------
+ static final StringMatcher A_NUMBER_MATCHER = (buffer, start, bufferStart, bufferEnd) -> {
+ if (buffer[start] == 'A') {
+ start++;
+ if (start < bufferEnd && buffer[start] >= '0' && buffer[start] <= '9') {
+ return 2;
+ }
+ }
+ return 0;
+ };
+
@Test
- public void testChaining() {
+ public void test_LANG_1131_EqualsWithNullTextStringBuilder() throws Exception {
final TextStringBuilder sb = new TextStringBuilder();
- assertSame(sb, sb.setNewLineText(null));
- assertSame(sb, sb.setNullText(null));
- assertSame(sb, sb.setLength(1));
- assertSame(sb, sb.setCharAt(0, 'a'));
- assertSame(sb, sb.ensureCapacity(0));
- assertSame(sb, sb.minimizeCapacity());
- assertSame(sb, sb.clear());
- assertSame(sb, sb.reverse());
- assertSame(sb, sb.trim());
+ final TextStringBuilder other = null;
+ assertFalse(sb.equals(other));
}
// -----------------------------------------------------------------------
@Test
- public void testReadFromReader() throws Exception {
- String s = "";
- for (int i = 0; i < 100; ++i) {
- final TextStringBuilder sb = new TextStringBuilder();
- final int len = sb.readFrom(new StringReader(s));
+ public void testAppendCharBuffer() {
+ final TextStringBuilder sb1 = new TextStringBuilder();
+ final CharBuffer buf = CharBuffer.allocate(10);
+ buf.append("0123456789");
+ buf.flip();
+ sb1.append(buf);
+ assertEquals("0123456789", sb1.toString());
- assertEquals(s.length(), len);
- assertEquals(s, sb.toString());
+ final TextStringBuilder sb2 = new TextStringBuilder();
+ sb2.append(buf, 1, 8);
+ assertEquals("12345678", sb2.toString());
+ }
- s += Integer.toString(i);
+ @Test
+ public void testAppendCharBufferException() throws Exception {
+ final TextStringBuilder sb = new TextStringBuilder("1234567890");
+ final String text = "Test";
+ final CharBuffer buffer = CharBuffer.allocate(sb.size() + text.length());
+ buffer.put(text);
+ buffer.flip();
+ try {
+ sb.append(buffer, -1, 12);
+ } catch (final StringIndexOutOfBoundsException e) {
+ assertEquals("startIndex must be valid", e.getMessage());
+ }
+
+ try {
+ sb.append(buffer, 0, -1);
+ } catch (final StringIndexOutOfBoundsException e) {
+ assertEquals("length must be valid", e.getMessage());
}
+
+ sb.append(buffer);
+ assertEquals("1234567890Test", sb.toString());
}
@Test
- public void testReadFromReaderAppendsToEnd() throws Exception {
- final TextStringBuilder sb = new TextStringBuilder("Test");
- sb.readFrom(new StringReader(" 123"));
- assertEquals("Test 123", sb.toString());
+ public void testAppendCharBufferNull() throws Exception {
+ final TextStringBuilder sb = new TextStringBuilder("1234567890");
+ final CharBuffer buffer = null;
+ sb.append(buffer);
+ assertEquals("1234567890", sb.toString());
+
+ final TextStringBuilder sb1 = new TextStringBuilder("1234567890");
+ final CharBuffer buffer1 = null;
+ sb.append(buffer1, 0, 0);
+ assertEquals("1234567890", sb1.toString());
}
@Test
- public void testReadFromCharBuffer() throws Exception {
- String s = "";
- for (int i = 0; i < 100; ++i) {
- final TextStringBuilder sb = new TextStringBuilder();
- final int len = sb.readFrom(CharBuffer.wrap(s));
+ public void testAppendCharSequence() {
+ final CharSequence obj0 = null;
+ final CharSequence obj1 = new TextStringBuilder("test1");
+ final CharSequence obj2 = new StringBuilder("test2");
+ final CharSequence obj3 = new StringBuffer("test3");
+ final CharBuffer obj4 = CharBuffer.wrap("test4".toCharArray());
- assertEquals(s.length(), len);
- assertEquals(s, sb.toString());
+ final TextStringBuilder sb0 = new TextStringBuilder();
+ assertEquals("", sb0.append(obj0).toString());
- s += Integer.toString(i);
- }
- }
+ final TextStringBuilder sb1 = new TextStringBuilder();
+ assertEquals("test1", sb1.append(obj1).toString());
- @Test
- public void testReadFromCharBufferAppendsToEnd() throws Exception {
- final TextStringBuilder sb = new TextStringBuilder("Test");
- sb.readFrom(CharBuffer.wrap(" 123"));
- assertEquals("Test 123", sb.toString());
- }
+ final TextStringBuilder sb2 = new TextStringBuilder();
+ assertEquals("test2", sb2.append(obj2).toString());
- @Test
- public void testReadFromReadable() throws Exception {
- String s = "";
- for (int i = 0; i < 100; ++i) {
- final TextStringBuilder sb = new TextStringBuilder();
- final int len = sb.readFrom(new MockReadable(s));
+ final TextStringBuilder sb3 = new TextStringBuilder();
+ assertEquals("test3", sb3.append(obj3).toString());
- assertEquals(s.length(), len);
- assertEquals(s, sb.toString());
+ final TextStringBuilder sb4 = new TextStringBuilder();
+ assertEquals("test4", sb4.append(obj4).toString());
- s += Integer.toString(i);
- }
+ final TextStringBuilder sb5 = new TextStringBuilder();
+ assertEquals("", sb5.append(obj0, 0, 0).toString());
}
@Test
- public void testReadFromReadableAppendsToEnd() throws Exception {
- final TextStringBuilder sb = new TextStringBuilder("Test");
- sb.readFrom(new MockReadable(" 123"));
- assertEquals("Test 123", sb.toString());
+ public void testAppendln() {
+ final TextStringBuilder sb1 = new TextStringBuilder();
+ final char ch = 'c';
+ assertEquals("c" + System.lineSeparator(), sb1.appendln(ch).toString());
}
- private static class MockReadable implements Readable {
+ @Test
+ public void testAppendStringBuilderNull() {
+ final TextStringBuilder sb1 = new TextStringBuilder();
+ final StringBuilder b = null;
+ assertEquals("", sb1.append(b).toString());
- private final CharBuffer src;
+ final TextStringBuilder sb2 = new TextStringBuilder();
+ assertEquals("", sb2.append(b, 0, 0).toString());
+ }
- MockReadable(final String src) {
- this.src = CharBuffer.wrap(src);
- }
+ @Test
+ public void testAppendTakingTwoIntsWithIndexOutOfBoundsThrowsStringIndexOutOfBoundsExceptionTwo() {
+ assertThatExceptionOfType(StringIndexOutOfBoundsException.class).isThrownBy(() -> {
+ final Charset charset = Charset.defaultCharset();
+ final ByteBuffer byteBuffer = charset.encode("asdf");
+ final CharBuffer charBuffer = charset.decode(byteBuffer);
- @Override
- public int read(final CharBuffer cb) throws IOException {
- return src.read(cb);
- }
+ new TextStringBuilder().append(charBuffer, 933, 654);
+ });
}
- // -----------------------------------------------------------------------
@Test
- public void testGetSetNewLineText() {
- final TextStringBuilder sb = new TextStringBuilder();
- assertNull(sb.getNewLineText());
+ public void testAppendTakingTwoIntsWithZeroThrowsStringIndexOutOfBoundsException() {
+ assertThatExceptionOfType(StringIndexOutOfBoundsException.class).isThrownBy(() -> {
+ final Charset charset = Charset.defaultCharset();
+ final ByteBuffer byteBuffer = charset.encode("end < start");
+ final CharBuffer charBuffer = charset.decode(byteBuffer);
- sb.setNewLineText("#");
- assertEquals("#", sb.getNewLineText());
+ new TextStringBuilder(630).append(charBuffer, 0, 630);
+ });
+ }
- sb.setNewLineText("");
- assertEquals("", sb.getNewLineText());
+ @Test
+ public void testAppendToCharBuffer() throws Exception {
+ final TextStringBuilder sb = new TextStringBuilder("1234567890");
+ final String text = "Test ";
+ final CharBuffer buffer = CharBuffer.allocate(sb.size() + text.length());
+ buffer.put(text);
- sb.setNewLineText((String) null);
- assertNull(sb.getNewLineText());
+ sb.appendTo(buffer);
+
+ buffer.flip();
+ assertEquals("Test 1234567890", buffer.toString());
}
- // -----------------------------------------------------------------------
@Test
- public void testGetSetNullText() {
- final TextStringBuilder sb = new TextStringBuilder();
- assertNull(sb.getNullText());
+ public void testAppendToStringBuffer() throws Exception {
+ final TextStringBuilder sb = new TextStringBuilder("1234567890");
+ final StringBuffer buffer = new StringBuffer("Test ");
- sb.setNullText("null");
- assertEquals("null", sb.getNullText());
+ sb.appendTo(buffer);
- sb.setNullText("");
- assertNull(sb.getNullText());
+ assertEquals("Test 1234567890", buffer.toString());
+ }
- sb.setNullText("NULL");
- assertEquals("NULL", sb.getNullText());
+ @Test
+ public void testAppendToStringBuilder() throws Exception {
+ final TextStringBuilder sb = new TextStringBuilder("1234567890");
+ final StringBuilder builder = new StringBuilder("Test ");
- sb.setNullText((String) null);
- assertNull(sb.getNullText());
+ sb.appendTo(builder);
+
+ assertEquals("Test 1234567890", builder.toString());
}
// -----------------------------------------------------------------------
@Test
- public void testCapacityAndLength() {
+ public void testAppendToWriter() throws Exception {
+ final TextStringBuilder sb = new TextStringBuilder("1234567890");
+ final StringWriter writer = new StringWriter();
+ writer.append("Test ");
+
+ sb.appendTo(writer);
+
+ assertEquals("Test 1234567890", writer.toString());
+ }
+
+ @Test
+ public void testAsBuilder() {
+ final TextStringBuilder sb = new TextStringBuilder().appendAll("Lorem", " ", "ipsum", " ", "dolor");
+ assertEquals(sb.toString(), sb.build());
+ }
+
+ // -----------------------------------------------------------------------
+ @Test
+ public void testAsReader() throws Exception {
+ final TextStringBuilder sb = new TextStringBuilder("some text");
+ try (Reader reader = sb.asReader()) {
+ assertTrue(reader.ready());
+ final char[] buf = new char[40];
+ assertEquals(9, reader.read(buf));
+ assertEquals("some text", new String(buf, 0, 9));
+
+ assertEquals(-1, reader.read());
+ assertFalse(reader.ready());
+ assertEquals(0, reader.skip(2));
+ assertEquals(0, reader.skip(-1));
+
+ assertTrue(reader.markSupported());
+ }
+ try (Reader reader = sb.asReader()) {
+ assertEquals('s', reader.read());
+ reader.mark(-1);
+ char[] array = new char[3];
+ assertEquals(3, reader.read(array, 0, 3));
+ assertEquals('o', array[0]);
+ assertEquals('m', array[1]);
+ assertEquals('e', array[2]);
+ reader.reset();
+ assertEquals(1, reader.read(array, 1, 1));
+ assertEquals('o', array[0]);
+ assertEquals('o', array[1]);
+ assertEquals('e', array[2]);
+ assertEquals(2, reader.skip(2));
+ assertEquals(' ', reader.read());
+
+ assertTrue(reader.ready());
+ reader.close();
+ assertTrue(reader.ready());
+ }
+ try (Reader reader = sb.asReader()) {
+ char[] array = new char[3];
+ try {
+ reader.read(array, -1, 0);
+ fail("Exception expected!");
+ } catch (final IndexOutOfBoundsException ex) {
+ // expected
+ }
+ try {
+ reader.read(array, 0, -1);
+ fail("Exception expected!");
+ } catch (final IndexOutOfBoundsException ex) {
+ // expected
+ }
+ try {
+ reader.read(array, 100, 1);
+ fail("Exception expected!");
+ } catch (final IndexOutOfBoundsException ex) {
+ // expected
+ }
+ try {
+ reader.read(array, 0, 100);
+ fail("Exception expected!");
+ } catch (final IndexOutOfBoundsException ex) {
+ // expected
+ }
+ try {
+ reader.read(array, Integer.MAX_VALUE, Integer.MAX_VALUE);
+ fail("Exception expected!");
+ } catch (final IndexOutOfBoundsException ex) {
+ // expected
+ }
+
+ assertEquals(0, reader.read(array, 0, 0));
+ assertEquals(0, array[0]);
+ assertEquals(0, array[1]);
+ assertEquals(0, array[2]);
+
+ reader.skip(9);
+ assertEquals(-1, reader.read(array, 0, 1));
+
+ reader.reset();
+ array = new char[30];
+ assertEquals(9, reader.read(array, 0, 30));
+ }
+ }
+
+ // -----------------------------------------------------------------------
+ @Test
+ public void testAsTokenizer() throws Exception {
+ // from Javadoc
+ final TextStringBuilder b = new TextStringBuilder();
+ b.append("a b ");
+ final StringTokenizer t = b.asTokenizer();
+
+ final String[] tokens1 = t.getTokenArray();
+ assertEquals(2, tokens1.length);
+ assertEquals("a", tokens1[0]);
+ assertEquals("b", tokens1[1]);
+ assertEquals(2, t.size());
+
+ b.append("c d ");
+ final String[] tokens2 = t.getTokenArray();
+ assertEquals(2, tokens2.length);
+ assertEquals("a", tokens2[0]);
+ assertEquals("b", tokens2[1]);
+ assertEquals(2, t.size());
+ assertEquals("a", t.next());
+ assertEquals("b", t.next());
+
+ t.reset();
+ final String[] tokens3 = t.getTokenArray();
+ assertEquals(4, tokens3.length);
+ assertEquals("a", tokens3[0]);
+ assertEquals("b", tokens3[1]);
+ assertEquals("c", tokens3[2]);
+ assertEquals("d", tokens3[3]);
+ assertEquals(4, t.size());
+ assertEquals("a", t.next());
+ assertEquals("b", t.next());
+ assertEquals("c", t.next());
+ assertEquals("d", t.next());
+
+ assertEquals("a b c d ", t.getContent());
+ }
+
+ // -----------------------------------------------------------------------
+ @Test
+ public void testAsWriter() throws Exception {
+ final TextStringBuilder sb = new TextStringBuilder("base");
+ try (Writer writer = sb.asWriter()) {
+
+ writer.write('l');
+ assertEquals("basel", sb.toString());
+
+ writer.write(new char[] {'i', 'n'});
+ assertEquals("baselin", sb.toString());
+
+ writer.write(new char[] {'n', 'e', 'r'}, 1, 2);
+ assertEquals("baseliner", sb.toString());
+
+ writer.write(" rout");
+ assertEquals("baseliner rout", sb.toString());
+
+ writer.write("ping that server", 1, 3);
+ assertEquals("baseliner routing", sb.toString());
+
+ writer.flush(); // no effect
+ assertEquals("baseliner routing", sb.toString());
+
+ writer.close(); // no effect
+ assertEquals("baseliner routing", sb.toString());
+
+ writer.write(" hi"); // works after close
+ assertEquals("baseliner routing hi", sb.toString());
+
+ sb.setLength(4); // mix and match
+ writer.write('d');
+ assertEquals("based", sb.toString());
+ }
+ }
+
+ // -----------------------------------------------------------------------
+ @Test
+ public void testCapacity() {
+ final TextStringBuilder sb = new TextStringBuilder();
+ assertEquals(sb.getBuffer().length, sb.capacity());
+
+ sb.append("HelloWorldHelloWorldHelloWorldHelloWorld");
+ assertEquals(sb.getBuffer().length, sb.capacity());
+ }
+
+ // -----------------------------------------------------------------------
+ @Test
+ public void testCapacityAndLength() {
final TextStringBuilder sb = new TextStringBuilder();
assertEquals(32, sb.capacity());
assertEquals(0, sb.length());
@@ -301,261 +497,119 @@ public class TextStringBuilderTest {
// -----------------------------------------------------------------------
@Test
- public void testLength() {
- final TextStringBuilder sb = new TextStringBuilder();
- assertEquals(0, sb.length());
-
- sb.append("Hello");
- assertEquals(5, sb.length());
- }
-
- @Test
- public void testSetLength() {
+ public void testChaining() {
final TextStringBuilder sb = new TextStringBuilder();
- sb.append("Hello");
- sb.setLength(2); // shorten
- assertEquals("He", sb.toString());
- sb.setLength(2); // no change
- assertEquals("He", sb.toString());
- sb.setLength(3); // lengthen
- assertEquals("He\0", sb.toString());
-
- assertThrows(IndexOutOfBoundsException.class, () -> sb.setLength(-1));
+ assertSame(sb, sb.setNewLineText(null));
+ assertSame(sb, sb.setNullText(null));
+ assertSame(sb, sb.setLength(1));
+ assertSame(sb, sb.setCharAt(0, 'a'));
+ assertSame(sb, sb.ensureCapacity(0));
+ assertSame(sb, sb.minimizeCapacity());
+ assertSame(sb, sb.clear());
+ assertSame(sb, sb.reverse());
+ assertSame(sb, sb.trim());
}
// -----------------------------------------------------------------------
@Test
- public void testCapacity() {
+ public void testCharAt() {
final TextStringBuilder sb = new TextStringBuilder();
- assertEquals(sb.getBuffer().length, sb.capacity());
-
- sb.append("HelloWorldHelloWorldHelloWorldHelloWorld");
- assertEquals(sb.getBuffer().length, sb.capacity());
+ assertThrows(IndexOutOfBoundsException.class, () -> sb.charAt(0));
+ assertThrows(IndexOutOfBoundsException.class, () -> sb.charAt(-1));
+ sb.append("foo");
+ assertEquals('f', sb.charAt(0));
+ assertEquals('o', sb.charAt(1));
+ assertEquals('o', sb.charAt(2));
+ assertThrows(IndexOutOfBoundsException.class, () -> sb.charAt(-1));
+ assertThrows(IndexOutOfBoundsException.class, () -> sb.charAt(3));
}
@Test
- public void testEnsureCapacity() {
+ public void testClear() {
final TextStringBuilder sb = new TextStringBuilder();
- sb.ensureCapacity(2);
- assertTrue(sb.capacity() >= 2);
-
- sb.ensureCapacity(-1);
- assertTrue(sb.capacity() >= 0);
-
- sb.append("HelloWorld");
- sb.ensureCapacity(40);
- assertTrue(sb.capacity() >= 40);
+ sb.append("Hello");
+ sb.clear();
+ assertEquals(0, sb.length());
+ assertTrue(sb.getBuffer().length >= 5);
}
+ // -----------------------------------------------------------------------
@Test
- public void testMinimizeCapacity() {
- final TextStringBuilder sb = new TextStringBuilder();
- sb.minimizeCapacity();
- assertEquals(0, sb.capacity());
+ public void testConstructors() {
+ final TextStringBuilder sb0 = new TextStringBuilder();
+ assertEquals(32, sb0.capacity());
+ assertEquals(0, sb0.length());
+ assertEquals(0, sb0.size());
- sb.append("HelloWorld");
- sb.minimizeCapacity();
- assertEquals(10, sb.capacity());
- }
-
- // -----------------------------------------------------------------------
- @Test
- public void testSize() {
- final TextStringBuilder sb = new TextStringBuilder();
- assertEquals(0, sb.size());
-
- sb.append("Hello");
- assertEquals(5, sb.size());
- }
-
- @Test
- public void testIsEmpty() {
- final TextStringBuilder sb = new TextStringBuilder();
- assertTrue(sb.isEmpty());
-
- sb.append("Hello");
- assertFalse(sb.isEmpty());
+ final TextStringBuilder sb1 = new TextStringBuilder(32);
+ assertEquals(32, sb1.capacity());
+ assertEquals(0, sb1.length());
+ assertEquals(0, sb1.size());
- sb.clear();
- assertTrue(sb.isEmpty());
- }
+ final TextStringBuilder sb2 = new TextStringBuilder(0);
+ assertEquals(32, sb2.capacity());
+ assertEquals(0, sb2.length());
+ assertEquals(0, sb2.size());
- @Test
- public void testClear() {
- final TextStringBuilder sb = new TextStringBuilder();
- sb.append("Hello");
- sb.clear();
- assertEquals(0, sb.length());
- assertTrue(sb.getBuffer().length >= 5);
- }
+ final TextStringBuilder sb3 = new TextStringBuilder(-1);
+ assertEquals(32, sb3.capacity());
+ assertEquals(0, sb3.length());
+ assertEquals(0, sb3.size());
- // -----------------------------------------------------------------------
- @Test
- public void testCharAt() {
- final TextStringBuilder sb = new TextStringBuilder();
- assertThrows(IndexOutOfBoundsException.class, () -> sb.charAt(0));
- assertThrows(IndexOutOfBoundsException.class, () -> sb.charAt(-1));
- sb.append("foo");
- assertEquals('f', sb.charAt(0));
- assertEquals('o', sb.charAt(1));
- assertEquals('o', sb.charAt(2));
- assertThrows(IndexOutOfBoundsException.class, () -> sb.charAt(-1));
- assertThrows(IndexOutOfBoundsException.class, () -> sb.charAt(3));
- }
+ final TextStringBuilder sb4 = new TextStringBuilder(1);
+ assertEquals(1, sb4.capacity());
+ assertEquals(0, sb4.length());
+ assertEquals(0, sb4.size());
- // -----------------------------------------------------------------------
- @Test
- public void testSetCharAt() {
- final TextStringBuilder sb = new TextStringBuilder();
- assertThrows(IndexOutOfBoundsException.class, () -> sb.setCharAt(0, 'f'));
- assertThrows(IndexOutOfBoundsException.class, () -> sb.setCharAt(-1, 'f'));
- sb.append("foo");
- sb.setCharAt(0, 'b');
- sb.setCharAt(1, 'a');
- sb.setCharAt(2, 'r');
- assertThrows(IndexOutOfBoundsException.class, () -> sb.setCharAt(3, '!'));
- assertEquals("bar", sb.toString());
- }
+ final TextStringBuilder sb5 = new TextStringBuilder((String) null);
+ assertEquals(32, sb5.capacity());
+ assertEquals(0, sb5.length());
+ assertEquals(0, sb5.size());
- // -----------------------------------------------------------------------
- @Test
- public void testDeleteCharAt() {
- final TextStringBuilder sb = new TextStringBuilder("abc");
- sb.deleteCharAt(0);
- assertEquals("bc", sb.toString());
+ final TextStringBuilder sb6 = new TextStringBuilder("");
+ assertEquals(32, sb6.capacity());
+ assertEquals(0, sb6.length());
+ assertEquals(0, sb6.size());
- assertThrows(IndexOutOfBoundsException.class, () -> sb.deleteCharAt(1000));
+ final TextStringBuilder sb7 = new TextStringBuilder("foo");
+ assertEquals(35, sb7.capacity());
+ assertEquals(3, sb7.length());
+ assertEquals(3, sb7.size());
}
// -----------------------------------------------------------------------
@Test
- public void testToCharArray() {
- final TextStringBuilder sb = new TextStringBuilder();
- assertEquals(0, sb.toCharArray().length);
-
- char[] a = sb.toCharArray();
- assertNotNull(a, "toCharArray() result is null");
- assertEquals(0, a.length, "toCharArray() result is too large");
-
- sb.append("junit");
- a = sb.toCharArray();
- assertEquals(5, a.length, "toCharArray() result incorrect length");
- assertTrue(Arrays.equals("junit".toCharArray(), a), "toCharArray() result does not match");
- }
-
- @Test
- public void testToCharArrayIntInt() {
- final TextStringBuilder sb = new TextStringBuilder();
- assertEquals(0, sb.toCharArray(0, 0).length);
-
- sb.append("junit");
- char[] a = sb.toCharArray(0, 20); // too large test
- assertEquals(5, a.length, "toCharArray(int,int) result incorrect length");
- assertTrue(Arrays.equals("junit".toCharArray(), a), "toCharArray(int,int) result does not match");
-
- a = sb.toCharArray(0, 4);
- assertEquals(4, a.length, "toCharArray(int,int) result incorrect length");
- assertTrue(Arrays.equals("juni".toCharArray(), a), "toCharArray(int,int) result does not match");
-
- a = sb.toCharArray(0, 4);
- assertEquals(4, a.length, "toCharArray(int,int) result incorrect length");
- assertTrue(Arrays.equals("juni".toCharArray(), a), "toCharArray(int,int) result does not match");
-
- a = sb.toCharArray(0, 1);
- assertNotNull(a, "toCharArray(int,int) result is null");
-
- assertThrows(IndexOutOfBoundsException.class, () -> sb.toCharArray(-1, 5));
-
- assertThrows(IndexOutOfBoundsException.class, () -> sb.toCharArray(6, 5));
- }
-
- @Test
- public void testGetChars() {
- final TextStringBuilder sb = new TextStringBuilder();
-
- char[] input = new char[10];
- char[] a = sb.getChars(input);
- assertSame(input, a);
- assertTrue(Arrays.equals(new char[10], a));
-
- 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));
-
- a = sb.getChars(null);
- assertNotSame(input, a);
- assertEquals(5, a.length);
- assertTrue(Arrays.equals("junit".toCharArray(), a));
-
- input = new char[5];
- a = sb.getChars(input);
- assertSame(input, a);
-
- input = new char[4];
- a = sb.getChars(input);
- assertNotSame(input, a);
+ public void testContains_char() {
+ final TextStringBuilder sb = new TextStringBuilder("abcdefghijklmnopqrstuvwxyz");
+ assertTrue(sb.contains('a'));
+ assertTrue(sb.contains('o'));
+ assertTrue(sb.contains('z'));
+ assertFalse(sb.contains('1'));
}
@Test
- public void testGetCharsIntIntCharArrayInt() {
- final TextStringBuilder sb = new TextStringBuilder();
-
- 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));
-
- a = new char[5];
- sb.getChars(0, 2, a, 3);
- assertTrue(Arrays.equals(new char[] {0, 0, 0, 'j', 'u' }, a));
-
- try {
- sb.getChars(-1, 0, a, 0);
- fail("no exception");
- } catch (final IndexOutOfBoundsException e) {
- // expected
- }
-
- try {
- sb.getChars(0, -1, a, 0);
- fail("no exception");
- } catch (final IndexOutOfBoundsException e) {
- // expected
- }
-
- try {
- sb.getChars(0, 20, a, 0);
- fail("no exception");
- } catch (final IndexOutOfBoundsException e) {
- // expected
- }
-
- try {
- sb.getChars(4, 2, a, 0);
- fail("no exception");
- } catch (final IndexOutOfBoundsException e) {
- // expected
- }
+ public void testContains_String() {
+ final TextStringBuilder sb = new TextStringBuilder("abcdefghijklmnopqrstuvwxyz");
+ assertTrue(sb.contains("a"));
+ assertTrue(sb.contains("pq"));
+ assertTrue(sb.contains("z"));
+ assertFalse(sb.contains("zyx"));
+ assertFalse(sb.contains((String) null));
}
- // -----------------------------------------------------------------------
@Test
- public void testDeleteIntInt() {
- final TextStringBuilder sb = new TextStringBuilder("abc");
- sb.delete(0, 1);
- assertEquals("bc", sb.toString());
- sb.delete(1, 2);
- assertEquals("b", sb.toString());
- sb.delete(0, 1);
- assertEquals("", sb.toString());
- sb.delete(0, 1000);
- assertEquals("", sb.toString());
-
- assertThrows(IndexOutOfBoundsException.class, () -> sb.delete(1, 2));
- assertThrows(IndexOutOfBoundsException.class, () -> sb.delete(-1, 1));
+ public void testContains_StringMatcher() {
+ TextStringBuilder sb = new TextStringBuilder("abcdefghijklmnopqrstuvwxyz");
+ assertTrue(sb.contains(StringMatcherFactory.INSTANCE.charMatcher('a')));
+ assertTrue(sb.contains(StringMatcherFactory.INSTANCE.stringMatcher("pq")));
+ assertTrue(sb.contains(StringMatcherFactory.INSTANCE.charMatcher('z')));
+ assertFalse(sb.contains(StringMatcherFactory.INSTANCE.stringMatcher("zy")));
+ assertFalse(sb.contains((StringMatcher) null));
- assertThrows(IndexOutOfBoundsException.class, () -> new TextStringBuilder("anything").delete(2, 1));
+ sb = new TextStringBuilder();
+ assertFalse(sb.contains(A_NUMBER_MATCHER));
+ sb.append("B A1 C");
+ assertTrue(sb.contains(A_NUMBER_MATCHER));
}
// -----------------------------------------------------------------------
@@ -576,23 +630,6 @@ public class TextStringBuilderTest {
assertEquals("", sb.toString());
}
- @Test
- public void testDeleteFirst_char() {
- TextStringBuilder sb = new TextStringBuilder("abcba");
- sb.deleteFirst('X');
- assertEquals("abcba", sb.toString());
- sb.deleteFirst('a');
- assertEquals("bcba", sb.toString());
- sb.deleteFirst('c');
- assertEquals("bba", sb.toString());
- sb.deleteFirst('b');
- assertEquals("ba", sb.toString());
-
- sb = new TextStringBuilder("");
- sb.deleteFirst('b');
- assertEquals("", sb.toString());
- }
-
// -----------------------------------------------------------------------
@Test
public void testDeleteAll_String() {
@@ -620,6 +657,58 @@ public class TextStringBuilderTest {
assertEquals("", sb.toString());
}
+ // -----------------------------------------------------------------------
+ @Test
+ public void testDeleteAll_StringMatcher() {
+ TextStringBuilder sb = new TextStringBuilder("A0xA1A2yA3");
+ sb.deleteAll((StringMatcher) null);
+ assertEquals("A0xA1A2yA3", sb.toString());
+ sb.deleteAll(A_NUMBER_MATCHER);
+ assertEquals("xy", sb.toString());
+
+ sb = new TextStringBuilder("Ax1");
+ sb.deleteAll(A_NUMBER_MATCHER);
+ assertEquals("Ax1", sb.toString());
+
+ sb = new TextStringBuilder("");
+ sb.deleteAll(A_NUMBER_MATCHER);
+ assertEquals("", sb.toString());
+ }
+
+ // -----------------------------------------------------------------------
+ @Test
+ public void testDeleteCharAt() {
+ final TextStringBuilder sb = new TextStringBuilder("abc");
+ sb.deleteCharAt(0);
+ assertEquals("bc", sb.toString());
+
+ assertThrows(IndexOutOfBoundsException.class, () -> sb.deleteCharAt(1000));
+ }
+
+ @Test
+ public void testDeleteCharAtWithNegative() {
+ assertThatExceptionOfType(StringIndexOutOfBoundsException.class).isThrownBy(() -> {
+ new TextStringBuilder().deleteCharAt((-1258));
+ });
+ }
+
+ @Test
+ public void testDeleteFirst_char() {
+ TextStringBuilder sb = new TextStringBuilder("abcba");
+ sb.deleteFirst('X');
+ assertEquals("abcba", sb.toString());
+ sb.deleteFirst('a');
+ assertEquals("bcba", sb.toString());
+ sb.deleteFirst('c');
+ assertEquals("bba", sb.toString());
+ sb.deleteFirst('b');
+ assertEquals("ba", sb.toString());
+
+ sb = new TextStringBuilder("");
+ sb.deleteFirst('b');
+ assertEquals("", sb.toString());
+ }
+
@Test
public void testDeleteFirst_String() {
TextStringBuilder sb = new TextStringBuilder("abcbccba");
@@ -646,24 +735,6 @@ public class TextStringBuilderTest {
assertEquals("", sb.toString());
}
- // -----------------------------------------------------------------------
- @Test
- public void testDeleteAll_StringMatcher() {
- TextStringBuilder sb = new TextStringBuilder("A0xA1A2yA3");
- sb.deleteAll((StringMatcher) null);
- assertEquals("A0xA1A2yA3", sb.toString());
- sb.deleteAll(A_NUMBER_MATCHER);
- assertEquals("xy", sb.toString());
-
- sb = new TextStringBuilder("Ax1");
- sb.deleteAll(A_NUMBER_MATCHER);
- assertEquals("Ax1", sb.toString());
-
- sb = new TextStringBuilder("");
- sb.deleteAll(A_NUMBER_MATCHER);
- assertEquals("", sb.toString());
- }
-
@Test
public void testDeleteFirst_StringMatcher() {
TextStringBuilder sb = new TextStringBuilder("A0xA1A2yA3");
@@ -683,625 +754,431 @@ public class TextStringBuilderTest {
// -----------------------------------------------------------------------
@Test
- public void testReplace_int_int_String() {
- TextStringBuilder sb = new TextStringBuilder("abc");
- sb.replace(0, 1, "d");
- assertEquals("dbc", sb.toString());
- sb.replace(0, 1, "aaa");
- assertEquals("aaabc", sb.toString());
- sb.replace(0, 3, "");
+ public void testDeleteIntInt() {
+ final TextStringBuilder sb = new TextStringBuilder("abc");
+ sb.delete(0, 1);
assertEquals("bc", sb.toString());
- sb.replace(1, 2, (String) null);
+ sb.delete(1, 2);
assertEquals("b", sb.toString());
- sb.replace(1, 1000, "text");
- assertEquals("btext", sb.toString());
- sb.replace(0, 1000, "text");
- assertEquals("text", sb.toString());
+ sb.delete(0, 1);
+ assertEquals("", sb.toString());
+ sb.delete(0, 1000);
+ assertEquals("", sb.toString());
- sb = new TextStringBuilder("atext");
- sb.replace(1, 1, "ny");
- assertEquals("anytext", sb.toString());
- try {
- sb.replace(2, 1, "anything");
- fail("Expected IndexOutOfBoundsException");
- } catch (final IndexOutOfBoundsException e) {
- // expected
- }
+ assertThrows(IndexOutOfBoundsException.class, () -> sb.delete(1, 2));
+ assertThrows(IndexOutOfBoundsException.class, () -> sb.delete(-1, 1));
- sb = new TextStringBuilder();
- try {
- sb.replace(1, 2, "anything");
- fail("Expected IndexOutOfBoundsException");
- } catch (final IndexOutOfBoundsException e) {
- // expected
- }
- try {
- sb.replace(-1, 1, "anything");
- fail("Expected IndexOutOfBoundsException");
- } catch (final IndexOutOfBoundsException e) {
- // expected
- }
+ assertThrows(IndexOutOfBoundsException.class, () -> new TextStringBuilder("anything").delete(2, 1));
}
- // -----------------------------------------------------------------------
@Test
- public void testReplaceAll_char_char() {
- final TextStringBuilder sb = new TextStringBuilder("abcbccba");
- sb.replaceAll('x', 'y');
- assertEquals("abcbccba", sb.toString());
- sb.replaceAll('a', 'd');
- assertEquals("dbcbccbd", sb.toString());
- sb.replaceAll('b', 'e');
- assertEquals("dececced", sb.toString());
- sb.replaceAll('c', 'f');
- assertEquals("defeffed", sb.toString());
- sb.replaceAll('d', 'd');
- assertEquals("defeffed", sb.toString());
+ public void testEndsWith() {
+ final TextStringBuilder sb = new TextStringBuilder();
+ assertFalse(sb.endsWith("a"));
+ assertFalse(sb.endsWith("c"));
+ assertTrue(sb.endsWith(""));
+ assertFalse(sb.endsWith(null));
+ sb.append("abc");
+ assertTrue(sb.endsWith("c"));
+ assertTrue(sb.endsWith("bc"));
+ assertTrue(sb.endsWith("abc"));
+ assertFalse(sb.endsWith("cba"));
+ assertFalse(sb.endsWith("abcd"));
+ assertFalse(sb.endsWith(" abc"));
+ assertFalse(sb.endsWith("abc "));
}
- // -----------------------------------------------------------------------
@Test
- public void testReplaceFirst_char_char() {
- final TextStringBuilder sb = new TextStringBuilder("abcbccba");
- sb.replaceFirst('x', 'y');
- assertEquals("abcbccba", sb.toString());
- sb.replaceFirst('a', 'd');
- assertEquals("dbcbccba", sb.toString());
- sb.replaceFirst('b', 'e');
- assertEquals("decbccba", sb.toString());
- sb.replaceFirst('c', 'f');
- assertEquals("defbccba", sb.toString());
- sb.replaceFirst('d', 'd');
- assertEquals("defbccba", sb.toString());
+ public void testEnsureCapacity() {
+ final TextStringBuilder sb = new TextStringBuilder();
+ sb.ensureCapacity(2);
+ assertTrue(sb.capacity() >= 2);
+
+ sb.ensureCapacity(-1);
+ assertTrue(sb.capacity() >= 0);
+
+ sb.append("HelloWorld");
+ sb.ensureCapacity(40);
+ assertTrue(sb.capacity() >= 40);
}
// -----------------------------------------------------------------------
@Test
- public void testReplaceAll_String_String() {
- TextStringBuilder sb = new TextStringBuilder("abcbccba");
- sb.replaceAll((String) null, null);
- assertEquals("abcbccba", sb.toString());
- sb.replaceAll((String) null, "anything");
- assertEquals("abcbccba", sb.toString());
- sb.replaceAll("", null);
- assertEquals("abcbccba", sb.toString());
- sb.replaceAll("", "anything");
- assertEquals("abcbccba", sb.toString());
+ public void testEquals() {
+ final TextStringBuilder sb1 = new TextStringBuilder();
+ final TextStringBuilder sb2 = new TextStringBuilder();
+ assertTrue(sb1.equals(sb2));
+ assertTrue(sb1.equals(sb1));
+ assertTrue(sb2.equals(sb2));
+ assertTrue(sb1.equals((Object) sb2));
- sb.replaceAll("x", "y");
- assertEquals("abcbccba", sb.toString());
- sb.replaceAll("a", "d");
- assertEquals("dbcbccbd", sb.toString());
- sb.replaceAll("d", null);
- assertEquals("bcbccb", sb.toString());
- sb.replaceAll("cb", "-");
- assertEquals("b-c-", sb.toString());
+ sb1.append("abc");
+ assertFalse(sb1.equals(sb2));
+ assertFalse(sb1.equals((Object) sb2));
- sb = new TextStringBuilder("abcba");
- sb.replaceAll("b", "xbx");
- assertEquals("axbxcxbxa", sb.toString());
+ sb2.append("ABC");
+ assertFalse(sb1.equals(sb2));
+ assertFalse(sb1.equals((Object) sb2));
- sb = new TextStringBuilder("bb");
- sb.replaceAll("b", "xbx");
- assertEquals("xbxxbx", sb.toString());
+ sb2.clear().append("abc");
+ assertTrue(sb1.equals(sb2));
+ assertTrue(sb1.equals((Object) sb2));
+
+ assertFalse(sb1.equals(Integer.valueOf(1)));
+ assertFalse(sb1.equals("abc"));
}
+ // -----------------------------------------------------------------------
@Test
- public void testReplaceFirst_String_String() {
- TextStringBuilder sb = new TextStringBuilder("abcbccba");
- sb.replaceFirst((String) null, null);
- assertEquals("abcbccba", sb.toString());
- sb.replaceFirst((String) null, "anything");
- assertEquals("abcbccba", sb.toString());
- sb.replaceFirst("", null);
- assertEquals("abcbccba", sb.toString());
- sb.replaceFirst("", "anything");
- assertEquals("abcbccba", sb.toString());
+ public void testEqualsIgnoreCase() {
+ final TextStringBuilder sb1 = new TextStringBuilder();
+ final TextStringBuilder sb2 = new TextStringBuilder();
+ assertTrue(sb1.equalsIgnoreCase(sb1));
+ assertTrue(sb1.equalsIgnoreCase(sb2));
+ assertTrue(sb2.equalsIgnoreCase(sb2));
- sb.replaceFirst("x", "y");
- assertEquals("abcbccba", sb.toString());
- sb.replaceFirst("a", "d");
- assertEquals("dbcbccba", sb.toString());
- sb.replaceFirst("d", null);
- assertEquals("bcbccba", sb.toString());
- sb.replaceFirst("cb", "-");
- assertEquals("b-ccba", sb.toString());
+ sb1.append("abc");
+ assertFalse(sb1.equalsIgnoreCase(sb2));
- sb = new TextStringBuilder("abcba");
- sb.replaceFirst("b", "xbx");
- assertEquals("axbxcba", sb.toString());
+ sb2.append("ABC");
+ assertTrue(sb1.equalsIgnoreCase(sb2));
- sb = new TextStringBuilder("bb");
- sb.replaceFirst("b", "xbx");
- assertEquals("xbxb", sb.toString());
+ sb2.clear().append("abc");
+ assertTrue(sb1.equalsIgnoreCase(sb2));
+ assertTrue(sb1.equalsIgnoreCase(sb1));
+ assertTrue(sb2.equalsIgnoreCase(sb2));
+
+ sb2.clear().append("aBc");
+ assertTrue(sb1.equalsIgnoreCase(sb2));
}
- // -----------------------------------------------------------------------
@Test
- public void testReplaceAll_StringMatcher_String() {
- TextStringBuilder sb = new TextStringBuilder("abcbccba");
- sb.replaceAll((StringMatcher) null, null);
- assertEquals("abcbccba", sb.toString());
- sb.replaceAll((StringMatcher) null, "anything");
- assertEquals("abcbccba", sb.toString());
- sb.replaceAll(StringMatcherFactory.INSTANCE.noneMatcher(), null);
- assertEquals("abcbccba", sb.toString());
- sb.replaceAll(StringMatcherFactory.INSTANCE.noneMatcher(), "anything");
- assertEquals("abcbccba", sb.toString());
+ public void testGetChars() {
+ final TextStringBuilder sb = new TextStringBuilder();
- sb.replaceAll(StringMatcherFactory.INSTANCE.charMatcher('x'), "y");
- assertEquals("abcbccba", sb.toString());
- sb.replaceAll(StringMatcherFactory.INSTANCE.charMatcher('a'), "d");
- assertEquals("dbcbccbd", sb.toString());
- sb.replaceAll(StringMatcherFactory.INSTANCE.charMatcher('d'), null);
- assertEquals("bcbccb", sb.toString());
- sb.replaceAll(StringMatcherFactory.INSTANCE.stringMatcher("cb"), "-");
- assertEquals("b-c-", sb.toString());
+ char[] input = new char[10];
+ char[] a = sb.getChars(input);
+ assertSame(input, a);
+ assertTrue(Arrays.equals(new char[10], a));
- sb = new TextStringBuilder("abcba");
- sb.replaceAll(StringMatcherFactory.INSTANCE.charMatcher('b'), "xbx");
- assertEquals("axbxcxbxa", sb.toString());
+ 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));
- sb = new TextStringBuilder("bb");
- sb.replaceAll(StringMatcherFactory.INSTANCE.charMatcher('b'), "xbx");
- assertEquals("xbxxbx", sb.toString());
+ a = sb.getChars(null);
+ assertNotSame(input, a);
+ assertEquals(5, a.length);
+ assertTrue(Arrays.equals("junit".toCharArray(), a));
- sb = new TextStringBuilder("A1-A2A3-A4");
- sb.replaceAll(A_NUMBER_MATCHER, "***");
- assertEquals("***-******-***", sb.toString());
+ input = new char[5];
+ a = sb.getChars(input);
+ assertSame(input, a);
- sb = new TextStringBuilder("Dear X, hello X.");
- sb.replaceAll(StringMatcherFactory.INSTANCE.stringMatcher("X"), "012345678901234567");
- assertEquals("Dear 012345678901234567, hello 012345678901234567.", sb.toString());
+ input = new char[4];
+ a = sb.getChars(input);
+ assertNotSame(input, a);
}
@Test
- public void testReplaceFirst_StringMatcher_String() {
- TextStringBuilder sb = new TextStringBuilder("abcbccba");
- sb.replaceFirst((StringMatcher) null, null);
- assertEquals("abcbccba", sb.toString());
- sb.replaceFirst((StringMatcher) null, "anything");
- assertEquals("abcbccba", sb.toString());
- sb.replaceFirst(StringMatcherFactory.INSTANCE.noneMatcher(), null);
- assertEquals("abcbccba", sb.toString());
- sb.replaceFirst(StringMatcherFactory.INSTANCE.noneMatcher(), "anything");
- assertEquals("abcbccba", sb.toString());
+ public void testGetCharsIntIntCharArrayInt() {
+ final TextStringBuilder sb = new TextStringBuilder();
- sb.replaceFirst(StringMatcherFactory.INSTANCE.charMatcher('x'), "y");
- assertEquals("abcbccba", sb.toString());
- sb.replaceFirst(StringMatcherFactory.INSTANCE.charMatcher('a'), "d");
- assertEquals("dbcbccba", sb.toString());
- sb.replaceFirst(StringMatcherFactory.INSTANCE.charMatcher('d'), null);
- assertEquals("bcbccba", sb.toString());
- sb.replaceFirst(StringMatcherFactory.INSTANCE.stringMatcher("cb"), "-");
- assertEquals("b-ccba", sb.toString());
+ 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));
- sb = new TextStringBuilder("abcba");
- sb.replaceFirst(StringMatcherFactory.INSTANCE.charMatcher('b'), "xbx");
- assertEquals("axbxcba", sb.toString());
+ a = new char[5];
+ sb.getChars(0, 2, a, 3);
+ assertTrue(Arrays.equals(new char[] {0, 0, 0, 'j', 'u' }, a));
- sb = new TextStringBuilder("bb");
- sb.replaceFirst(StringMatcherFactory.INSTANCE.charMatcher('b'), "xbx");
- assertEquals("xbxb", sb.toString());
+ try {
+ sb.getChars(-1, 0, a, 0);
+ fail("no exception");
+ } catch (final IndexOutOfBoundsException e) {
+ // expected
+ }
- sb = new TextStringBuilder("A1-A2A3-A4");
- sb.replaceFirst(A_NUMBER_MATCHER, "***");
- assertEquals("***-A2A3-A4", sb.toString());
+ try {
+ sb.getChars(0, -1, a, 0);
+ fail("no exception");
+ } catch (final IndexOutOfBoundsException e) {
+ // expected
+ }
+
+ try {
+ sb.getChars(0, 20, a, 0);
+ fail("no exception");
+ } catch (final IndexOutOfBoundsException e) {
+ // expected
+ }
+
+ try {
+ sb.getChars(4, 2, a, 0);
+ fail("no exception");
+ } catch (final IndexOutOfBoundsException e) {
+ // expected
+ }
}
// -----------------------------------------------------------------------
@Test
- public void testReplace_StringMatcher_String_int_int_int_VaryMatcher() {
- TextStringBuilder sb = new TextStringBuilder("abcbccba");
- sb.replace((StringMatcher) null, "x", 0, sb.length(), -1);
- assertEquals("abcbccba", sb.toString());
-
- sb.replace(StringMatcherFactory.INSTANCE.charMatcher('a'), "x", 0, sb.length(), -1);
- assertEquals("xbcbccbx", sb.toString());
+ public void testGetSetNewLineText() {
+ final TextStringBuilder sb = new TextStringBuilder();
+ assertNull(sb.getNewLineText());
- sb.replace(StringMatcherFactory.INSTANCE.stringMatcher("cb"), "x", 0, sb.length(), -1);
- assertEquals("xbxcxx", sb.toString());
+ sb.setNewLineText("#");
+ assertEquals("#", sb.getNewLineText());
- sb = new TextStringBuilder("A1-A2A3-A4");
- sb.replace(A_NUMBER_MATCHER, "***", 0, sb.length(), -1);
- assertEquals("***-******-***", sb.toString());
+ sb.setNewLineText("");
+ assertEquals("", sb.getNewLineText());
- sb = new TextStringBuilder();
- sb.replace(A_NUMBER_MATCHER, "***", 0, sb.length(), -1);
- assertEquals("", sb.toString());
+ sb.setNewLineText((String) null);
+ assertNull(sb.getNewLineText());
}
+ // -----------------------------------------------------------------------
@Test
- public void testReplace_StringMatcher_String_int_int_int_VaryReplace() {
- TextStringBuilder sb = new TextStringBuilder("abcbccba");
- sb.replace(StringMatcherFactory.INSTANCE.stringMatcher("cb"), "cb", 0, sb.length(), -1);
- assertEquals("abcbccba", sb.toString());
+ public void testGetSetNullText() {
+ final TextStringBuilder sb = new TextStringBuilder();
+ assertNull(sb.getNullText());
- sb = new TextStringBuilder("abcbccba");
- sb.replace(StringMatcherFactory.INSTANCE.stringMatcher("cb"), "-", 0, sb.length(), -1);
- assertEquals("ab-c-a", sb.toString());
+ sb.setNullText("null");
+ assertEquals("null", sb.getNullText());
- sb = new TextStringBuilder("abcbccba");
- sb.replace(StringMatcherFactory.INSTANCE.stringMatcher("cb"), "+++", 0, sb.length(), -1);
- assertEquals("ab+++c+++a", sb.toString());
+ sb.setNullText("");
+ assertNull(sb.getNullText());
- sb = new TextStringBuilder("abcbccba");
- sb.replace(StringMatcherFactory.INSTANCE.stringMatcher("cb"), "", 0, sb.length(), -1);
- assertEquals("abca", sb.toString());
+ sb.setNullText("NULL");
+ assertEquals("NULL", sb.getNullText());
- sb = new TextStringBuilder("abcbccba");
- sb.replace(StringMatcherFactory.INSTANCE.stringMatcher("cb"), null, 0, sb.length(), -1);
- assertEquals("abca", sb.toString());
+ sb.setNullText((String) null);
+ assertNull(sb.getNullText());
}
+ // -----------------------------------------------------------------------
@Test
- public void testReplace_StringMatcher_String_int_int_int_VaryStartIndex() {
- TextStringBuilder sb = new TextStringBuilder("aaxaaaayaa");
- sb.replace(StringMatcherFactory.INSTANCE.stringMatcher("aa"), "-", 0, sb.length(), -1);
- assertEquals("-x--y-", sb.toString());
-
- sb = new TextStringBuilder("aaxaaaayaa");
- sb.replace(StringMatcherFactory.INSTANCE.stringMatcher("aa"), "-", 1, sb.length(), -1);
- assertEquals("aax--y-", sb.toString());
-
- sb = new TextStringBuilder("aaxaaaayaa");
- sb.replace(StringMatcherFactory.INSTANCE.stringMatcher("aa"), "-", 2, sb.length(), -1);
- assertEquals("aax--y-", sb.toString());
+ public void testHashCode() {
+ final TextStringBuilder sb = new TextStringBuilder();
+ final int hc1a = sb.hashCode();
+ final int hc1b = sb.hashCode();
+ assertEquals(0, hc1a);
+ assertEquals(hc1a, hc1b);
- sb = new TextStringBuilder("aaxaaaayaa");
- sb.replace(StringMatcherFactory.INSTANCE.stringMatcher("aa"), "-", 3, sb.length(), -1);
- assertEquals("aax--y-", sb.toString());
+ sb.append("abc");
+ final int hc2a = sb.hashCode();
+ final int hc2b = sb.hashCode();
+ assertTrue(hc2a != 0);
+ assertEquals(hc2a, hc2b);
+ }
- sb = new TextStringBuilder("aaxaaaayaa");
- sb.replace(StringMatcherFactory.INSTANCE.stringMatcher("aa"), "-", 4, sb.length(), -1);
- assertEquals("aaxa-ay-", sb.toString());
+ // -----------------------------------------------------------------------
+ @Test
+ public void testIndexOf_char() {
+ final TextStringBuilder sb = new TextStringBuilder("abab");
+ assertEquals(0, sb.indexOf('a'));
- sb = new TextStringBuilder("aaxaaaayaa");
- sb.replace(StringMatcherFactory.INSTANCE.stringMatcher("aa"), "-", 5, sb.length(), -1);
- assertEquals("aaxaa-y-", sb.toString());
+ // should work like String#indexOf
+ assertEquals("abab".indexOf('a'), sb.indexOf('a'));
- sb = new TextStringBuilder("aaxaaaayaa");
- sb.replace(StringMatcherFactory.INSTANCE.stringMatcher("aa"), "-", 6, sb.length(), -1);
- assertEquals("aaxaaaay-", sb.toString());
+ assertEquals(1, sb.indexOf('b'));
+ assertEquals("abab".indexOf('b'), sb.indexOf('b'));
- sb = new TextStringBuilder("aaxaaaayaa");
- sb.replace(StringMatcherFactory.INSTANCE.stringMatcher("aa"), "-", 7, sb.length(), -1);
- assertEquals("aaxaaaay-", sb.toString());
+ assertEquals(-1, sb.indexOf('z'));
+ }
- sb = new TextStringBuilder("aaxaaaayaa");
- sb.replace(StringMatcherFactory.INSTANCE.stringMatcher("aa"), "-", 8, sb.length(), -1);
- assertEquals("aaxaaaay-", sb.toString());
+ @Test
+ public void testIndexOf_char_int() {
+ TextStringBuilder sb = new TextStringBuilder("abab");
+ assertEquals(0, sb.indexOf('a', -1));
+ assertEquals(0, sb.indexOf('a', 0));
+ assertEquals(2, sb.indexOf('a', 1));
+ assertEquals(-1, sb.indexOf('a', 4));
+ assertEquals(-1, sb.indexOf('a', 5));
- sb = new TextStringBuilder("aaxaaaayaa");
- sb.replace(StringMatcherFactory.INSTANCE.stringMatcher("aa"), "-", 9, sb.length(), -1);
- assertEquals("aaxaaaayaa", sb.toString());
+ // should work like String#indexOf
+ assertEquals("abab".indexOf('a', 1), sb.indexOf('a', 1));
- sb = new TextStringBuilder("aaxaaaayaa");
- sb.replace(StringMatcherFactory.INSTANCE.stringMatcher("aa"), "-", 10, sb.length(), -1);
- assertEquals("aaxaaaayaa", sb.toString());
+ assertEquals(3, sb.indexOf('b', 2));
+ assertEquals("abab".indexOf('b', 2), sb.indexOf('b', 2));
- sb = new TextStringBuilder("aaxaaaayaa");
- try {
- sb.replace(StringMatcherFactory.INSTANCE.stringMatcher("aa"), "-", 11, sb.length(), -1);
- fail("Exception expected!");
- } catch (final IndexOutOfBoundsException ex) {
- // expected
- }
- assertEquals("aaxaaaayaa", sb.toString());
+ assertEquals(-1, sb.indexOf('z', 2));
- sb = new TextStringBuilder("aaxaaaayaa");
- try {
- sb.replace(StringMatcherFactory.INSTANCE.stringMatcher("aa"), "-", -1, sb.length(), -1);
- fail("Exception expected!");
- } catch (final IndexOutOfBoundsException ex) {
- // expected
- }
- assertEquals("aaxaaaayaa", sb.toString());
+ sb = new TextStringBuilder("xyzabc");
+ assertEquals(2, sb.indexOf('z', 0));
+ assertEquals(-1, sb.indexOf('z', 3));
}
+ // -----------------------------------------------------------------------
@Test
- public void testReplace_StringMatcher_String_int_int_int_VaryEndIndex() {
- TextStringBuilder sb = new TextStringBuilder("aaxaaaayaa");
- sb.replace(StringMatcherFactory.INSTANCE.stringMatcher("aa"), "-", 0, 0, -1);
- assertEquals("aaxaaaayaa", sb.toString());
-
- sb = new TextStringBuilder("aaxaaaayaa");
- sb.replace(StringMatcherFactory.INSTANCE.stringMatcher("aa"), "-", 0, 2, -1);
- assertEquals("-xaaaayaa", sb.toString());
-
- sb = new TextStringBuilder("aaxaaaayaa");
- sb.replace(StringMatcherFactory.INSTANCE.stringMatcher("aa"), "-", 0, 3, -1);
- assertEquals("-xaaaayaa", sb.toString());
-
- sb = new TextStringBuilder("aaxaaaayaa");
- sb.replace(StringMatcherFactory.INSTANCE.stringMatcher("aa"), "-", 0, 4, -1);
- assertEquals("-xaaaayaa", sb.toString());
-
- sb = new TextStringBuilder("aaxaaaayaa");
- sb.replace(StringMatcherFactory.INSTANCE.stringMatcher("aa"), "-", 0, 5, -1);
- assertEquals("-x-aayaa", sb.toString());
-
- sb = new TextStringBuilder("aaxaaaayaa");
- sb.replace(StringMatcherFactory.INSTANCE.stringMatcher("aa"), "-", 0, 6, -1);
- assertEquals("-x-aayaa", sb.toString());
+ public void testIndexOf_String() {
+ final TextStringBuilder sb = new TextStringBuilder("abab");
- sb = new TextStringBuilder("aaxaaaayaa");
- sb.replace(StringMatcherFactory.INSTANCE.stringMatcher("aa"), "-", 0, 7, -1);
- assertEquals("-x--yaa", sb.toString());
+ assertEquals(0, sb.indexOf("a"));
+ // should work like String#indexOf
+ assertEquals("abab".indexOf("a"), sb.indexOf("a"));
- sb = new TextStringBuilder("aaxaaaayaa");
- sb.replace(StringMatcherFactory.INSTANCE.stringMatcher("aa"), "-", 0, 8, -1);
- assertEquals("-x--yaa", sb.toString());
+ assertEquals(0, sb.indexOf("ab"));
+ // should work like String#indexOf
+ assertEquals("abab".indexOf("ab"), sb.indexOf("ab"));
- sb = new TextStringBuilder("aaxaaaayaa");
- sb.replace(StringMatcherFactory.INSTANCE.stringMatcher("aa"), "-", 0, 9, -1);
- assertEquals("-x--yaa", sb.toString());
+ assertEquals(1, sb.indexOf("b"));
+ assertEquals("abab".indexOf("b"), sb.indexOf("b"));
- sb = new TextStringBuilder("aaxaaaayaa");
- sb.replace(StringMatcherFactory.INSTANCE.stringMatcher("aa"), "-", 0, 10, -1);
- assertEquals("-x--y-", sb.toString());
+ assertEquals(1, sb.indexOf("ba"));
+ assertEquals("abab".indexOf("ba"), sb.indexOf("ba"));
- sb = new TextStringBuilder("aaxaaaayaa");
- sb.replace(StringMatcherFactory.INSTANCE.stringMatcher("aa"), "-", 0, 1000, -1);
- assertEquals("-x--y-", sb.toString());
+ assertEquals(-1, sb.indexOf("z"));
- sb = new TextStringBuilder("aaxaaaayaa");
- try {
- sb.replace(StringMatcherFactory.INSTANCE.stringMatcher("aa"), "-", 2, 1, -1);
- fail("Exception expected!");
- } catch (final IndexOutOfBoundsException ex) {
- // expected
- }
- assertEquals("aaxaaaayaa", sb.toString());
+ assertEquals(-1, sb.indexOf((String) null));
}
@Test
- public void testReplace_StringMatcher_String_int_int_int_VaryCount() {
- TextStringBuilder sb = new TextStringBuilder("aaxaaaayaa");
- sb.replace(StringMatcherFactory.INSTANCE.stringMatcher("aa"), "-", 0, 10, -1);
- assertEquals("-x--y-", sb.toString());
+ public void testIndexOf_String_int() {
+ TextStringBuilder sb = new TextStringBuilder("abab");
+ assertEquals(0, sb.indexOf("a", -1));
+ assertEquals(0, sb.indexOf("a", 0));
+ assertEquals(2, sb.indexOf("a", 1));
+ assertEquals(2, sb.indexOf("a", 2));
+ assertEquals(-1, sb.indexOf("a", 3));
+ assertEquals(-1, sb.indexOf("a", 4));
+ assertEquals(-1, sb.indexOf("a", 5));
- sb = new TextStringBuilder("aaxaaaayaa");
- sb.replace(StringMatcherFactory.INSTANCE.stringMatcher("aa"), "-", 0, 10, 0);
- assertEquals("aaxaaaayaa", sb.toString());
+ assertEquals(-1, sb.indexOf("abcdef", 0));
+ assertEquals(0, sb.indexOf("", 0));
+ assertEquals(1, sb.indexOf("", 1));
- sb = new TextStringBuilder("aaxaaaayaa");
- sb.replace(StringMatcherFactory.INSTANCE.stringMatcher("aa"), "-", 0, 10, 1);
- assertEquals("-xaaaayaa", sb.toString());
+ // should work like String#indexOf
+ assertEquals("abab".indexOf("a", 1), sb.indexOf("a", 1));
- sb = new TextStringBuilder("aaxaaaayaa");
- sb.replace(StringMatcherFactory.INSTANCE.stringMatcher("aa"), "-", 0, 10, 2);
- assertEquals("-x-aayaa", sb.toString());
+ assertEquals(2, sb.indexOf("ab", 1));
+ // should work like String#indexOf
+ assertEquals("abab".indexOf("ab", 1), sb.indexOf("ab", 1));
- sb = new TextStringBuilder("aaxaaaayaa");
- sb.replace(StringMatcherFactory.INSTANCE.stringMatcher("aa"), "-", 0, 10, 3);
- assertEquals("-x--yaa", sb.toString());
+ assertEquals(3, sb.indexOf("b", 2));
+ assertEquals("abab".indexOf("b", 2), sb.indexOf("b", 2));
- sb = new TextStringBuilder("aaxaaaayaa");
- sb.replace(StringMatcherFactory.INSTANCE.stringMatcher("aa"), "-", 0, 10, 4);
- assertEquals("-x--y-", sb.toString());
+ assertEquals(1, sb.indexOf("ba", 1));
+ assertEquals("abab".indexOf("ba", 2), sb.indexOf("ba", 2));
- sb = new TextStringBuilder("aaxaaaayaa");
- sb.replace(StringMatcherFactory.INSTANCE.stringMatcher("aa"), "-", 0, 10, 5);
- assertEquals("-x--y-", sb.toString());
+ assertEquals(-1, sb.indexOf("z", 2));
+
+ sb = new TextStringBuilder("xyzabc");
+ assertEquals(2, sb.indexOf("za", 0));
+ assertEquals(-1, sb.indexOf("za", 3));
+
+ assertEquals(-1, sb.indexOf((String) null, 2));
}
// -----------------------------------------------------------------------
@Test
- public void testReverse() {
+ public void testIndexOf_StringMatcher() {
final TextStringBuilder sb = new TextStringBuilder();
- assertEquals("", sb.reverse().toString());
+ assertEquals(-1, sb.indexOf((StringMatcher) null));
+ assertEquals(-1, sb.indexOf(StringMatcherFactory.INSTANCE.charMatcher('a')));
- sb.clear().append(true);
- assertEquals("eurt", sb.reverse().toString());
- assertEquals("true", sb.reverse().toString());
+ sb.append("ab bd");
+ assertEquals(0, sb.indexOf(StringMatcherFactory.INSTANCE.charMatcher('a')));
+ assertEquals(1, sb.indexOf(StringMatcherFactory.INSTANCE.charMatcher('b')));
+ assertEquals(2, sb.indexOf(StringMatcherFactory.INSTANCE.spaceMatcher()));
+ assertEquals(4, sb.indexOf(StringMatcherFactory.INSTANCE.charMatcher('d')));
+ assertEquals(-1, sb.indexOf(StringMatcherFactory.INSTANCE.noneMatcher()));
+ assertEquals(-1, sb.indexOf((StringMatcher) null));
+
+ sb.append(" A1 junction");
+ assertEquals(6, sb.indexOf(A_NUMBER_MATCHER));
}
- // -----------------------------------------------------------------------
@Test
- public void testTrim() {
+ public void testIndexOf_StringMatcher_int() {
final TextStringBuilder sb = new TextStringBuilder();
- assertEquals("", sb.reverse().toString());
+ assertEquals(-1, sb.indexOf((StringMatcher) null, 2));
+ assertEquals(-1, sb.indexOf(StringMatcherFactory.INSTANCE.charMatcher('a'), 2));
+ assertEquals(-1, sb.indexOf(StringMatcherFactory.INSTANCE.charMatcher('a'), 0));
- sb.clear().append(" \u0000 ");
- assertEquals("", sb.trim().toString());
+ sb.append("ab bd");
+ assertEquals(0, sb.indexOf(StringMatcherFactory.INSTANCE.charMatcher('a'), -2));
+ assertEquals(0, sb.indexOf(StringMatcherFactory.INSTANCE.charMatcher('a'), 0));
+ assertEquals(-1, sb.indexOf(StringMatcherFactory.INSTANCE.charMatcher('a'), 2));
+ assertEquals(-1, sb.indexOf(StringMatcherFactory.INSTANCE.charMatcher('a'), 20));
- sb.clear().append(" \u0000 a b c");
- assertEquals("a b c", sb.trim().toString());
+ assertEquals(1, sb.indexOf(StringMatcherFactory.INSTANCE.charMatcher('b'), -1));
+ assertEquals(1, sb.indexOf(StringMatcherFactory.INSTANCE.charMatcher('b'), 0));
+ assertEquals(1, sb.indexOf(StringMatcherFactory.INSTANCE.charMatcher('b'), 1));
+ assertEquals(3, sb.indexOf(StringMatcherFactory.INSTANCE.charMatcher('b'), 2));
+ assertEquals(3, sb.indexOf(StringMatcherFactory.INSTANCE.charMatcher('b'), 3));
+ assertEquals(-1, sb.indexOf(StringMatcherFactory.INSTANCE.charMatcher('b'), 4));
+ assertEquals(-1, sb.indexOf(StringMatcherFactory.INSTANCE.charMatcher('b'), 5));
+ assertEquals(-1, sb.indexOf(StringMatcherFactory.INSTANCE.charMatcher('b'), 6));
- sb.clear().append("a b c \u0000 ");
- assertEquals("a b c", sb.trim().toString());
+ assertEquals(2, sb.indexOf(StringMatcherFactory.INSTANCE.spaceMatcher(), -2));
+ assertEquals(2, sb.indexOf(StringMatcherFactory.INSTANCE.spaceMatcher(), 0));
+ assertEquals(2, sb.indexOf(StringMatcherFactory.INSTANCE.spaceMatcher(), 2));
+ assertEquals(-1, sb.indexOf(StringMatcherFactory.INSTANCE.spaceMatcher(), 4));
+ assertEquals(-1, sb.indexOf(StringMatcherFactory.INSTANCE.spaceMatcher(), 20));
- sb.clear().append(" \u0000 a b c \u0000 ");
- assertEquals("a b c", sb.trim().toString());
+ assertEquals(-1, sb.indexOf(StringMatcherFactory.INSTANCE.noneMatcher(), 0));
+ assertEquals(-1, sb.indexOf((StringMatcher) null, 0));
- sb.clear().append("a b c");
- assertEquals("a b c", sb.trim().toString());
+ sb.append(" A1 junction with A2");
+ assertEquals(6, sb.indexOf(A_NUMBER_MATCHER, 5));
+ assertEquals(6, sb.indexOf(A_NUMBER_MATCHER, 6));
+ assertEquals(23, sb.indexOf(A_NUMBER_MATCHER, 7));
+ assertEquals(23, sb.indexOf(A_NUMBER_MATCHER, 22));
+ assertEquals(23, sb.indexOf(A_NUMBER_MATCHER, 23));
+ assertEquals(-1, sb.indexOf(A_NUMBER_MATCHER, 24));
}
- // -----------------------------------------------------------------------
@Test
- public void testStartsWith() {
- final TextStringBuilder sb = new TextStringBuilder();
- assertFalse(sb.startsWith("a"));
- assertFalse(sb.startsWith(null));
- assertTrue(sb.startsWith(""));
- sb.append("abc");
- assertTrue(sb.startsWith("a"));
- assertTrue(sb.startsWith("ab"));
- assertTrue(sb.startsWith("abc"));
- assertFalse(sb.startsWith("cba"));
+ public void testIndexOfLang294() {
+ final TextStringBuilder sb = new TextStringBuilder("onetwothree");
+ sb.deleteFirst("three");
+ assertEquals(-1, sb.indexOf("three"));
}
@Test
- public void testEndsWith() {
+ public void testIsEmpty() {
final TextStringBuilder sb = new TextStringBuilder();
- assertFalse(sb.endsWith("a"));
- assertFalse(sb.endsWith("c"));
- assertTrue(sb.endsWith(""));
- assertFalse(sb.endsWith(null));
- sb.append("abc");
- assertTrue(sb.endsWith("c"));
- assertTrue(sb.endsWith("bc"));
- assertTrue(sb.endsWith("abc"));
- assertFalse(sb.endsWith("cba"));
- assertFalse(sb.endsWith("abcd"));
- assertFalse(sb.endsWith(" abc"));
- assertFalse(sb.endsWith("abc "));
+ assertTrue(sb.isEmpty());
+
+ sb.append("Hello");
+ assertFalse(sb.isEmpty());
+
+ sb.clear();
+ assertTrue(sb.isEmpty());
}
// -----------------------------------------------------------------------
@Test
- public void testSubSequenceIntInt() {
- final TextStringBuilder sb = new TextStringBuilder("hello goodbye");
- // Start index is negative
- assertThrows(IndexOutOfBoundsException.class, () -> sb.subSequence(-1, 5));
-
- // End index is negative
- assertThrows(IndexOutOfBoundsException.class, () -> sb.subSequence(2, -1));
-
- // End index greater than length()
- assertThrows(IndexOutOfBoundsException.class, () -> sb.subSequence(2, sb.length() + 1));
-
- // Start index greater then end index
- assertThrows(IndexOutOfBoundsException.class, () -> sb.subSequence(3, 2));
-
- // Normal cases
- assertEquals("hello", sb.subSequence(0, 5));
- assertEquals("hello goodbye".subSequence(0, 6), sb.subSequence(0, 6));
- assertEquals("goodbye", sb.subSequence(6, 13));
- assertEquals("hello goodbye".subSequence(6, 13), sb.subSequence(6, 13));
+ public void testLang294() {
+ final TextStringBuilder sb = new TextStringBuilder("\n%BLAH%\nDo more stuff\neven more stuff\n%BLAH%\n");
+ sb.deleteAll("\n%BLAH%");
+ assertEquals("\nDo more stuff\neven more stuff\n", sb.toString());
}
+ // -----------------------------------------------------------------------
@Test
- public void testSubstringInt() {
- final TextStringBuilder sb = new TextStringBuilder("hello goodbye");
- assertEquals("goodbye", sb.substring(6));
- assertEquals("hello goodbye".substring(6), sb.substring(6));
- assertEquals("hello goodbye", sb.substring(0));
- assertEquals("hello goodbye".substring(0), sb.substring(0));
- assertThrows(IndexOutOfBoundsException.class, () -> sb.substring(-1));
+ public void testLang295() {
+ final TextStringBuilder sb = new TextStringBuilder("onetwothree");
+ sb.deleteFirst("three");
+ assertFalse(sb.contains('h'), "The contains(char) method is looking beyond the end of the string");
+ assertEquals(-1, sb.indexOf('h'), "The indexOf(char) method is looking beyond the end of the string");
+ }
- assertThrows(IndexOutOfBoundsException.class, () -> sb.substring(15));
+ @Test
+ public void testLang412Left() {
+ final TextStringBuilder sb = new TextStringBuilder();
+ sb.appendFixedWidthPadLeft(null, 10, '*');
+ assertEquals("**********", sb.toString(), "Failed to invoke appendFixedWidthPadLeft correctly");
+ }
- }
-
- @Test
- public void testSubstringIntInt() {
- final TextStringBuilder sb = new TextStringBuilder("hello goodbye");
- assertEquals("hello", sb.substring(0, 5));
- assertEquals("hello goodbye".substring(0, 6), sb.substring(0, 6));
-
- assertEquals("goodbye", sb.substring(6, 13));
- assertEquals("hello goodbye".substring(6, 13), sb.substring(6, 13));
-
- assertEquals("goodbye", sb.substring(6, 20));
-
- assertThrows(IndexOutOfBoundsException.class, () -> sb.substring(-1, 5));
-
- assertThrows(IndexOutOfBoundsException.class, () -> sb.substring(15, 20));
- }
-
- // -----------------------------------------------------------------------
- @Test
- public void testMidString() {
- final TextStringBuilder sb = new TextStringBuilder("hello goodbye hello");
- assertEquals("goodbye", sb.midString(6, 7));
- assertEquals("hello", sb.midString(0, 5));
- assertEquals("hello", sb.midString(-5, 5));
- assertEquals("", sb.midString(0, -1));
- assertEquals("", sb.midString(20, 2));
- assertEquals("hello", sb.midString(14, 22));
- }
-
- @Test
- public void testRightString() {
- final TextStringBuilder sb = new TextStringBuilder("left right");
- assertEquals("right", sb.rightString(5));
- assertEquals("", sb.rightString(0));
- assertEquals("", sb.rightString(-5));
- assertEquals("left right", sb.rightString(15));
- }
-
- @Test
- public void testLeftString() {
- final TextStringBuilder sb = new TextStringBuilder("left right");
- assertEquals("left", sb.leftString(4));
- assertEquals("", sb.leftString(0));
- assertEquals("", sb.leftString(-5));
- assertEquals("left right", sb.leftString(15));
- }
-
- // -----------------------------------------------------------------------
- @Test
- public void testContains_char() {
- final TextStringBuilder sb = new TextStringBuilder("abcdefghijklmnopqrstuvwxyz");
- assertTrue(sb.contains('a'));
- assertTrue(sb.contains('o'));
- assertTrue(sb.contains('z'));
- assertFalse(sb.contains('1'));
- }
-
- @Test
- public void testContains_String() {
- final TextStringBuilder sb = new TextStringBuilder("abcdefghijklmnopqrstuvwxyz");
- assertTrue(sb.contains("a"));
- assertTrue(sb.contains("pq"));
- assertTrue(sb.contains("z"));
- assertFalse(sb.contains("zyx"));
- assertFalse(sb.contains((String) null));
- }
-
- @Test
- public void testContains_StringMatcher() {
- TextStringBuilder sb = new TextStringBuilder("abcdefghijklmnopqrstuvwxyz");
- assertTrue(sb.contains(StringMatcherFactory.INSTANCE.charMatcher('a')));
- assertTrue(sb.contains(StringMatcherFactory.INSTANCE.stringMatcher("pq")));
- assertTrue(sb.contains(StringMatcherFactory.INSTANCE.charMatcher('z')));
- assertFalse(sb.contains(StringMatcherFactory.INSTANCE.stringMatcher("zy")));
- assertFalse(sb.contains((StringMatcher) null));
-
- sb = new TextStringBuilder();
- assertFalse(sb.contains(A_NUMBER_MATCHER));
- sb.append("B A1 C");
- assertTrue(sb.contains(A_NUMBER_MATCHER));
- }
-
- // -----------------------------------------------------------------------
- @Test
- public void testIndexOf_char() {
- final TextStringBuilder sb = new TextStringBuilder("abab");
- assertEquals(0, sb.indexOf('a'));
-
- // should work like String#indexOf
- assertEquals("abab".indexOf('a'), sb.indexOf('a'));
-
- assertEquals(1, sb.indexOf('b'));
- assertEquals("abab".indexOf('b'), sb.indexOf('b'));
-
- assertEquals(-1, sb.indexOf('z'));
- }
-
- @Test
- public void testIndexOf_char_int() {
- TextStringBuilder sb = new TextStringBuilder("abab");
- assertEquals(0, sb.indexOf('a', -1));
- assertEquals(0, sb.indexOf('a', 0));
- assertEquals(2, sb.indexOf('a', 1));
- assertEquals(-1, sb.indexOf('a', 4));
- assertEquals(-1, sb.indexOf('a', 5));
-
- // should work like String#indexOf
- assertEquals("abab".indexOf('a', 1), sb.indexOf('a', 1));
-
- assertEquals(3, sb.indexOf('b', 2));
- assertEquals("abab".indexOf('b', 2), sb.indexOf('b', 2));
-
- assertEquals(-1, sb.indexOf('z', 2));
-
- sb = new TextStringBuilder("xyzabc");
- assertEquals(2, sb.indexOf('z', 0));
- assertEquals(-1, sb.indexOf('z', 3));
+ // -----------------------------------------------------------------------
+ @Test
+ public void testLang412Right() {
+ final TextStringBuilder sb = new TextStringBuilder();
+ sb.appendFixedWidthPadRight(null, 10, '*');
+ assertEquals("**********", sb.toString(), "Failed to invoke appendFixedWidthPadRight correctly");
}
@Test
@@ -1338,67 +1215,6 @@ public class TextStringBuilderTest {
assertEquals(-1, sb.lastIndexOf('z', 1));
}
- // -----------------------------------------------------------------------
- @Test
- public void testIndexOf_String() {
- final TextStringBuilder sb = new TextStringBuilder("abab");
-
- assertEquals(0, sb.indexOf("a"));
- // should work like String#indexOf
- assertEquals("abab".indexOf("a"), sb.indexOf("a"));
-
- assertEquals(0, sb.indexOf("ab"));
- // should work like String#indexOf
- assertEquals("abab".indexOf("ab"), sb.indexOf("ab"));
-
- assertEquals(1, sb.indexOf("b"));
- assertEquals("abab".indexOf("b"), sb.indexOf("b"));
-
- assertEquals(1, sb.indexOf("ba"));
- assertEquals("abab".indexOf("ba"), sb.indexOf("ba"));
-
- assertEquals(-1, sb.indexOf("z"));
-
- assertEquals(-1, sb.indexOf((String) null));
- }
-
- @Test
- public void testIndexOf_String_int() {
- TextStringBuilder sb = new TextStringBuilder("abab");
- assertEquals(0, sb.indexOf("a", -1));
- assertEquals(0, sb.indexOf("a", 0));
- assertEquals(2, sb.indexOf("a", 1));
- assertEquals(2, sb.indexOf("a", 2));
- assertEquals(-1, sb.indexOf("a", 3));
- assertEquals(-1, sb.indexOf("a", 4));
- assertEquals(-1, sb.indexOf("a", 5));
-
- assertEquals(-1, sb.indexOf("abcdef", 0));
- assertEquals(0, sb.indexOf("", 0));
- assertEquals(1, sb.indexOf("", 1));
-
- // should work like String#indexOf
- assertEquals("abab".indexOf("a", 1), sb.indexOf("a", 1));
-
- assertEquals(2, sb.indexOf("ab", 1));
- // should work like String#indexOf
- assertEquals("abab".indexOf("ab", 1), sb.indexOf("ab", 1));
-
- assertEquals(3, sb.indexOf("b", 2));
- assertEquals("abab".indexOf("b", 2), sb.indexOf("b", 2));
-
- assertEquals(1, sb.indexOf("ba", 1));
- assertEquals("abab".indexOf("ba", 2), sb.indexOf("ba", 2));
-
- assertEquals(-1, sb.indexOf("z", 2));
-
- sb = new TextStringBuilder("xyzabc");
- assertEquals(2, sb.indexOf("za", 0));
- assertEquals(-1, sb.indexOf("za", 3));
-
- assertEquals(-1, sb.indexOf((String) null, 2));
- }
-
@Test
public void testLastIndexOf_String() {
final TextStringBuilder sb = new TextStringBuilder("abab");
@@ -1459,65 +1275,6 @@ public class TextStringBuilderTest {
assertEquals(-1, sb.lastIndexOf((String) null, 2));
}
- // -----------------------------------------------------------------------
- @Test
- public void testIndexOf_StringMatcher() {
- final TextStringBuilder sb = new TextStringBuilder();
- assertEquals(-1, sb.indexOf((StringMatcher) null));
- assertEquals(-1, sb.indexOf(StringMatcherFactory.INSTANCE.charMatcher('a')));
-
- sb.append("ab bd");
- assertEquals(0, sb.indexOf(StringMatcherFactory.INSTANCE.charMatcher('a')));
- assertEquals(1, sb.indexOf(StringMatcherFactory.INSTANCE.charMatcher('b')));
- assertEquals(2, sb.indexOf(StringMatcherFactory.INSTANCE.spaceMatcher()));
- assertEquals(4, sb.indexOf(StringMatcherFactory.INSTANCE.charMatcher('d')));
- assertEquals(-1, sb.indexOf(StringMatcherFactory.INSTANCE.noneMatcher()));
- assertEquals(-1, sb.indexOf((StringMatcher) null));
-
- sb.append(" A1 junction");
- assertEquals(6, sb.indexOf(A_NUMBER_MATCHER));
- }
-
- @Test
- public void testIndexOf_StringMatcher_int() {
- final TextStringBuilder sb = new TextStringBuilder();
- assertEquals(-1, sb.indexOf((StringMatcher) null, 2));
- assertEquals(-1, sb.indexOf(StringMatcherFactory.INSTANCE.charMatcher('a'), 2));
- assertEquals(-1, sb.indexOf(StringMatcherFactory.INSTANCE.charMatcher('a'), 0));
-
- sb.append("ab bd");
- assertEquals(0, sb.indexOf(StringMatcherFactory.INSTANCE.charMatcher('a'), -2));
- assertEquals(0, sb.indexOf(StringMatcherFactory.INSTANCE.charMatcher('a'), 0));
- assertEquals(-1, sb.indexOf(StringMatcherFactory.INSTANCE.charMatcher('a'), 2));
- assertEquals(-1, sb.indexOf(StringMatcherFactory.INSTANCE.charMatcher('a'), 20));
-
- assertEquals(1, sb.indexOf(StringMatcherFactory.INSTANCE.charMatcher('b'), -1));
- assertEquals(1, sb.indexOf(StringMatcherFactory.INSTANCE.charMatcher('b'), 0));
- assertEquals(1, sb.indexOf(StringMatcherFactory.INSTANCE.charMatcher('b'), 1));
- assertEquals(3, sb.indexOf(StringMatcherFactory.INSTANCE.charMatcher('b'), 2));
- assertEquals(3, sb.indexOf(StringMatcherFactory.INSTANCE.charMatcher('b'), 3));
- assertEquals(-1, sb.indexOf(StringMatcherFactory.INSTANCE.charMatcher('b'), 4));
- assertEquals(-1, sb.indexOf(StringMatcherFactory.INSTANCE.charMatcher('b'), 5));
- assertEquals(-1, sb.indexOf(StringMatcherFactory.INSTANCE.charMatcher('b'), 6));
-
- assertEquals(2, sb.indexOf(StringMatcherFactory.INSTANCE.spaceMatcher(), -2));
- assertEquals(2, sb.indexOf(StringMatcherFactory.INSTANCE.spaceMatcher(), 0));
- assertEquals(2, sb.indexOf(StringMatcherFactory.INSTANCE.spaceMatcher(), 2));
- assertEquals(-1, sb.indexOf(StringMatcherFactory.INSTANCE.spaceMatcher(), 4));
- assertEquals(-1, sb.indexOf(StringMatcherFactory.INSTANCE.spaceMatcher(), 20));
-
- assertEquals(-1, sb.indexOf(StringMatcherFactory.INSTANCE.noneMatcher(), 0));
- assertEquals(-1, sb.indexOf((StringMatcher) null, 0));
-
- sb.append(" A1 junction with A2");
- assertEquals(6, sb.indexOf(A_NUMBER_MATCHER, 5));
- assertEquals(6, sb.indexOf(A_NUMBER_MATCHER, 6));
- assertEquals(23, sb.indexOf(A_NUMBER_MATCHER, 7));
- assertEquals(23, sb.indexOf(A_NUMBER_MATCHER, 22));
- assertEquals(23, sb.indexOf(A_NUMBER_MATCHER, 23));
- assertEquals(-1, sb.indexOf(A_NUMBER_MATCHER, 24));
- }
-
@Test
public void testLastIndexOf_StringMatcher() {
final TextStringBuilder sb = new TextStringBuilder();
@@ -1581,487 +1338,743 @@ public class TextStringBuilderTest {
assertEquals(23, sb.lastIndexOf(A_NUMBER_MATCHER, 24));
}
- static final StringMatcher A_NUMBER_MATCHER = (buffer, start, bufferStart, bufferEnd) -> {
- if (buffer[start] == 'A') {
- start++;
- if (start < bufferEnd && buffer[start] >= '0' && buffer[start] <= '9') {
- return 2;
- }
- }
- return 0;
- };
+ @Test
+ public void testLeftString() {
+ final TextStringBuilder sb = new TextStringBuilder("left right");
+ assertEquals("left", sb.leftString(4));
+ assertEquals("", sb.leftString(0));
+ assertEquals("", sb.leftString(-5));
+ assertEquals("left right", sb.leftString(15));
+ }
// -----------------------------------------------------------------------
@Test
- public void testAsTokenizer() throws Exception {
- // from Javadoc
- final TextStringBuilder b = new TextStringBuilder();
- b.append("a b ");
- final StringTokenizer t = b.asTokenizer();
+ public void testLength() {
+ final TextStringBuilder sb = new TextStringBuilder();
+ assertEquals(0, sb.length());
- final String[] tokens1 = t.getTokenArray();
- assertEquals(2, tokens1.length);
- assertEquals("a", tokens1[0]);
- assertEquals("b", tokens1[1]);
- assertEquals(2, t.size());
+ sb.append("Hello");
+ assertEquals(5, sb.length());
+ }
- b.append("c d ");
- final String[] tokens2 = t.getTokenArray();
- assertEquals(2, tokens2.length);
- assertEquals("a", tokens2[0]);
- assertEquals("b", tokens2[1]);
- assertEquals(2, t.size());
- assertEquals("a", t.next());
- assertEquals("b", t.next());
+ // -----------------------------------------------------------------------
+ @Test
+ public void testMidString() {
+ final TextStringBuilder sb = new TextStringBuilder("hello goodbye hello");
+ assertEquals("goodbye", sb.midString(6, 7));
+ assertEquals("hello", sb.midString(0, 5));
+ assertEquals("hello", sb.midString(-5, 5));
+ assertEquals("", sb.midString(0, -1));
+ assertEquals("", sb.midString(20, 2));
+ assertEquals("hello", sb.midString(14, 22));
+ }
- t.reset();
- final String[] tokens3 = t.getTokenArray();
- assertEquals(4, tokens3.length);
- assertEquals("a", tokens3[0]);
- assertEquals("b", tokens3[1]);
- assertEquals("c", tokens3[2]);
- assertEquals("d", tokens3[3]);
- assertEquals(4, t.size());
- assertEquals("a", t.next());
- assertEquals("b", t.next());
- assertEquals("c", t.next());
- assertEquals("d", t.next());
+ @Test
+ public void testMinimizeCapacity() {
+ final TextStringBuilder sb = new TextStringBuilder();
+ sb.minimizeCapacity();
+ assertEquals(0, sb.capacity());
- assertEquals("a b c d ", t.getContent());
+ sb.append("HelloWorld");
+ sb.minimizeCapacity();
+ assertEquals(10, sb.capacity());
+ }
+
+ @Test
+ public void testReadFromCharBuffer() throws Exception {
+ String s = "";
+ for (int i = 0; i < 100; ++i) {
+ final TextStringBuilder sb = new TextStringBuilder();
+ final int len = sb.readFrom(CharBuffer.wrap(s));
+
+ assertEquals(s.length(), len);
+ assertEquals(s, sb.toString());
+
+ s += Integer.toString(i);
+ }
+ }
+
+ @Test
+ public void testReadFromCharBufferAppendsToEnd() throws Exception {
+ final TextStringBuilder sb = new TextStringBuilder("Test");
+ sb.readFrom(CharBuffer.wrap(" 123"));
+ assertEquals("Test 123", sb.toString());
+ }
+
+ @Test
+ public void testReadFromReadable() throws Exception {
+ String s = "";
+ for (int i = 0; i < 100; ++i) {
+ final TextStringBuilder sb = new TextStringBuilder();
+ final int len = sb.readFrom(new MockReadable(s));
+
+ assertEquals(s.length(), len);
+ assertEquals(s, sb.toString());
+
+ s += Integer.toString(i);
+ }
+ }
+
+ @Test
+ public void testReadFromReadableAppendsToEnd() throws Exception {
+ final TextStringBuilder sb = new TextStringBuilder("Test");
+ sb.readFrom(new MockReadable(" 123"));
+ assertEquals("Test 123", sb.toString());
}
// -----------------------------------------------------------------------
@Test
- public void testAsReader() throws Exception {
- final TextStringBuilder sb = new TextStringBuilder("some text");
- try (Reader reader = sb.asReader()) {
- assertTrue(reader.ready());
- final char[] buf = new char[40];
- assertEquals(9, reader.read(buf));
- assertEquals("some text", new String(buf, 0, 9));
+ public void testReadFromReader() throws Exception {
+ String s = "";
+ for (int i = 0; i < 100; ++i) {
+ final TextStringBuilder sb = new TextStringBuilder();
+ final int len = sb.readFrom(new StringReader(s));
- assertEquals(-1, reader.read());
- assertFalse(reader.ready());
- assertEquals(0, reader.skip(2));
- assertEquals(0, reader.skip(-1));
+ assertEquals(s.length(), len);
+ assertEquals(s, sb.toString());
- assertTrue(reader.markSupported());
+ s += Integer.toString(i);
}
- try (Reader reader = sb.asReader()) {
- assertEquals('s', reader.read());
- reader.mark(-1);
- char[] array = new char[3];
- assertEquals(3, reader.read(array, 0, 3));
- assertEquals('o', array[0]);
- assertEquals('m', array[1]);
- assertEquals('e', array[2]);
- reader.reset();
- assertEquals(1, reader.read(array, 1, 1));
- assertEquals('o', array[0]);
- assertEquals('o', array[1]);
- assertEquals('e', array[2]);
- assertEquals(2, reader.skip(2));
- assertEquals(' ', reader.read());
+ }
- assertTrue(reader.ready());
- reader.close();
- assertTrue(reader.ready());
+ @Test
+ public void testReadFromReaderAppendsToEnd() throws Exception {
+ final TextStringBuilder sb = new TextStringBuilder("Test");
+ sb.readFrom(new StringReader(" 123"));
+ assertEquals("Test 123", sb.toString());
+ }
+
+ // -----------------------------------------------------------------------
+ @Test
+ public void testReplace_int_int_String() {
+ TextStringBuilder sb = new TextStringBuilder("abc");
+ sb.replace(0, 1, "d");
+ assertEquals("dbc", sb.toString());
+ sb.replace(0, 1, "aaa");
+ assertEquals("aaabc", sb.toString());
+ sb.replace(0, 3, "");
+ assertEquals("bc", sb.toString());
+ sb.replace(1, 2, (String) null);
+ assertEquals("b", sb.toString());
+ sb.replace(1, 1000, "text");
+ assertEquals("btext", sb.toString());
+ sb.replace(0, 1000, "text");
+ assertEquals("text", sb.toString());
+
+ sb = new TextStringBuilder("atext");
+ sb.replace(1, 1, "ny");
+ assertEquals("anytext", sb.toString());
+ try {
+ sb.replace(2, 1, "anything");
+ fail("Expected IndexOutOfBoundsException");
+ } catch (final IndexOutOfBoundsException e) {
+ // expected
}
- try (Reader reader = sb.asReader()) {
- char[] array = new char[3];
- try {
- reader.read(array, -1, 0);
- fail("Exception expected!");
- } catch (final IndexOutOfBoundsException ex) {
- // expected
- }
- try {
- reader.read(array, 0, -1);
- fail("Exception expected!");
- } catch (final IndexOutOfBoundsException ex) {
- // expected
- }
- try {
- reader.read(array, 100, 1);
- fail("Exception expected!");
- } catch (final IndexOutOfBoundsException ex) {
- // expected
- }
- try {
- reader.read(array, 0, 100);
- fail("Exception expected!");
- } catch (final IndexOutOfBoundsException ex) {
- // expected
- }
- try {
- reader.read(array, Integer.MAX_VALUE, Integer.MAX_VALUE);
- fail("Exception expected!");
- } catch (final IndexOutOfBoundsException ex) {
- // expected
- }
- assertEquals(0, reader.read(array, 0, 0));
- assertEquals(0, array[0]);
- assertEquals(0, array[1]);
- assertEquals(0, array[2]);
+ sb = new TextStringBuilder();
+ try {
+ sb.replace(1, 2, "anything");
+ fail("Expected IndexOutOfBoundsException");
+ } catch (final IndexOutOfBoundsException e) {
+ // expected
+ }
+ try {
+ sb.replace(-1, 1, "anything");
+ fail("Expected IndexOutOfBoundsException");
+ } catch (final IndexOutOfBoundsException e) {
+ // expected
+ }
+ }
- reader.skip(9);
- assertEquals(-1, reader.read(array, 0, 1));
+ @Test
+ public void testReplace_StringMatcher_String_int_int_int_VaryCount() {
+ TextStringBuilder sb = new TextStringBuilder("aaxaaaayaa");
+ sb.replace(StringMatcherFactory.INSTANCE.stringMatcher("aa"), "-", 0, 10, -1);
+ assertEquals("-x--y-", sb.toString());
- reader.reset();
- array = new char[30];
- assertEquals(9, reader.read(array, 0, 30));
+ sb = new TextStringBuilder("aaxaaaayaa");
+ sb.replace(StringMatcherFactory.INSTANCE.stringMatcher("aa"), "-", 0, 10, 0);
+ assertEquals("aaxaaaayaa", sb.toString());
+
+ sb = new TextStringBuilder("aaxaaaayaa");
+ sb.replace(StringMatcherFactory.INSTANCE.stringMatcher("aa"), "-", 0, 10, 1);
+ assertEquals("-xaaaayaa", sb.toString());
+
+ sb = new TextStringBuilder("aaxaaaayaa");
+ sb.replace(StringMatcherFactory.INSTANCE.stringMatcher("aa"), "-", 0, 10, 2);
+ assertEquals("-x-aayaa", sb.toString());
+
+ sb = new TextStringBuilder("aaxaaaayaa");
+ sb.replace(StringMatcherFactory.INSTANCE.stringMatcher("aa"), "-", 0, 10, 3);
+ assertEquals("-x--yaa", sb.toString());
+
+ sb = new TextStringBuilder("aaxaaaayaa");
+ sb.replace(StringMatcherFactory.INSTANCE.stringMatcher("aa"), "-", 0, 10, 4);
+ assertEquals("-x--y-", sb.toString());
+
+ sb = new TextStringBuilder("aaxaaaayaa");
+ sb.replace(StringMatcherFactory.INSTANCE.stringMatcher("aa"), "-", 0, 10, 5);
+ assertEquals("-x--y-", sb.toString());
+ }
+
+ @Test
+ public void testReplace_StringMatcher_String_int_int_int_VaryEndIndex() {
+ TextStringBuilder sb = new TextStringBuilder("aaxaaaayaa");
+ sb.replace(StringMatcherFactory.INSTANCE.stringMatcher("aa"), "-", 0, 0, -1);
+ assertEquals("aaxaaaayaa", sb.toString());
+
+ sb = new TextStringBuilder("aaxaaaayaa");
+ sb.replace(StringMatcherFactory.INSTANCE.stringMatcher("aa"), "-", 0, 2, -1);
+ assertEquals("-xaaaayaa", sb.toString());
+
+ sb = new TextStringBuilder("aaxaaaayaa");
+ sb.replace(StringMatcherFactory.INSTANCE.stringMatcher("aa"), "-", 0, 3, -1);
+ assertEquals("-xaaaayaa", sb.toString());
+
+ sb = new TextStringBuilder("aaxaaaayaa");
+ sb.replace(StringMatcherFactory.INSTANCE.stringMatcher("aa"), "-", 0, 4, -1);
+ assertEquals("-xaaaayaa", sb.toString());
+
+ sb = new TextStringBuilder("aaxaaaayaa");
+ sb.replace(StringMatcherFactory.INSTANCE.stringMatcher("aa"), "-", 0, 5, -1);
+ assertEquals("-x-aayaa", sb.toString());
+
+ sb = new TextStringBuilder("aaxaaaayaa");
+ sb.replace(StringMatcherFactory.INSTANCE.stringMatcher("aa"), "-", 0, 6, -1);
+ assertEquals("-x-aayaa", sb.toString());
+
+ sb = new TextStringBuilder("aaxaaaayaa");
+ sb.replace(StringMatcherFactory.INSTANCE.stringMatcher("aa"), "-", 0, 7, -1);
+ assertEquals("-x--yaa", sb.toString());
+
+ sb = new TextStringBuilder("aaxaaaayaa");
+ sb.replace(StringMatcherFactory.INSTANCE.stringMatcher("aa"), "-", 0, 8, -1);
+ assertEquals("-x--yaa", sb.toString());
+
+ sb = new TextStringBuilder("aaxaaaayaa");
+ sb.replace(StringMatcherFactory.INSTANCE.stringMatcher("aa"), "-", 0, 9, -1);
+ assertEquals("-x--yaa", sb.toString());
+
+ sb = new TextStringBuilder("aaxaaaayaa");
+ sb.replace(StringMatcherFactory.INSTANCE.stringMatcher("aa"), "-", 0, 10, -1);
+ assertEquals("-x--y-", sb.toString());
+
+ sb = new TextStringBuilder("aaxaaaayaa");
+ sb.replace(StringMatcherFactory.INSTANCE.stringMatcher("aa"), "-", 0, 1000, -1);
+ assertEquals("-x--y-", sb.toString());
+
+ sb = new TextStringBuilder("aaxaaaayaa");
+ try {
+ sb.replace(StringMatcherFactory.INSTANCE.stringMatcher("aa"), "-", 2, 1, -1);
+ fail("Exception expected!");
+ } catch (final IndexOutOfBoundsException ex) {
+ // expected
}
+ assertEquals("aaxaaaayaa", sb.toString());
}
// -----------------------------------------------------------------------
@Test
- public void testAsWriter() throws Exception {
- final TextStringBuilder sb = new TextStringBuilder("base");
- try (Writer writer = sb.asWriter()) {
+ public void testReplace_StringMatcher_String_int_int_int_VaryMatcher() {
+ TextStringBuilder sb = new TextStringBuilder("abcbccba");
+ sb.replace((StringMatcher) null, "x", 0, sb.length(), -1);
+ assertEquals("abcbccba", sb.toString());
- writer.write('l');
- assertEquals("basel", sb.toString());
+ sb.replace(StringMatcherFactory.INSTANCE.charMatcher('a'), "x", 0, sb.length(), -1);
+ assertEquals("xbcbccbx", sb.toString());
- writer.write(new char[] {'i', 'n'});
- assertEquals("baselin", sb.toString());
+ sb.replace(StringMatcherFactory.INSTANCE.stringMatcher("cb"), "x", 0, sb.length(), -1);
+ assertEquals("xbxcxx", sb.toString());
- writer.write(new char[] {'n', 'e', 'r'}, 1, 2);
- assertEquals("baseliner", sb.toString());
+ sb = new TextStringBuilder("A1-A2A3-A4");
+ sb.replace(A_NUMBER_MATCHER, "***", 0, sb.length(), -1);
+ assertEquals("***-******-***", sb.toString());
- writer.write(" rout");
- assertEquals("baseliner rout", sb.toString());
+ sb = new TextStringBuilder();
+ sb.replace(A_NUMBER_MATCHER, "***", 0, sb.length(), -1);
+ assertEquals("", sb.toString());
+ }
- writer.write("ping that server", 1, 3);
- assertEquals("baseliner routing", sb.toString());
+ @Test
+ public void testReplace_StringMatcher_String_int_int_int_VaryReplace() {
+ TextStringBuilder sb = new TextStringBuilder("abcbccba");
+ sb.replace(StringMatcherFactory.INSTANCE.stringMatcher("cb"), "cb", 0, sb.length(), -1);
+ assertEquals("abcbccba", sb.toString());
- writer.flush(); // no effect
- assertEquals("baseliner routing", sb.toString());
+ sb = new TextStringBuilder("abcbccba");
+ sb.replace(StringMatcherFactory.INSTANCE.stringMatcher("cb"), "-", 0, sb.length(), -1);
+ assertEquals("ab-c-a", sb.toString());
- writer.close(); // no effect
- assertEquals("baseliner routing", sb.toString());
+ sb = new TextStringBuilder("abcbccba");
+ sb.replace(StringMatcherFactory.INSTANCE.stringMatcher("cb"), "+++", 0, sb.length(), -1);
+ assertEquals("ab+++c+++a", sb.toString());
- writer.write(" hi"); // works after close
- assertEquals("baseliner routing hi", sb.toString());
+ sb = new TextStringBuilder("abcbccba");
+ sb.replace(StringMatcherFactory.INSTANCE.stringMatcher("cb"), "", 0, sb.length(), -1);
+ assertEquals("abca", sb.toString());
+
+ sb = new TextStringBuilder("abcbccba");
+ sb.replace(StringMatcherFactory.INSTANCE.stringMatcher("cb"), null, 0, sb.length(), -1);
+ assertEquals("abca", sb.toString());
+ }
+
+ @Test
+ public void testReplace_StringMatcher_String_int_int_int_VaryStartIndex() {
+ TextStringBuilder sb = new TextStringBuilder("aaxaaaayaa");
+ sb.replace(StringMatcherFactory.INSTANCE.stringMatcher("aa"), "-", 0, sb.length(), -1);
+ assertEquals("-x--y-", sb.toString());
+
+ sb = new TextStringBuilder("aaxaaaayaa");
+ sb.replace(StringMatcherFactory.INSTANCE.stringMatcher("aa"), "-", 1, sb.length(), -1);
+ assertEquals("aax--y-", sb.toString());
+
+ sb = new TextStringBuilder("aaxaaaayaa");
+ sb.replace(StringMatcherFactory.INSTANCE.stringMatcher("aa"), "-", 2, sb.length(), -1);
+ assertEquals("aax--y-", sb.toString());
+
+ sb = new TextStringBuilder("aaxaaaayaa");
+ sb.replace(StringMatcherFactory.INSTANCE.stringMatcher("aa"), "-", 3, sb.length(), -1);
+ assertEquals("aax--y-", sb.toString());
+
+ sb = new TextStringBuilder("aaxaaaayaa");
+ sb.replace(StringMatcherFactory.INSTANCE.stringMatcher("aa"), "-", 4, sb.length(), -1);
+ assertEquals("aaxa-ay-", sb.toString());
+
+ sb = new TextStringBuilder("aaxaaaayaa");
+ sb.replace(StringMatcherFactory.INSTANCE.stringMatcher("aa"), "-", 5, sb.length(), -1);
+ assertEquals("aaxaa-y-", sb.toString());
+
+ sb = new TextStringBuilder("aaxaaaayaa");
+ sb.replace(StringMatcherFactory.INSTANCE.stringMatcher("aa"), "-", 6, sb.length(), -1);
+ assertEquals("aaxaaaay-", sb.toString());
+
+ sb = new TextStringBuilder("aaxaaaayaa");
+ sb.replace(StringMatcherFactory.INSTANCE.stringMatcher("aa"), "-", 7, sb.length(), -1);
+ assertEquals("aaxaaaay-", sb.toString());
+
+ sb = new TextStringBuilder("aaxaaaayaa");
+ sb.replace(StringMatcherFactory.INSTANCE.stringMatcher("aa"), "-", 8, sb.length(), -1);
+ assertEquals("aaxaaaay-", sb.toString());
+
+ sb = new TextStringBuilder("aaxaaaayaa");
+ sb.replace(StringMatcherFactory.INSTANCE.stringMatcher("aa"), "-", 9, sb.length(), -1);
+ assertEquals("aaxaaaayaa", sb.toString());
+
+ sb = new TextStringBuilder("aaxaaaayaa");
+ sb.replace(StringMatcherFactory.INSTANCE.stringMatcher("aa"), "-", 10, sb.length(), -1);
+ assertEquals("aaxaaaayaa", sb.toString());
- sb.setLength(4); // mix and match
- writer.write('d');
- assertEquals("based", sb.toString());
+ sb = new TextStringBuilder("aaxaaaayaa");
+ try {
+ sb.replace(StringMatcherFactory.INSTANCE.stringMatcher("aa"), "-", 11, sb.length(), -1);
+ fail("Exception expected!");
+ } catch (final IndexOutOfBoundsException ex) {
+ // expected
+ }
+ assertEquals("aaxaaaayaa", sb.toString());
+
+ sb = new TextStringBuilder("aaxaaaayaa");
+ try {
+ sb.replace(StringMatcherFactory.INSTANCE.stringMatcher("aa"), "-", -1, sb.length(), -1);
+ fail("Exception expected!");
+ } catch (final IndexOutOfBoundsException ex) {
+ // expected
}
+ assertEquals("aaxaaaayaa", sb.toString());
}
// -----------------------------------------------------------------------
@Test
- public void testEqualsIgnoreCase() {
- final TextStringBuilder sb1 = new TextStringBuilder();
- final TextStringBuilder sb2 = new TextStringBuilder();
- assertTrue(sb1.equalsIgnoreCase(sb1));
- assertTrue(sb1.equalsIgnoreCase(sb2));
- assertTrue(sb2.equalsIgnoreCase(sb2));
+ public void testReplaceAll_char_char() {
+ final TextStringBuilder sb = new TextStringBuilder("abcbccba");
+ sb.replaceAll('x', 'y');
+ assertEquals("abcbccba", sb.toString());
+ sb.replaceAll('a', 'd');
+ assertEquals("dbcbccbd", sb.toString());
+ sb.replaceAll('b', 'e');
+ assertEquals("dececced", sb.toString());
+ sb.replaceAll('c', 'f');
+ assertEquals("defeffed", sb.toString());
+ sb.replaceAll('d', 'd');
+ assertEquals("defeffed", sb.toString());
+ }
- sb1.append("abc");
- assertFalse(sb1.equalsIgnoreCase(sb2));
+ // -----------------------------------------------------------------------
+ @Test
+ public void testReplaceAll_String_String() {
+ TextStringBuilder sb = new TextStringBuilder("abcbccba");
+ sb.replaceAll((String) null, null);
+ assertEquals("abcbccba", sb.toString());
+ sb.replaceAll((String) null, "anything");
+ assertEquals("abcbccba", sb.toString());
+ sb.replaceAll("", null);
+ assertEquals("abcbccba", sb.toString());
+ sb.replaceAll("", "anything");
+ assertEquals("abcbccba", sb.toString());
- sb2.append("ABC");
- assertTrue(sb1.equalsIgnoreCase(sb2));
+ sb.replaceAll("x", "y");
+ assertEquals("abcbccba", sb.toString());
+ sb.replaceAll("a", "d");
+ assertEquals("dbcbccbd", sb.toString());
+ sb.replaceAll("d", null);
+ assertEquals("bcbccb", sb.toString());
+ sb.replaceAll("cb", "-");
+ assertEquals("b-c-", sb.toString());
- sb2.clear().append("abc");
- assertTrue(sb1.equalsIgnoreCase(sb2));
- assertTrue(sb1.equalsIgnoreCase(sb1));
- assertTrue(sb2.equalsIgnoreCase(sb2));
+ sb = new TextStringBuilder("abcba");
+ sb.replaceAll("b", "xbx");
+ assertEquals("axbxcxbxa", sb.toString());
- sb2.clear().append("aBc");
- assertTrue(sb1.equalsIgnoreCase(sb2));
+ sb = new TextStringBuilder("bb");
+ sb.replaceAll("b", "xbx");
+ assertEquals("xbxxbx", sb.toString());
}
// -----------------------------------------------------------------------
@Test
- public void testEquals() {
- final TextStringBuilder sb1 = new TextStringBuilder();
- final TextStringBuilder sb2 = new TextStringBuilder();
- assertTrue(sb1.equals(sb2));
- assertTrue(sb1.equals(sb1));
- assertTrue(sb2.equals(sb2));
- assertTrue(sb1.equals((Object) sb2));
+ public void testReplaceAll_StringMatcher_String() {
+ TextStringBuilder sb = new TextStringBuilder("abcbccba");
+ sb.replaceAll((StringMatcher) null, null);
+ assertEquals("abcbccba", sb.toString());
+ sb.replaceAll((StringMatcher) null, "anything");
+ assertEquals("abcbccba", sb.toString());
+ sb.replaceAll(StringMatcherFactory.INSTANCE.noneMatcher(), null);
+ assertEquals("abcbccba", sb.toString());
+ sb.replaceAll(StringMatcherFactory.INSTANCE.noneMatcher(), "anything");
+ assertEquals("abcbccba", sb.toString());
- sb1.append("abc");
- assertFalse(sb1.equals(sb2));
- assertFalse(sb1.equals((Object) sb2));
+ sb.replaceAll(StringMatcherFactory.INSTANCE.charMatcher('x'), "y");
+ assertEquals("abcbccba", sb.toString());
+ sb.replaceAll(StringMatcherFactory.INSTANCE.charMatcher('a'), "d");
+ assertEquals("dbcbccbd", sb.toString());
+ sb.replaceAll(StringMatcherFactory.INSTANCE.charMatcher('d'), null);
+ assertEquals("bcbccb", sb.toString());
+ sb.replaceAll(StringMatcherFactory.INSTANCE.stringMatcher("cb"), "-");
+ assertEquals("b-c-", sb.toString());
- sb2.append("ABC");
- assertFalse(sb1.equals(sb2));
- assertFalse(sb1.equals((Object) sb2));
+ sb = new TextStringBuilder("abcba");
+ sb.replaceAll(StringMatcherFactory.INSTANCE.charMatcher('b'), "xbx");
+ assertEquals("axbxcxbxa", sb.toString());
- sb2.clear().append("abc");
- assertTrue(sb1.equals(sb2));
- assertTrue(sb1.equals((Object) sb2));
+ sb = new TextStringBuilder("bb");
+ sb.replaceAll(StringMatcherFactory.INSTANCE.charMatcher('b'), "xbx");
+ assertEquals("xbxxbx", sb.toString());
- assertFalse(sb1.equals(Integer.valueOf(1)));
- assertFalse(sb1.equals("abc"));
- }
+ sb = new TextStringBuilder("A1-A2A3-A4");
+ sb.replaceAll(A_NUMBER_MATCHER, "***");
+ assertEquals("***-******-***", sb.toString());
- @Test
- public void test_LANG_1131_EqualsWithNullTextStringBuilder() throws Exception {
- final TextStringBuilder sb = new TextStringBuilder();
- final TextStringBuilder other = null;
- assertFalse(sb.equals(other));
+ sb = new TextStringBuilder("Dear X, hello X.");
+ sb.replaceAll(StringMatcherFactory.INSTANCE.stringMatcher("X"), "012345678901234567");
+ assertEquals("Dear 012345678901234567, hello 012345678901234567.", sb.toString());
}
// -----------------------------------------------------------------------
@Test
- public void testHashCode() {
- final TextStringBuilder sb = new TextStringBuilder();
- final int hc1a = sb.hashCode();
- final int hc1b = sb.hashCode();
- assertEquals(0, hc1a);
- assertEquals(hc1a, hc1b);
-
- sb.append("abc");
- final int hc2a = sb.hashCode();
- final int hc2b = sb.hashCode();
- assertTrue(hc2a != 0);
- assertEquals(hc2a, hc2b);
+ public void testReplaceFirst_char_char() {
+ final TextStringBuilder sb = new TextStringBuilder("abcbccba");
+ sb.replaceFirst('x', 'y');
+ assertEquals("abcbccba", sb.toString());
+ sb.replaceFirst('a', 'd');
+ assertEquals("dbcbccba", sb.toString());
+ sb.replaceFirst('b', 'e');
+ assertEquals("decbccba", sb.toString());
+ sb.replaceFirst('c', 'f');
+ assertEquals("defbccba", sb.toString());
+ sb.replaceFirst('d', 'd');
+ assertEquals("defbccba", sb.toString());
}
- // -----------------------------------------------------------------------
@Test
- public void testToString() {
- final TextStringBuilder sb = new TextStringBuilder("abc");
- assertEquals("abc", sb.toString());
- }
+ public void testReplaceFirst_String_String() {
+ TextStringBuilder sb = new TextStringBuilder("abcbccba");
+ sb.replaceFirst((String) null, null);
+ assertEquals("abcbccba", sb.toString());
+ sb.replaceFirst((String) null, "anything");
+ assertEquals("abcbccba", sb.toString());
+ sb.replaceFirst("", null);
+ assertEquals("abcbccba", sb.toString());
+ sb.replaceFirst("", "anything");
+ assertEquals("abcbccba", sb.toString());
- // -----------------------------------------------------------------------
- @Test
- public void testToStringBuffer() {
- final TextStringBuilder sb = new TextStringBuilder();
- assertEquals(new StringBuffer().toString(), sb.toStringBuffer().toString());
+ sb.replaceFirst("x", "y");
+ assertEquals("abcbccba", sb.toString());
+ sb.replaceFirst("a", "d");
+ assertEquals("dbcbccba", sb.toString());
+ sb.replaceFirst("d", null);
+ assertEquals("bcbccba", sb.toString());
+ sb.replaceFirst("cb", "-");
+ assertEquals("b-ccba", sb.toString());
- sb.append("junit");
- assertEquals(new StringBuffer("junit").toString(), sb.toStringBuffer().toString());
+ sb = new TextStringBuilder("abcba");
+ sb.replaceFirst("b", "xbx");
+ assertEquals("axbxcba", sb.toString());
+
+ sb = new TextStringBuilder("bb");
+ sb.replaceFirst("b", "xbx");
+ assertEquals("xbxb", sb.toString());
}
- // -----------------------------------------------------------------------
@Test
- public void testToStringBuilder() {
- final TextStringBuilder sb = new TextStringBuilder();
- assertEquals(new StringBuilder().toString(), sb.toStringBuilder().toString());
+ public void testReplaceFirst_StringMatcher_String() {
+ TextStringBuilder sb = new TextStringBuilder("abcbccba");
+ sb.replaceFirst((StringMatcher) null, null);
+ assertEquals("abcbccba", sb.toString());
+ sb.replaceFirst((StringMatcher) null, "anything");
+ assertEquals("abcbccba", sb.toString());
+ sb.replaceFirst(StringMatcherFactory.INSTANCE.noneMatcher(), null);
+ assertEquals("abcbccba", sb.toString());
+ sb.replaceFirst(StringMatcherFactory.INSTANCE.noneMatcher(), "anything");
+ assertEquals("abcbccba", sb.toString());
- sb.append("junit");
- assertEquals(new StringBuilder("junit").toString(), sb.toStringBuilder().toString());
+ sb.replaceFirst(StringMatcherFactory.INSTANCE.charMatcher('x'), "y");
+ assertEquals("abcbccba", sb.toString());
+ sb.replaceFirst(StringMatcherFactory.INSTANCE.charMatcher('a'), "d");
+ assertEquals("dbcbccba", sb.toString());
+ sb.replaceFirst(StringMatcherFactory.INSTANCE.charMatcher('d'), null);
+ assertEquals("bcbccba", sb.toString());
+ sb.replaceFirst(StringMatcherFactory.INSTANCE.stringMatcher("cb"), "-");
+ assertEquals("b-ccba", sb.toString());
+
+ sb = new TextStringBuilder("abcba");
+ sb.replaceFirst(StringMatcherFactory.INSTANCE.charMatcher('b'), "xbx");
+ assertEquals("axbxcba", sb.toString());
+
+ sb = new TextStringBuilder("bb");
+ sb.replaceFirst(StringMatcherFactory.INSTANCE.charMatcher('b'), "xbx");
+ assertEquals("xbxb", sb.toString());
+
+ sb = new TextStringBuilder("A1-A2A3-A4");
+ sb.replaceFirst(A_NUMBER_MATCHER, "***");
+ assertEquals("***-A2A3-A4", sb.toString());
}
// -----------------------------------------------------------------------
@Test
- public void testLang294() {
- final TextStringBuilder sb = new TextStringBuilder("\n%BLAH%\nDo more stuff\neven more stuff\n%BLAH%\n");
- sb.deleteAll("\n%BLAH%");
- assertEquals("\nDo more stuff\neven more stuff\n", sb.toString());
+ public void testReverse() {
+ final TextStringBuilder sb = new TextStringBuilder();
+ assertEquals("", sb.reverse().toString());
+
+ sb.clear().append(true);
+ assertEquals("eurt", sb.reverse().toString());
+ assertEquals("true", sb.reverse().toString());
}
@Test
- public void testIndexOfLang294() {
- final TextStringBuilder sb = new TextStringBuilder("onetwothree");
- sb.deleteFirst("three");
- assertEquals(-1, sb.indexOf("three"));
+ public void testRightString() {
+ final TextStringBuilder sb = new TextStringBuilder("left right");
+ assertEquals("right", sb.rightString(5));
+ assertEquals("", sb.rightString(0));
+ assertEquals("", sb.rightString(-5));
+ assertEquals("left right", sb.rightString(15));
}
// -----------------------------------------------------------------------
@Test
- public void testLang295() {
- final TextStringBuilder sb = new TextStringBuilder("onetwothree");
- sb.deleteFirst("three");
- assertFalse(sb.contains('h'), "The contains(char) method is looking beyond the end of the string");
- assertEquals(-1, sb.indexOf('h'), "The indexOf(char) method is looking beyond the end of the string");
+ public void testSetCharAt() {
+ final TextStringBuilder sb = new TextStringBuilder();
+ assertThrows(IndexOutOfBoundsException.class, () -> sb.setCharAt(0, 'f'));
+ assertThrows(IndexOutOfBoundsException.class, () -> sb.setCharAt(-1, 'f'));
+ sb.append("foo");
+ sb.setCharAt(0, 'b');
+ sb.setCharAt(1, 'a');
+ sb.setCharAt(2, 'r');
+ assertThrows(IndexOutOfBoundsException.class, () -> sb.setCharAt(3, '!'));
+ assertEquals("bar", sb.toString());
}
- // -----------------------------------------------------------------------
@Test
- public void testLang412Right() {
+ public void testSetLength() {
final TextStringBuilder sb = new TextStringBuilder();
- sb.appendFixedWidthPadRight(null, 10, '*');
- assertEquals("**********", sb.toString(), "Failed to invoke appendFixedWidthPadRight correctly");
+ sb.append("Hello");
+ sb.setLength(2); // shorten
+ assertEquals("He", sb.toString());
+ sb.setLength(2); // no change
+ assertEquals("He", sb.toString());
+ sb.setLength(3); // lengthen
+ assertEquals("He\0", sb.toString());
+
+ assertThrows(IndexOutOfBoundsException.class, () -> sb.setLength(-1));
}
+ // -----------------------------------------------------------------------
@Test
- public void testLang412Left() {
+ public void testSize() {
final TextStringBuilder sb = new TextStringBuilder();
- sb.appendFixedWidthPadLeft(null, 10, '*');
- assertEquals("**********", sb.toString(), "Failed to invoke appendFixedWidthPadLeft correctly");
- }
+ assertEquals(0, sb.size());
- @Test
- public void testAsBuilder() {
- final TextStringBuilder sb = new TextStringBuilder().appendAll("Lorem", " ", "ipsum", " ", "dolor");
- assertEquals(sb.toString(), sb.build());
+ sb.append("Hello");
+ assertEquals(5, sb.size());
}
// -----------------------------------------------------------------------
@Test
- public void testAppendCharBuffer() {
- final TextStringBuilder sb1 = new TextStringBuilder();
- final CharBuffer buf = CharBuffer.allocate(10);
- buf.append("0123456789");
- buf.flip();
- sb1.append(buf);
- assertEquals("0123456789", sb1.toString());
-
- final TextStringBuilder sb2 = new TextStringBuilder();
- sb2.append(buf, 1, 8);
- assertEquals("12345678", sb2.toString());
+ public void testStartsWith() {
+ final TextStringBuilder sb = new TextStringBuilder();
+ assertFalse(sb.startsWith("a"));
+ assertFalse(sb.startsWith(null));
+ assertTrue(sb.startsWith(""));
+ sb.append("abc");
+ assertTrue(sb.startsWith("a"));
+ assertTrue(sb.startsWith("ab"));
+ assertTrue(sb.startsWith("abc"));
+ assertFalse(sb.startsWith("cba"));
}
// -----------------------------------------------------------------------
@Test
- public void testAppendToWriter() throws Exception {
- final TextStringBuilder sb = new TextStringBuilder("1234567890");
- final StringWriter writer = new StringWriter();
- writer.append("Test ");
-
- sb.appendTo(writer);
+ public void testSubSequenceIntInt() {
+ final TextStringBuilder sb = new TextStringBuilder("hello goodbye");
+ // Start index is negative
+ assertThrows(IndexOutOfBoundsException.class, () -> sb.subSequence(-1, 5));
- assertEquals("Test 1234567890", writer.toString());
- }
+ // End index is negative
+ assertThrows(IndexOutOfBoundsException.class, () -> sb.subSequence(2, -1));
- @Test
- public void testAppendToStringBuilder() throws Exception {
- final TextStringBuilder sb = new TextStringBuilder("1234567890");
- final StringBuilder builder = new StringBuilder("Test ");
+ // End index greater than length()
+ assertThrows(IndexOutOfBoundsException.class, () -> sb.subSequence(2, sb.length() + 1));
- sb.appendTo(builder);
+ // Start index greater then end index
+ assertThrows(IndexOutOfBoundsException.class, () -> sb.subSequence(3, 2));
- assertEquals("Test 1234567890", builder.toString());
+ // Normal cases
+ assertEquals("hello", sb.subSequence(0, 5));
+ assertEquals("hello goodbye".subSequence(0, 6), sb.subSequence(0, 6));
+ assertEquals("goodbye", sb.subSequence(6, 13));
+ assertEquals("hello goodbye".subSequence(6, 13), sb.subSequence(6, 13));
}
@Test
- public void testAppendToStringBuffer() throws Exception {
- final TextStringBuilder sb = new TextStringBuilder("1234567890");
- final StringBuffer buffer = new StringBuffer("Test ");
+ public void testSubstringInt() {
+ final TextStringBuilder sb = new TextStringBuilder("hello goodbye");
+ assertEquals("goodbye", sb.substring(6));
+ assertEquals("hello goodbye".substring(6), sb.substring(6));
+ assertEquals("hello goodbye", sb.substring(0));
+ assertEquals("hello goodbye".substring(0), sb.substring(0));
+ assertThrows(IndexOutOfBoundsException.class, () -> sb.substring(-1));
- sb.appendTo(buffer);
+ assertThrows(IndexOutOfBoundsException.class, () -> sb.substring(15));
- assertEquals("Test 1234567890", buffer.toString());
}
@Test
- public void testAppendToCharBuffer() throws Exception {
- final TextStringBuilder sb = new TextStringBuilder("1234567890");
- final String text = "Test ";
- final CharBuffer buffer = CharBuffer.allocate(sb.size() + text.length());
- buffer.put(text);
+ public void testSubstringIntInt() {
+ final TextStringBuilder sb = new TextStringBuilder("hello goodbye");
+ assertEquals("hello", sb.substring(0, 5));
+ assertEquals("hello goodbye".substring(0, 6), sb.substring(0, 6));
- sb.appendTo(buffer);
+ assertEquals("goodbye", sb.substring(6, 13));
+ assertEquals("hello goodbye".substring(6, 13), sb.substring(6, 13));
- buffer.flip();
- assertEquals("Test 1234567890", buffer.toString());
+ assertEquals("goodbye", sb.substring(6, 20));
+
+ assertThrows(IndexOutOfBoundsException.class, () -> sb.substring(-1, 5));
+
+ assertThrows(IndexOutOfBoundsException.class, () -> sb.substring(15, 20));
}
@Test
- public void testAppendCharBufferNull() throws Exception {
- final TextStringBuilder sb = new TextStringBuilder("1234567890");
- final CharBuffer buffer = null;
- sb.append(buffer);
- assertEquals("1234567890", sb.toString());
+ public void testToStringIntInt() {
+ final TextStringBuilder sb = new TextStringBuilder("hello goodbye");
+ assertEquals("hello", sb.substring(0, 5));
+ assertEquals("hello goodbye".substring(0, 6), sb.toString(0, 6));
- final TextStringBuilder sb1 = new TextStringBuilder("1234567890");
- final CharBuffer buffer1 = null;
- sb.append(buffer1, 0, 0);
- assertEquals("1234567890", sb1.toString());
+ assertEquals("goodbye", sb.toString(6, 7));
+
+ assertThrows(IndexOutOfBoundsException.class, () -> sb.toString(-1, 5));
+
+ assertThrows(IndexOutOfBoundsException.class, () -> sb.toString(15, 20));
}
+ // -----------------------------------------------------------------------
@Test
- public void testAppendCharBufferException() throws Exception {
- final TextStringBuilder sb = new TextStringBuilder("1234567890");
- final String text = "Test";
- final CharBuffer buffer = CharBuffer.allocate(sb.size() + text.length());
- buffer.put(text);
- buffer.flip();
- try {
- sb.append(buffer, -1, 12);
- } catch (final StringIndexOutOfBoundsException e) {
- assertEquals("startIndex must be valid", e.getMessage());
- }
+ public void testToCharArray() {
+ final TextStringBuilder sb = new TextStringBuilder();
+ assertEquals(0, sb.toCharArray().length);
- try {
- sb.append(buffer, 0, -1);
- } catch (final StringIndexOutOfBoundsException e) {
- assertEquals("length must be valid", e.getMessage());
- }
+ char[] a = sb.toCharArray();
+ assertNotNull(a, "toCharArray() result is null");
+ assertEquals(0, a.length, "toCharArray() result is too large");
- sb.append(buffer);
- assertEquals("1234567890Test", sb.toString());
+ sb.append("junit");
+ a = sb.toCharArray();
+ assertEquals(5, a.length, "toCharArray() result incorrect length");
+ assertTrue(Arrays.equals("junit".toCharArray(), a), "toCharArray() result does not match");
}
@Test
- public void testAppendCharSequence() {
- final CharSequence obj0 = null;
- final CharSequence obj1 = new TextStringBuilder("test1");
- final CharSequence obj2 = new StringBuilder("test2");
- final CharSequence obj3 = new StringBuffer("test3");
- final CharBuffer obj4 = CharBuffer.wrap("test4".toCharArray());
+ public void testToCharArrayIntInt() {
+ final TextStringBuilder sb = new TextStringBuilder();
+ assertEquals(0, sb.toCharArray(0, 0).length);
- final TextStringBuilder sb0 = new TextStringBuilder();
- assertEquals("", sb0.append(obj0).toString());
+ sb.append("junit");
+ char[] a = sb.toCharArray(0, 20); // too large test
+ assertEquals(5, a.length, "toCharArray(int,int) result incorrect length");
+ assertTrue(Arrays.equals("junit".toCharArray(), a), "toCharArray(int,int) result does not match");
- final TextStringBuilder sb1 = new TextStringBuilder();
- assertEquals("test1", sb1.append(obj1).toString());
+ a = sb.toCharArray(0, 4);
+ assertEquals(4, a.length, "toCharArray(int,int) result incorrect length");
+ assertTrue(Arrays.equals("juni".toCharArray(), a), "toCharArray(int,int) result does not match");
- final TextStringBuilder sb2 = new TextStringBuilder();
- assertEquals("test2", sb2.append(obj2).toString());
+ a = sb.toCharArray(0, 4);
+ assertEquals(4, a.length, "toCharArray(int,int) result incorrect length");
+ assertTrue(Arrays.equals("juni".toCharArray(), a), "toCharArray(int,int) result does not match");
- final TextStringBuilder sb3 = new TextStringBuilder();
- assertEquals("test3", sb3.append(obj3).toString());
+ a = sb.toCharArray(0, 1);
+ assertNotNull(a, "toCharArray(int,int) result is null");
- final TextStringBuilder sb4 = new TextStringBuilder();
- assertEquals("test4", sb4.append(obj4).toString());
+ assertThrows(IndexOutOfBoundsException.class, () -> sb.toCharArray(-1, 5));
- final TextStringBuilder sb5 = new TextStringBuilder();
- assertEquals("", sb5.append(obj0, 0, 0).toString());
+ assertThrows(IndexOutOfBoundsException.class, () -> sb.toCharArray(6, 5));
}
+ // -----------------------------------------------------------------------
@Test
- public void testAppendStringBuilderNull() {
- final TextStringBuilder sb1 = new TextStringBuilder();
- final StringBuilder b = null;
- assertEquals("", sb1.append(b).toString());
-
- final TextStringBuilder sb2 = new TextStringBuilder();
- assertEquals("", sb2.append(b, 0, 0).toString());
+ public void testToString() {
+ final TextStringBuilder sb = new TextStringBuilder("abc");
+ assertEquals("abc", sb.toString());
}
+ // -----------------------------------------------------------------------
@Test
- public void testAppendln() {
- final TextStringBuilder sb1 = new TextStringBuilder();
- final char ch = 'c';
- assertEquals("c" + System.lineSeparator(), sb1.appendln(ch).toString());
+ public void testToStringBuffer() {
+ final TextStringBuilder sb = new TextStringBuilder();
+ assertEquals(new StringBuffer().toString(), sb.toStringBuffer().toString());
+
+ sb.append("junit");
+ assertEquals(new StringBuffer("junit").toString(), sb.toStringBuffer().toString());
}
+ // -----------------------------------------------------------------------
@Test
- public void testAppendTakingTwoIntsWithZeroThrowsStringIndexOutOfBoundsException() {
- assertThatExceptionOfType(StringIndexOutOfBoundsException.class).isThrownBy(() -> {
- final Charset charset = Charset.defaultCharset();
- final ByteBuffer byteBuffer = charset.encode("end < start");
- final CharBuffer charBuffer = charset.decode(byteBuffer);
+ public void testToStringBuilder() {
+ final TextStringBuilder sb = new TextStringBuilder();
+ assertEquals(new StringBuilder().toString(), sb.toStringBuilder().toString());
- new TextStringBuilder(630).append(charBuffer, 0, 630);
- });
+ sb.append("junit");
+ assertEquals(new StringBuilder("junit").toString(), sb.toStringBuilder().toString());
}
+ // -----------------------------------------------------------------------
@Test
- public void testAppendTakingTwoIntsWithIndexOutOfBoundsThrowsStringIndexOutOfBoundsExceptionTwo() {
- assertThatExceptionOfType(StringIndexOutOfBoundsException.class).isThrownBy(() -> {
- final Charset charset = Charset.defaultCharset();
- final ByteBuffer byteBuffer = charset.encode("asdf");
- final CharBuffer charBuffer = charset.decode(byteBuffer);
+ public void testTrim() {
+ final TextStringBuilder sb = new TextStringBuilder();
+ assertEquals("", sb.reverse().toString());
- new TextStringBuilder().append(charBuffer, 933, 654);
- });
- }
+ sb.clear().append(" \u0000 ");
+ assertEquals("", sb.trim().toString());
- @Test
- public void testDeleteCharAtWithNegative() {
- assertThatExceptionOfType(StringIndexOutOfBoundsException.class).isThrownBy(() -> {
- new TextStringBuilder().deleteCharAt((-1258));
- });
+ sb.clear().append(" \u0000 a b c");
+ assertEquals("a b c", sb.trim().toString());
+
+ sb.clear().append("a b c \u0000 ");
+ assertEquals("a b c", sb.trim().toString());
+
+ sb.clear().append(" \u0000 a b c \u0000 ");
+ assertEquals("a b c", sb.trim().toString());
+
+ sb.clear().append("a b c");
+ assertEquals("a b c", sb.trim().toString());
}
}