You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@commons.apache.org by ch...@apache.org on 2017/02/10 13:17:18 UTC

[05/25] [text] chore: update packages back to org.apache.commons.text.*

http://git-wip-us.apache.org/repos/asf/commons-text/blob/c7cf533d/src/test/java/org/apache/commons/text/beta/StrBuilderTest.java
----------------------------------------------------------------------
diff --git a/src/test/java/org/apache/commons/text/beta/StrBuilderTest.java b/src/test/java/org/apache/commons/text/beta/StrBuilderTest.java
deleted file mode 100644
index 91700f0..0000000
--- a/src/test/java/org/apache/commons/text/beta/StrBuilderTest.java
+++ /dev/null
@@ -1,2007 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- * 
- *      http://www.apache.org/licenses/LICENSE-2.0
- * 
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.commons.text.beta;
-
-import org.junit.Test;
-import static org.junit.Assert.*;
-
-import java.io.IOException;
-import java.io.Reader;
-import java.io.StringReader;
-import java.io.StringWriter;
-import java.io.Writer;
-import java.nio.CharBuffer;
-import java.util.Arrays;
-
-/**
- * Unit tests for {@link StrBuilder}.
- */
-public class StrBuilderTest {
-
-    //-----------------------------------------------------------------------
-    @Test
-    public void testConstructors() {
-        final StrBuilder sb0 = new StrBuilder();
-        assertEquals(32, sb0.capacity());
-        assertEquals(0, sb0.length());
-        assertEquals(0, sb0.size());
-
-        final StrBuilder sb1 = new StrBuilder(32);
-        assertEquals(32, sb1.capacity());
-        assertEquals(0, sb1.length());
-        assertEquals(0, sb1.size());
-
-        final StrBuilder sb2 = new StrBuilder(0);
-        assertEquals(32, sb2.capacity());
-        assertEquals(0, sb2.length());
-        assertEquals(0, sb2.size());
-
-        final StrBuilder sb3 = new StrBuilder(-1);
-        assertEquals(32, sb3.capacity());
-        assertEquals(0, sb3.length());
-        assertEquals(0, sb3.size());
-
-        final StrBuilder sb4 = new StrBuilder(1);
-        assertEquals(1, sb4.capacity());
-        assertEquals(0, sb4.length());
-        assertEquals(0, sb4.size());
-
-        final StrBuilder sb5 = new StrBuilder((String) null);
-        assertEquals(32, sb5.capacity());
-        assertEquals(0, sb5.length());
-        assertEquals(0, sb5.size());
-
-        final StrBuilder sb6 = new StrBuilder("");
-        assertEquals(32, sb6.capacity());
-        assertEquals(0, sb6.length());
-        assertEquals(0, sb6.size());
-
-        final StrBuilder sb7 = new StrBuilder("foo");
-        assertEquals(35, sb7.capacity());
-        assertEquals(3, sb7.length());
-        assertEquals(3, sb7.size());
-    }
-
-    //-----------------------------------------------------------------------
-    @Test
-    public void testChaining() {
-        final StrBuilder sb = new StrBuilder();
-        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 testReadFromReader() throws Exception {
-        String s = "";
-        for (int i = 0; i < 100; ++i) {
-            final StrBuilder sb = new StrBuilder();
-            final int len = sb.readFrom(new StringReader(s));
-
-            assertEquals(s.length(), len);
-            assertEquals(s, sb.toString());
-
-            s += Integer.toString(i);
-        }
-    }
-
-    @Test
-    public void testReadFromReaderAppendsToEnd() throws Exception {
-        final StrBuilder sb = new StrBuilder("Test");
-        sb.readFrom(new StringReader(" 123"));
-        assertEquals("Test 123", sb.toString());
-    }
-
-    @Test
-    public void testReadFromCharBuffer() throws Exception {
-        String s = "";
-        for (int i = 0; i < 100; ++i) {
-            final StrBuilder sb = new StrBuilder();
-            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 StrBuilder sb = new StrBuilder("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 StrBuilder sb = new StrBuilder();
-            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 StrBuilder sb = new StrBuilder("Test");
-        sb.readFrom(new MockReadable(" 123"));
-        assertEquals("Test 123", sb.toString());
-    }
-
-    private static class MockReadable implements Readable {
-
-        private final CharBuffer src;
-
-        public MockReadable(final String src) {
-            this.src = CharBuffer.wrap(src);
-        }
-
-        @Override
-        public int read(final CharBuffer cb) throws IOException {
-            return src.read(cb);
-        }
-    }
-
-    //-----------------------------------------------------------------------
-    @Test
-    public void testGetSetNewLineText() {
-        final StrBuilder sb = new StrBuilder();
-        assertEquals(null, sb.getNewLineText());
-
-        sb.setNewLineText("#");
-        assertEquals("#", sb.getNewLineText());
-
-        sb.setNewLineText("");
-        assertEquals("", sb.getNewLineText());
-
-        sb.setNewLineText((String) null);
-        assertEquals(null, sb.getNewLineText());
-    }
-
-    //-----------------------------------------------------------------------
-    @Test
-    public void testGetSetNullText() {
-        final StrBuilder sb = new StrBuilder();
-        assertEquals(null, sb.getNullText());
-
-        sb.setNullText("null");
-        assertEquals("null", sb.getNullText());
-
-        sb.setNullText("");
-        assertEquals(null, sb.getNullText());
-
-        sb.setNullText("NULL");
-        assertEquals("NULL", sb.getNullText());
-
-        sb.setNullText((String) null);
-        assertEquals(null, sb.getNullText());
-    }
-
-    //-----------------------------------------------------------------------
-    @Test
-    public void testCapacityAndLength() {
-        final StrBuilder sb = new StrBuilder();
-        assertEquals(32, sb.capacity());
-        assertEquals(0, sb.length());
-        assertEquals(0, sb.size());
-        assertTrue(sb.isEmpty());
-
-        sb.minimizeCapacity();
-        assertEquals(0, sb.capacity());
-        assertEquals(0, sb.length());
-        assertEquals(0, sb.size());
-        assertTrue(sb.isEmpty());
-
-        sb.ensureCapacity(32);
-        assertTrue(sb.capacity() >= 32);
-        assertEquals(0, sb.length());
-        assertEquals(0, sb.size());
-        assertTrue(sb.isEmpty());
-
-        sb.append("foo");
-        assertTrue(sb.capacity() >= 32);
-        assertEquals(3, sb.length());
-        assertEquals(3, sb.size());
-        assertTrue(sb.isEmpty() == false);
-
-        sb.clear();
-        assertTrue(sb.capacity() >= 32);
-        assertEquals(0, sb.length());
-        assertEquals(0, sb.size());
-        assertTrue(sb.isEmpty());
-
-        sb.append("123456789012345678901234567890123");
-        assertTrue(sb.capacity() > 32);
-        assertEquals(33, sb.length());
-        assertEquals(33, sb.size());
-        assertTrue(sb.isEmpty() == false);
-
-        sb.ensureCapacity(16);
-        assertTrue(sb.capacity() > 16);
-        assertEquals(33, sb.length());
-        assertEquals(33, sb.size());
-        assertTrue(sb.isEmpty() == false);
-
-        sb.minimizeCapacity();
-        assertEquals(33, sb.capacity());
-        assertEquals(33, sb.length());
-        assertEquals(33, sb.size());
-        assertTrue(sb.isEmpty() == false);
-
-        try {
-            sb.setLength(-1);
-            fail("setLength(-1) expected StringIndexOutOfBoundsException");
-        } catch (final IndexOutOfBoundsException e) {
-            // expected
-        }
-
-        sb.setLength(33);
-        assertEquals(33, sb.capacity());
-        assertEquals(33, sb.length());
-        assertEquals(33, sb.size());
-        assertTrue(sb.isEmpty() == false);
-
-        sb.setLength(16);
-        assertTrue(sb.capacity() >= 16);
-        assertEquals(16, sb.length());
-        assertEquals(16, sb.size());
-        assertEquals("1234567890123456", sb.toString());
-        assertTrue(sb.isEmpty() == false);
-
-        sb.setLength(32);
-        assertTrue(sb.capacity() >= 32);
-        assertEquals(32, sb.length());
-        assertEquals(32, sb.size());
-        assertEquals("1234567890123456\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0", sb.toString());
-        assertTrue(sb.isEmpty() == false);
-
-        sb.setLength(0);
-        assertTrue(sb.capacity() >= 32);
-        assertEquals(0, sb.length());
-        assertEquals(0, sb.size());
-        assertTrue(sb.isEmpty());
-    }
-
-    //-----------------------------------------------------------------------
-    @Test
-    public void testLength() {
-        final StrBuilder sb = new StrBuilder();
-        assertEquals(0, sb.length());
-        
-        sb.append("Hello");
-        assertEquals(5, sb.length());
-    }
-
-    @Test
-    public void testSetLength() {
-        final StrBuilder sb = new StrBuilder();
-        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());
-
-        try {
-            sb.setLength(-1);
-            fail("setLength(-1) expected StringIndexOutOfBoundsException");
-        } catch (final IndexOutOfBoundsException e) {
-            // expected
-        }
-    }
-
-    //-----------------------------------------------------------------------
-    @Test
-    public void testCapacity() {
-        final StrBuilder sb = new StrBuilder();
-        assertEquals(sb.buffer.length, sb.capacity());
-        
-        sb.append("HelloWorldHelloWorldHelloWorldHelloWorld");
-        assertEquals(sb.buffer.length, sb.capacity());
-    }
-
-    @Test
-    public void testEnsureCapacity() {
-        final StrBuilder sb = new StrBuilder();
-        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 testMinimizeCapacity() {
-        final StrBuilder sb = new StrBuilder();
-        sb.minimizeCapacity();
-        assertEquals(0, sb.capacity());
-        
-        sb.append("HelloWorld");
-        sb.minimizeCapacity();
-        assertEquals(10, sb.capacity());
-    }
-
-    //-----------------------------------------------------------------------
-    @Test
-    public void testSize() {
-        final StrBuilder sb = new StrBuilder();
-        assertEquals(0, sb.size());
-        
-        sb.append("Hello");
-        assertEquals(5, sb.size());
-    }
-
-    @Test
-    public void testIsEmpty() {
-        final StrBuilder sb = new StrBuilder();
-        assertTrue(sb.isEmpty());
-        
-        sb.append("Hello");
-        assertFalse(sb.isEmpty());
-        
-        sb.clear();
-        assertTrue(sb.isEmpty());
-    }
-
-    @Test
-    public void testClear() {
-        final StrBuilder sb = new StrBuilder();
-        sb.append("Hello");
-        sb.clear();
-        assertEquals(0, sb.length());
-        assertTrue(sb.buffer.length >= 5);
-    }
-
-    //-----------------------------------------------------------------------
-    @Test
-    public void testCharAt() {
-        final StrBuilder sb = new StrBuilder();
-        try {
-            sb.charAt(0);
-            fail("charAt(0) expected IndexOutOfBoundsException");
-        } catch (final IndexOutOfBoundsException e) {
-            // expected
-        }
-        try {
-            sb.charAt(-1);
-            fail("charAt(-1) expected IndexOutOfBoundsException");
-        } catch (final IndexOutOfBoundsException e) {
-            // expected
-        }
-        sb.append("foo");
-        assertEquals('f', sb.charAt(0));
-        assertEquals('o', sb.charAt(1));
-        assertEquals('o', sb.charAt(2));
-        try {
-            sb.charAt(-1);
-            fail("charAt(-1) expected IndexOutOfBoundsException");
-        } catch (final IndexOutOfBoundsException e) {
-            // expected
-        }
-        try {
-            sb.charAt(3);
-            fail("charAt(3) expected IndexOutOfBoundsException");
-        } catch (final IndexOutOfBoundsException e) {
-            // expected
-        }
-    }
-
-    //-----------------------------------------------------------------------
-    @Test
-    public void testSetCharAt() {
-        final StrBuilder sb = new StrBuilder();
-        try {
-            sb.setCharAt(0, 'f');
-            fail("setCharAt(0,) expected IndexOutOfBoundsException");
-        } catch (final IndexOutOfBoundsException e) {
-            // expected
-        }
-        try {
-            sb.setCharAt(-1, 'f');
-            fail("setCharAt(-1,) expected IndexOutOfBoundsException");
-        } catch (final IndexOutOfBoundsException e) {
-            // expected
-        }
-        sb.append("foo");
-        sb.setCharAt(0, 'b');
-        sb.setCharAt(1, 'a');
-        sb.setCharAt(2, 'r');
-        try {
-            sb.setCharAt(3, '!');
-            fail("setCharAt(3,) expected IndexOutOfBoundsException");
-        } catch (final IndexOutOfBoundsException e) {
-            // expected
-        }
-        assertEquals("bar", sb.toString());
-    }
-
-    //-----------------------------------------------------------------------
-    @Test
-    public void testDeleteCharAt() {
-        final StrBuilder sb = new StrBuilder("abc");
-        sb.deleteCharAt(0);
-        assertEquals("bc", sb.toString()); 
-        
-        try {
-            sb.deleteCharAt(1000);
-            fail("Expected IndexOutOfBoundsException");
-        } catch (final IndexOutOfBoundsException e) {}
-    }
-
-    //-----------------------------------------------------------------------
-    @Test
-    public void testToCharArray() {
-        final StrBuilder sb = new StrBuilder();
-        assertEquals(0, sb.toCharArray().length);
-
-        char[] a = sb.toCharArray();
-        assertNotNull("toCharArray() result is null", a);
-        assertEquals("toCharArray() result is too large", 0, a.length);
-
-        sb.append("junit");
-        a = sb.toCharArray();
-        assertEquals("toCharArray() result incorrect length", 5, a.length);
-        assertTrue("toCharArray() result does not match", Arrays.equals("junit".toCharArray(), a));
-    }
-
-    @Test
-    public void testToCharArrayIntInt() {
-        final StrBuilder sb = new StrBuilder();
-        assertEquals(0, sb.toCharArray(0, 0).length);
-
-        sb.append("junit");
-        char[] a = sb.toCharArray(0, 20); // too large test
-        assertEquals("toCharArray(int,int) result incorrect length", 5, a.length);
-        assertTrue("toCharArray(int,int) result does not match", Arrays.equals("junit".toCharArray(), a));
-
-        a = sb.toCharArray(0, 4);
-        assertEquals("toCharArray(int,int) result incorrect length", 4, a.length);
-        assertTrue("toCharArray(int,int) result does not match", Arrays.equals("juni".toCharArray(), a));
-
-        a = sb.toCharArray(0, 4);
-        assertEquals("toCharArray(int,int) result incorrect length", 4, a.length);
-        assertTrue("toCharArray(int,int) result does not match", Arrays.equals("juni".toCharArray(), a));
-
-        a = sb.toCharArray(0, 1);
-        assertNotNull("toCharArray(int,int) result is null", a);
-
-        try {
-            sb.toCharArray(-1, 5);
-            fail("no string index out of bound on -1");
-        } catch (final IndexOutOfBoundsException e) {
-        }
-
-        try {
-            sb.toCharArray(6, 5);
-            fail("no string index out of bound on -1");
-        } catch (final IndexOutOfBoundsException e) {
-        }
-    }
-
-    @Test
-    public void testGetChars ( ) {
-        final StrBuilder sb = new StrBuilder();
-        
-        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);
-    }
-
-    @Test
-    public void testGetCharsIntIntCharArrayInt( ) {
-        final StrBuilder sb = new StrBuilder();
-               
-        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) {
-        }
-        
-        try {
-            sb.getChars(0,-1,a,0);
-            fail("no exception");
-        }
-        catch (final IndexOutOfBoundsException e) {
-        }
-        
-        try {
-            sb.getChars(0,20,a,0);
-            fail("no exception");
-        }
-        catch (final IndexOutOfBoundsException e) {
-        }
-        
-        try {
-            sb.getChars(4,2,a,0);
-            fail("no exception");
-        }
-        catch (final IndexOutOfBoundsException e) {
-        }
-    }
-
-    //-----------------------------------------------------------------------
-    @Test
-    public void testDeleteIntInt() {
-        StrBuilder sb = new StrBuilder("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()); 
-        
-        try {
-            sb.delete(1, 2);
-            fail("Expected IndexOutOfBoundsException");
-        } catch (final IndexOutOfBoundsException e) {}
-        try {
-            sb.delete(-1, 1);
-            fail("Expected IndexOutOfBoundsException");
-        } catch (final IndexOutOfBoundsException e) {}
-        
-        sb = new StrBuilder("anything");
-        try {
-            sb.delete(2, 1);
-            fail("Expected IndexOutOfBoundsException");
-        } catch (final IndexOutOfBoundsException e) {}
-    }
-
-    //-----------------------------------------------------------------------
-    @Test
-    public void testDeleteAll_char() {
-        StrBuilder sb = new StrBuilder("abcbccba");
-        sb.deleteAll('X');
-        assertEquals("abcbccba", sb.toString());
-        sb.deleteAll('a');
-        assertEquals("bcbccb", sb.toString());
-        sb.deleteAll('c');
-        assertEquals("bbb", sb.toString());
-        sb.deleteAll('b');
-        assertEquals("", sb.toString());
-
-        sb = new StrBuilder("");
-        sb.deleteAll('b');
-        assertEquals("", sb.toString());
-    }
-
-    @Test
-    public void testDeleteFirst_char() {
-        StrBuilder sb = new StrBuilder("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 StrBuilder("");
-        sb.deleteFirst('b');
-        assertEquals("", sb.toString());
-    }
-
-    // -----------------------------------------------------------------------
-    @Test
-    public void testDeleteAll_String() {
-        StrBuilder sb = new StrBuilder("abcbccba");
-        sb.deleteAll((String) null);
-        assertEquals("abcbccba", sb.toString());
-        sb.deleteAll("");
-        assertEquals("abcbccba", sb.toString());
-        
-        sb.deleteAll("X");
-        assertEquals("abcbccba", sb.toString());
-        sb.deleteAll("a");
-        assertEquals("bcbccb", sb.toString());
-        sb.deleteAll("c");
-        assertEquals("bbb", sb.toString());
-        sb.deleteAll("b");
-        assertEquals("", sb.toString());
-
-        sb = new StrBuilder("abcbccba");
-        sb.deleteAll("bc");
-        assertEquals("acba", sb.toString());
-
-        sb = new StrBuilder("");
-        sb.deleteAll("bc");
-        assertEquals("", sb.toString());
-    }
-
-    @Test
-    public void testDeleteFirst_String() {
-        StrBuilder sb = new StrBuilder("abcbccba");
-        sb.deleteFirst((String) null);
-        assertEquals("abcbccba", sb.toString());
-        sb.deleteFirst("");
-        assertEquals("abcbccba", sb.toString());
-
-        sb.deleteFirst("X");
-        assertEquals("abcbccba", sb.toString());
-        sb.deleteFirst("a");
-        assertEquals("bcbccba", sb.toString());
-        sb.deleteFirst("c");
-        assertEquals("bbccba", sb.toString());
-        sb.deleteFirst("b");
-        assertEquals("bccba", sb.toString());
-
-        sb = new StrBuilder("abcbccba");
-        sb.deleteFirst("bc");
-        assertEquals("abccba", sb.toString());
-
-        sb = new StrBuilder("");
-        sb.deleteFirst("bc");
-        assertEquals("", sb.toString());
-    }
-
-    // -----------------------------------------------------------------------
-    @Test
-    public void testDeleteAll_StrMatcher() {
-        StrBuilder sb = new StrBuilder("A0xA1A2yA3");
-        sb.deleteAll((StrMatcher) null);
-        assertEquals("A0xA1A2yA3", sb.toString());
-        sb.deleteAll(A_NUMBER_MATCHER);
-        assertEquals("xy", sb.toString());
-
-        sb = new StrBuilder("Ax1");
-        sb.deleteAll(A_NUMBER_MATCHER);
-        assertEquals("Ax1", sb.toString());
-
-        sb = new StrBuilder("");
-        sb.deleteAll(A_NUMBER_MATCHER);
-        assertEquals("", sb.toString());
-    }
-
-    @Test
-    public void testDeleteFirst_StrMatcher() {
-        StrBuilder sb = new StrBuilder("A0xA1A2yA3");
-        sb.deleteFirst((StrMatcher) null);
-        assertEquals("A0xA1A2yA3", sb.toString());
-        sb.deleteFirst(A_NUMBER_MATCHER);
-        assertEquals("xA1A2yA3", sb.toString());
-
-        sb = new StrBuilder("Ax1");
-        sb.deleteFirst(A_NUMBER_MATCHER);
-        assertEquals("Ax1", sb.toString());
-
-        sb = new StrBuilder("");
-        sb.deleteFirst(A_NUMBER_MATCHER);
-        assertEquals("", sb.toString());
-    }
-
-    // -----------------------------------------------------------------------
-    @Test
-    public void testReplace_int_int_String() {
-        StrBuilder sb = new StrBuilder("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 StrBuilder("atext");
-        sb.replace(1, 1, "ny");
-        assertEquals("anytext", sb.toString());
-        try {
-            sb.replace(2, 1, "anything");
-            fail("Expected IndexOutOfBoundsException");
-        } catch (final IndexOutOfBoundsException e) {}
-        
-        sb = new StrBuilder();
-        try {
-            sb.replace(1, 2, "anything");
-            fail("Expected IndexOutOfBoundsException");
-        } catch (final IndexOutOfBoundsException e) {}
-        try {
-            sb.replace(-1, 1, "anything");
-            fail("Expected IndexOutOfBoundsException");
-        } catch (final IndexOutOfBoundsException e) {}
-    }
-
-    //-----------------------------------------------------------------------
-    @Test
-    public void testReplaceAll_char_char() {
-        final StrBuilder sb = new StrBuilder("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());
-    }
-
-    //-----------------------------------------------------------------------
-    @Test
-    public void testReplaceFirst_char_char() {
-        final StrBuilder sb = new StrBuilder("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 testReplaceAll_String_String() {
-        StrBuilder sb = new StrBuilder("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());
-        
-        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());
-        
-        sb = new StrBuilder("abcba");
-        sb.replaceAll("b", "xbx");
-        assertEquals("axbxcxbxa", sb.toString());
-        
-        sb = new StrBuilder("bb");
-        sb.replaceAll("b", "xbx");
-        assertEquals("xbxxbx", sb.toString());
-    }
-
-    @Test
-    public void testReplaceFirst_String_String() {
-        StrBuilder sb = new StrBuilder("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());
-        
-        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 = new StrBuilder("abcba");
-        sb.replaceFirst("b", "xbx");
-        assertEquals("axbxcba", sb.toString());
-        
-        sb = new StrBuilder("bb");
-        sb.replaceFirst("b", "xbx");
-        assertEquals("xbxb", sb.toString());
-    }
-
-    //-----------------------------------------------------------------------
-    @Test
-    public void testReplaceAll_StrMatcher_String() {
-        StrBuilder sb = new StrBuilder("abcbccba");
-        sb.replaceAll((StrMatcher) null, null);
-        assertEquals("abcbccba", sb.toString());
-        sb.replaceAll((StrMatcher) null, "anything");
-        assertEquals("abcbccba", sb.toString());
-        sb.replaceAll(StrMatcher.noneMatcher(), null);
-        assertEquals("abcbccba", sb.toString());
-        sb.replaceAll(StrMatcher.noneMatcher(), "anything");
-        assertEquals("abcbccba", sb.toString());
-        
-        sb.replaceAll(StrMatcher.charMatcher('x'), "y");
-        assertEquals("abcbccba", sb.toString());
-        sb.replaceAll(StrMatcher.charMatcher('a'), "d");
-        assertEquals("dbcbccbd", sb.toString());
-        sb.replaceAll(StrMatcher.charMatcher('d'), null);
-        assertEquals("bcbccb", sb.toString());
-        sb.replaceAll(StrMatcher.stringMatcher("cb"), "-");
-        assertEquals("b-c-", sb.toString());
-        
-        sb = new StrBuilder("abcba");
-        sb.replaceAll(StrMatcher.charMatcher('b'), "xbx");
-        assertEquals("axbxcxbxa", sb.toString());
-        
-        sb = new StrBuilder("bb");
-        sb.replaceAll(StrMatcher.charMatcher('b'), "xbx");
-        assertEquals("xbxxbx", sb.toString());
-        
-        sb = new StrBuilder("A1-A2A3-A4");
-        sb.replaceAll(A_NUMBER_MATCHER, "***");
-        assertEquals("***-******-***", sb.toString());
-
-        sb = new StrBuilder("Dear X, hello X.");
-        sb.replaceAll(StrMatcher.stringMatcher("X"), "012345678901234567");
-        assertEquals("Dear 012345678901234567, hello 012345678901234567.", sb.toString());
-    }
-
-    @Test
-    public void testReplaceFirst_StrMatcher_String() {
-        StrBuilder sb = new StrBuilder("abcbccba");
-        sb.replaceFirst((StrMatcher) null, null);
-        assertEquals("abcbccba", sb.toString());
-        sb.replaceFirst((StrMatcher) null, "anything");
-        assertEquals("abcbccba", sb.toString());
-        sb.replaceFirst(StrMatcher.noneMatcher(), null);
-        assertEquals("abcbccba", sb.toString());
-        sb.replaceFirst(StrMatcher.noneMatcher(), "anything");
-        assertEquals("abcbccba", sb.toString());
-        
-        sb.replaceFirst(StrMatcher.charMatcher('x'), "y");
-        assertEquals("abcbccba", sb.toString());
-        sb.replaceFirst(StrMatcher.charMatcher('a'), "d");
-        assertEquals("dbcbccba", sb.toString());
-        sb.replaceFirst(StrMatcher.charMatcher('d'), null);
-        assertEquals("bcbccba", sb.toString());
-        sb.replaceFirst(StrMatcher.stringMatcher("cb"), "-");
-        assertEquals("b-ccba", sb.toString());
-        
-        sb = new StrBuilder("abcba");
-        sb.replaceFirst(StrMatcher.charMatcher('b'), "xbx");
-        assertEquals("axbxcba", sb.toString());
-        
-        sb = new StrBuilder("bb");
-        sb.replaceFirst(StrMatcher.charMatcher('b'), "xbx");
-        assertEquals("xbxb", sb.toString());
-        
-        sb = new StrBuilder("A1-A2A3-A4");
-        sb.replaceFirst(A_NUMBER_MATCHER, "***");
-        assertEquals("***-A2A3-A4", sb.toString());
-    }
-
-    //-----------------------------------------------------------------------
-    @Test
-    public void testReplace_StrMatcher_String_int_int_int_VaryMatcher() {
-        StrBuilder sb = new StrBuilder("abcbccba");
-        sb.replace((StrMatcher) null, "x", 0, sb.length(), -1);
-        assertEquals("abcbccba", sb.toString());
-        
-        sb.replace(StrMatcher.charMatcher('a'), "x", 0, sb.length(), -1);
-        assertEquals("xbcbccbx", sb.toString());
-        
-        sb.replace(StrMatcher.stringMatcher("cb"), "x", 0, sb.length(), -1);
-        assertEquals("xbxcxx", sb.toString());
-        
-        sb = new StrBuilder("A1-A2A3-A4");
-        sb.replace(A_NUMBER_MATCHER, "***", 0, sb.length(), -1);
-        assertEquals("***-******-***", sb.toString());
-        
-        sb = new StrBuilder();
-        sb.replace(A_NUMBER_MATCHER, "***", 0, sb.length(), -1);
-        assertEquals("", sb.toString());
-    }
-
-    @Test
-    public void testReplace_StrMatcher_String_int_int_int_VaryReplace() {
-        StrBuilder sb = new StrBuilder("abcbccba");
-        sb.replace(StrMatcher.stringMatcher("cb"), "cb", 0, sb.length(), -1);
-        assertEquals("abcbccba", sb.toString());
-        
-        sb = new StrBuilder("abcbccba");
-        sb.replace(StrMatcher.stringMatcher("cb"), "-", 0, sb.length(), -1);
-        assertEquals("ab-c-a", sb.toString());
-        
-        sb = new StrBuilder("abcbccba");
-        sb.replace(StrMatcher.stringMatcher("cb"), "+++", 0, sb.length(), -1);
-        assertEquals("ab+++c+++a", sb.toString());
-        
-        sb = new StrBuilder("abcbccba");
-        sb.replace(StrMatcher.stringMatcher("cb"), "", 0, sb.length(), -1);
-        assertEquals("abca", sb.toString());
-        
-        sb = new StrBuilder("abcbccba");
-        sb.replace(StrMatcher.stringMatcher("cb"), null, 0, sb.length(), -1);
-        assertEquals("abca", sb.toString());
-    }
-
-    @Test
-    public void testReplace_StrMatcher_String_int_int_int_VaryStartIndex() {
-        StrBuilder sb = new StrBuilder("aaxaaaayaa");
-        sb.replace(StrMatcher.stringMatcher("aa"), "-", 0, sb.length(), -1);
-        assertEquals("-x--y-", sb.toString());
-        
-        sb = new StrBuilder("aaxaaaayaa");
-        sb.replace(StrMatcher.stringMatcher("aa"), "-", 1, sb.length(), -1);
-        assertEquals("aax--y-", sb.toString());
-        
-        sb = new StrBuilder("aaxaaaayaa");
-        sb.replace(StrMatcher.stringMatcher("aa"), "-", 2, sb.length(), -1);
-        assertEquals("aax--y-", sb.toString());
-        
-        sb = new StrBuilder("aaxaaaayaa");
-        sb.replace(StrMatcher.stringMatcher("aa"), "-", 3, sb.length(), -1);
-        assertEquals("aax--y-", sb.toString());
-        
-        sb = new StrBuilder("aaxaaaayaa");
-        sb.replace(StrMatcher.stringMatcher("aa"), "-", 4, sb.length(), -1);
-        assertEquals("aaxa-ay-", sb.toString());
-        
-        sb = new StrBuilder("aaxaaaayaa");
-        sb.replace(StrMatcher.stringMatcher("aa"), "-", 5, sb.length(), -1);
-        assertEquals("aaxaa-y-", sb.toString());
-        
-        sb = new StrBuilder("aaxaaaayaa");
-        sb.replace(StrMatcher.stringMatcher("aa"), "-", 6, sb.length(), -1);
-        assertEquals("aaxaaaay-", sb.toString());
-        
-        sb = new StrBuilder("aaxaaaayaa");
-        sb.replace(StrMatcher.stringMatcher("aa"), "-", 7, sb.length(), -1);
-        assertEquals("aaxaaaay-", sb.toString());
-        
-        sb = new StrBuilder("aaxaaaayaa");
-        sb.replace(StrMatcher.stringMatcher("aa"), "-", 8, sb.length(), -1);
-        assertEquals("aaxaaaay-", sb.toString());
-        
-        sb = new StrBuilder("aaxaaaayaa");
-        sb.replace(StrMatcher.stringMatcher("aa"), "-", 9, sb.length(), -1);
-        assertEquals("aaxaaaayaa", sb.toString());
-        
-        sb = new StrBuilder("aaxaaaayaa");
-        sb.replace(StrMatcher.stringMatcher("aa"), "-", 10, sb.length(), -1);
-        assertEquals("aaxaaaayaa", sb.toString());
-        
-        sb = new StrBuilder("aaxaaaayaa");
-        try {
-            sb.replace(StrMatcher.stringMatcher("aa"), "-", 11, sb.length(), -1);
-            fail();
-        } catch (final IndexOutOfBoundsException ex) {}
-        assertEquals("aaxaaaayaa", sb.toString());
-        
-        sb = new StrBuilder("aaxaaaayaa");
-        try {
-            sb.replace(StrMatcher.stringMatcher("aa"), "-", -1, sb.length(), -1);
-            fail();
-        } catch (final IndexOutOfBoundsException ex) {}
-        assertEquals("aaxaaaayaa", sb.toString());
-    }
-
-    @Test
-    public void testReplace_StrMatcher_String_int_int_int_VaryEndIndex() {
-        StrBuilder sb = new StrBuilder("aaxaaaayaa");
-        sb.replace(StrMatcher.stringMatcher("aa"), "-", 0, 0, -1);
-        assertEquals("aaxaaaayaa", sb.toString());
-        
-        sb = new StrBuilder("aaxaaaayaa");
-        sb.replace(StrMatcher.stringMatcher("aa"), "-", 0, 2, -1);
-        assertEquals("-xaaaayaa", sb.toString());
-        
-        sb = new StrBuilder("aaxaaaayaa");
-        sb.replace(StrMatcher.stringMatcher("aa"), "-", 0, 3, -1);
-        assertEquals("-xaaaayaa", sb.toString());
-        
-        sb = new StrBuilder("aaxaaaayaa");
-        sb.replace(StrMatcher.stringMatcher("aa"), "-", 0, 4, -1);
-        assertEquals("-xaaaayaa", sb.toString());
-        
-        sb = new StrBuilder("aaxaaaayaa");
-        sb.replace(StrMatcher.stringMatcher("aa"), "-", 0, 5, -1);
-        assertEquals("-x-aayaa", sb.toString());
-        
-        sb = new StrBuilder("aaxaaaayaa");
-        sb.replace(StrMatcher.stringMatcher("aa"), "-", 0, 6, -1);
-        assertEquals("-x-aayaa", sb.toString());
-        
-        sb = new StrBuilder("aaxaaaayaa");
-        sb.replace(StrMatcher.stringMatcher("aa"), "-", 0, 7, -1);
-        assertEquals("-x--yaa", sb.toString());
-        
-        sb = new StrBuilder("aaxaaaayaa");
-        sb.replace(StrMatcher.stringMatcher("aa"), "-", 0, 8, -1);
-        assertEquals("-x--yaa", sb.toString());
-        
-        sb = new StrBuilder("aaxaaaayaa");
-        sb.replace(StrMatcher.stringMatcher("aa"), "-", 0, 9, -1);
-        assertEquals("-x--yaa", sb.toString());
-        
-        sb = new StrBuilder("aaxaaaayaa");
-        sb.replace(StrMatcher.stringMatcher("aa"), "-", 0, 10, -1);
-        assertEquals("-x--y-", sb.toString());
-        
-        sb = new StrBuilder("aaxaaaayaa");
-        sb.replace(StrMatcher.stringMatcher("aa"), "-", 0, 1000, -1);
-        assertEquals("-x--y-", sb.toString());
-        
-        sb = new StrBuilder("aaxaaaayaa");
-        try {
-            sb.replace(StrMatcher.stringMatcher("aa"), "-", 2, 1, -1);
-            fail();
-        } catch (final IndexOutOfBoundsException ex) {}
-        assertEquals("aaxaaaayaa", sb.toString());
-    }
-
-    @Test
-    public void testReplace_StrMatcher_String_int_int_int_VaryCount() {
-        StrBuilder sb = new StrBuilder("aaxaaaayaa");
-        sb.replace(StrMatcher.stringMatcher("aa"), "-", 0, 10, -1);
-        assertEquals("-x--y-", sb.toString());
-        
-        sb = new StrBuilder("aaxaaaayaa");
-        sb.replace(StrMatcher.stringMatcher("aa"), "-", 0, 10, 0);
-        assertEquals("aaxaaaayaa", sb.toString());
-        
-        sb = new StrBuilder("aaxaaaayaa");
-        sb.replace(StrMatcher.stringMatcher("aa"), "-", 0, 10, 1);
-        assertEquals("-xaaaayaa", sb.toString());
-        
-        sb = new StrBuilder("aaxaaaayaa");
-        sb.replace(StrMatcher.stringMatcher("aa"), "-", 0, 10, 2);
-        assertEquals("-x-aayaa", sb.toString());
-        
-        sb = new StrBuilder("aaxaaaayaa");
-        sb.replace(StrMatcher.stringMatcher("aa"), "-", 0, 10, 3);
-        assertEquals("-x--yaa", sb.toString());
-        
-        sb = new StrBuilder("aaxaaaayaa");
-        sb.replace(StrMatcher.stringMatcher("aa"), "-", 0, 10, 4);
-        assertEquals("-x--y-", sb.toString());
-        
-        sb = new StrBuilder("aaxaaaayaa");
-        sb.replace(StrMatcher.stringMatcher("aa"), "-", 0, 10, 5);
-        assertEquals("-x--y-", sb.toString());
-    }
-
-    //-----------------------------------------------------------------------
-    @Test
-    public void testReverse() {
-        final StrBuilder sb = new StrBuilder();
-        assertEquals("", sb.reverse().toString());
-        
-        sb.clear().append(true);
-        assertEquals("eurt", sb.reverse().toString());
-        assertEquals("true", sb.reverse().toString());
-    }
-
-    //-----------------------------------------------------------------------
-    @Test
-    public void testTrim() {
-        final StrBuilder sb = new StrBuilder();
-        assertEquals("", sb.reverse().toString());
-        
-        sb.clear().append(" \u0000 ");
-        assertEquals("", sb.trim().toString());
-        
-        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());
-    }
-
-    //-----------------------------------------------------------------------
-    @Test
-    public void testStartsWith() {
-        final StrBuilder sb = new StrBuilder();
-        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 testEndsWith() {
-        final StrBuilder sb = new StrBuilder();
-        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 testSubSequenceIntInt() {
-       final StrBuilder sb = new StrBuilder ("hello goodbye");
-       // Start index is negative
-       try {
-            sb.subSequence(-1, 5);
-            fail();
-        } catch (final IndexOutOfBoundsException e) {}
-        
-        // End index is negative
-       try {
-            sb.subSequence(2, -1);
-            fail();
-        } catch (final IndexOutOfBoundsException e) {}
-        
-        // End index greater than length()
-        try {
-            sb.subSequence(2, sb.length() + 1);
-            fail();
-        } catch (final IndexOutOfBoundsException e) {}
-        
-        // Start index greater then end index
-        try {
-            sb.subSequence(3, 2);
-            fail();
-        } catch (final IndexOutOfBoundsException e) {}
-        
-        // 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 testSubstringInt() {
-        final StrBuilder sb = new StrBuilder ("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));
-        try {
-            sb.substring(-1);
-            fail ();
-        } catch (final IndexOutOfBoundsException e) {}
-        
-        try {
-            sb.substring(15);
-            fail ();
-        } catch (final IndexOutOfBoundsException e) {}
-    
-    }
-    
-    @Test
-    public void testSubstringIntInt() {
-        final StrBuilder sb = new StrBuilder ("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));
-        
-        try {
-            sb.substring(-1, 5);
-            fail();
-        } catch (final IndexOutOfBoundsException e) {}
-        
-        try {
-            sb.substring(15, 20);
-            fail();
-        } catch (final IndexOutOfBoundsException e) {}
-    }
-
-    // -----------------------------------------------------------------------
-    @Test
-    public void testMidString() {
-        final StrBuilder sb = new StrBuilder("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 StrBuilder sb = new StrBuilder("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 StrBuilder sb = new StrBuilder("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 StrBuilder sb = new StrBuilder("abcdefghijklmnopqrstuvwxyz");
-        assertTrue(sb.contains('a'));
-        assertTrue(sb.contains('o'));
-        assertTrue(sb.contains('z'));
-        assertFalse(sb.contains('1'));
-    }
-
-    @Test
-    public void testContains_String() {
-        final StrBuilder sb = new StrBuilder("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_StrMatcher() {
-        StrBuilder sb = new StrBuilder("abcdefghijklmnopqrstuvwxyz");
-        assertTrue(sb.contains(StrMatcher.charMatcher('a')));
-        assertTrue(sb.contains(StrMatcher.stringMatcher("pq")));
-        assertTrue(sb.contains(StrMatcher.charMatcher('z')));
-        assertFalse(sb.contains(StrMatcher.stringMatcher("zy")));
-        assertFalse(sb.contains((StrMatcher) null));
-
-        sb = new StrBuilder();
-        assertFalse(sb.contains(A_NUMBER_MATCHER));
-        sb.append("B A1 C");
-        assertTrue(sb.contains(A_NUMBER_MATCHER));
-    }
-
-    // -----------------------------------------------------------------------
-    @Test
-    public void testIndexOf_char() {
-        final StrBuilder sb = new StrBuilder("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() {
-        StrBuilder sb = new StrBuilder("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 StrBuilder("xyzabc");
-        assertEquals(2, sb.indexOf('z', 0));
-        assertEquals(-1, sb.indexOf('z', 3));
-    }
-
-    @Test
-    public void testLastIndexOf_char() {
-        final StrBuilder sb = new StrBuilder("abab");
-        
-        assertEquals (2, sb.lastIndexOf('a'));
-        //should work like String#lastIndexOf
-        assertEquals ("abab".lastIndexOf('a'), sb.lastIndexOf('a'));
-        
-        assertEquals(3, sb.lastIndexOf('b'));
-        assertEquals ("abab".lastIndexOf('b'), sb.lastIndexOf('b'));
-        
-        assertEquals (-1, sb.lastIndexOf('z'));
-    }
-
-    @Test
-    public void testLastIndexOf_char_int() {
-        StrBuilder sb = new StrBuilder("abab");
-        assertEquals(-1, sb.lastIndexOf('a', -1));
-        assertEquals(0, sb.lastIndexOf('a', 0));
-        assertEquals(0, sb.lastIndexOf('a', 1));
-
-        // should work like String#lastIndexOf
-        assertEquals("abab".lastIndexOf('a', 1), sb.lastIndexOf('a', 1));
-
-        assertEquals(1, sb.lastIndexOf('b', 2));
-        assertEquals("abab".lastIndexOf('b', 2), sb.lastIndexOf('b', 2));
-
-        assertEquals(-1, sb.lastIndexOf('z', 2));
-
-        sb = new StrBuilder("xyzabc");
-        assertEquals(2, sb.lastIndexOf('z', sb.length()));
-        assertEquals(-1, sb.lastIndexOf('z', 1));
-    }
-
-    // -----------------------------------------------------------------------
-    @Test
-    public void testIndexOf_String() {
-        final StrBuilder sb = new StrBuilder("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() {
-        StrBuilder sb = new StrBuilder("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 StrBuilder("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 StrBuilder sb = new StrBuilder("abab");
-        
-        assertEquals(2, sb.lastIndexOf("a"));
-        //should work like String#lastIndexOf
-        assertEquals("abab".lastIndexOf("a"), sb.lastIndexOf("a"));
-        
-        assertEquals(2, sb.lastIndexOf("ab"));
-        //should work like String#lastIndexOf
-        assertEquals("abab".lastIndexOf("ab"), sb.lastIndexOf("ab"));
-        
-        assertEquals(3, sb.lastIndexOf("b"));
-        assertEquals("abab".lastIndexOf("b"), sb.lastIndexOf("b"));
-        
-        assertEquals(1, sb.lastIndexOf("ba"));
-        assertEquals("abab".lastIndexOf("ba"), sb.lastIndexOf("ba"));
-        
-        assertEquals(-1, sb.lastIndexOf("z"));
-        
-        assertEquals(-1, sb.lastIndexOf((String) null));
-    }
-
-    @Test
-    public void testLastIndexOf_String_int() {
-        StrBuilder sb = new StrBuilder("abab");
-        assertEquals(-1, sb.lastIndexOf("a", -1));
-        assertEquals(0, sb.lastIndexOf("a", 0));
-        assertEquals(0, sb.lastIndexOf("a", 1));
-        assertEquals(2, sb.lastIndexOf("a", 2));
-        assertEquals(2, sb.lastIndexOf("a", 3));
-        assertEquals(2, sb.lastIndexOf("a", 4));
-        assertEquals(2, sb.lastIndexOf("a", 5));
-        
-        assertEquals(-1, sb.lastIndexOf("abcdef", 3));
-        assertEquals("abab".lastIndexOf("", 3), sb.lastIndexOf("", 3));
-        assertEquals("abab".lastIndexOf("", 1), sb.lastIndexOf("", 1));
-        
-        //should work like String#lastIndexOf
-        assertEquals("abab".lastIndexOf("a", 1), sb.lastIndexOf("a", 1));
-        
-        assertEquals(0, sb.lastIndexOf("ab", 1));
-        //should work like String#lastIndexOf
-        assertEquals("abab".lastIndexOf("ab", 1), sb.lastIndexOf("ab", 1));
-        
-        assertEquals(1, sb.lastIndexOf("b", 2));
-        assertEquals("abab".lastIndexOf("b", 2), sb.lastIndexOf("b", 2));
-        
-        assertEquals(1, sb.lastIndexOf("ba", 2));
-        assertEquals("abab".lastIndexOf("ba", 2), sb.lastIndexOf("ba", 2));
-        
-        assertEquals(-1, sb.lastIndexOf("z", 2));
-        
-        sb = new StrBuilder("xyzabc");
-        assertEquals(2, sb.lastIndexOf("za", sb.length()));
-        assertEquals(-1, sb.lastIndexOf("za", 1));
-        
-        assertEquals(-1, sb.lastIndexOf((String) null, 2));
-    }
-
-    // -----------------------------------------------------------------------
-    @Test
-    public void testIndexOf_StrMatcher() {
-        final StrBuilder sb = new StrBuilder();
-        assertEquals(-1, sb.indexOf((StrMatcher) null));
-        assertEquals(-1, sb.indexOf(StrMatcher.charMatcher('a')));
-        
-        sb.append("ab bd");
-        assertEquals(0, sb.indexOf(StrMatcher.charMatcher('a')));
-        assertEquals(1, sb.indexOf(StrMatcher.charMatcher('b')));
-        assertEquals(2, sb.indexOf(StrMatcher.spaceMatcher()));
-        assertEquals(4, sb.indexOf(StrMatcher.charMatcher('d')));
-        assertEquals(-1, sb.indexOf(StrMatcher.noneMatcher()));
-        assertEquals(-1, sb.indexOf((StrMatcher) null));
-        
-        sb.append(" A1 junction");
-        assertEquals(6, sb.indexOf(A_NUMBER_MATCHER));
-    }
-
-    @Test
-    public void testIndexOf_StrMatcher_int() {
-        final StrBuilder sb = new StrBuilder();
-        assertEquals(-1, sb.indexOf((StrMatcher) null, 2));
-        assertEquals(-1, sb.indexOf(StrMatcher.charMatcher('a'), 2));
-        assertEquals(-1, sb.indexOf(StrMatcher.charMatcher('a'), 0));
-        
-        sb.append("ab bd");
-        assertEquals(0, sb.indexOf(StrMatcher.charMatcher('a'), -2));
-        assertEquals(0, sb.indexOf(StrMatcher.charMatcher('a'), 0));
-        assertEquals(-1, sb.indexOf(StrMatcher.charMatcher('a'), 2));
-        assertEquals(-1, sb.indexOf(StrMatcher.charMatcher('a'), 20));
-        
-        assertEquals(1, sb.indexOf(StrMatcher.charMatcher('b'), -1));
-        assertEquals(1, sb.indexOf(StrMatcher.charMatcher('b'), 0));
-        assertEquals(1, sb.indexOf(StrMatcher.charMatcher('b'), 1));
-        assertEquals(3, sb.indexOf(StrMatcher.charMatcher('b'), 2));
-        assertEquals(3, sb.indexOf(StrMatcher.charMatcher('b'), 3));
-        assertEquals(-1, sb.indexOf(StrMatcher.charMatcher('b'), 4));
-        assertEquals(-1, sb.indexOf(StrMatcher.charMatcher('b'), 5));
-        assertEquals(-1, sb.indexOf(StrMatcher.charMatcher('b'), 6));
-        
-        assertEquals(2, sb.indexOf(StrMatcher.spaceMatcher(), -2));
-        assertEquals(2, sb.indexOf(StrMatcher.spaceMatcher(), 0));
-        assertEquals(2, sb.indexOf(StrMatcher.spaceMatcher(), 2));
-        assertEquals(-1, sb.indexOf(StrMatcher.spaceMatcher(), 4));
-        assertEquals(-1, sb.indexOf(StrMatcher.spaceMatcher(), 20));
-        
-        assertEquals(-1, sb.indexOf(StrMatcher.noneMatcher(), 0));
-        assertEquals(-1, sb.indexOf((StrMatcher) 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_StrMatcher() {
-        final StrBuilder sb = new StrBuilder();
-        assertEquals(-1, sb.lastIndexOf((StrMatcher) null));
-        assertEquals(-1, sb.lastIndexOf(StrMatcher.charMatcher('a')));
-        
-        sb.append("ab bd");
-        assertEquals(0, sb.lastIndexOf(StrMatcher.charMatcher('a')));
-        assertEquals(3, sb.lastIndexOf(StrMatcher.charMatcher('b')));
-        assertEquals(2, sb.lastIndexOf(StrMatcher.spaceMatcher()));
-        assertEquals(4, sb.lastIndexOf(StrMatcher.charMatcher('d')));
-        assertEquals(-1, sb.lastIndexOf(StrMatcher.noneMatcher()));
-        assertEquals(-1, sb.lastIndexOf((StrMatcher) null));
-        
-        sb.append(" A1 junction");
-        assertEquals(6, sb.lastIndexOf(A_NUMBER_MATCHER));
-    }
-
-    @Test
-    public void testLastIndexOf_StrMatcher_int() {
-        final StrBuilder sb = new StrBuilder();
-        assertEquals(-1, sb.lastIndexOf((StrMatcher) null, 2));
-        assertEquals(-1, sb.lastIndexOf(StrMatcher.charMatcher('a'), 2));
-        assertEquals(-1, sb.lastIndexOf(StrMatcher.charMatcher('a'), 0));
-        assertEquals(-1, sb.lastIndexOf(StrMatcher.charMatcher('a'), -1));
-        
-        sb.append("ab bd");
-        assertEquals(-1, sb.lastIndexOf(StrMatcher.charMatcher('a'), -2));
-        assertEquals(0, sb.lastIndexOf(StrMatcher.charMatcher('a'), 0));
-        assertEquals(0, sb.lastIndexOf(StrMatcher.charMatcher('a'), 2));
-        assertEquals(0, sb.lastIndexOf(StrMatcher.charMatcher('a'), 20));
-        
-        assertEquals(-1, sb.lastIndexOf(StrMatcher.charMatcher('b'), -1));
-        assertEquals(-1, sb.lastIndexOf(StrMatcher.charMatcher('b'), 0));
-        assertEquals(1, sb.lastIndexOf(StrMatcher.charMatcher('b'), 1));
-        assertEquals(1, sb.lastIndexOf(StrMatcher.charMatcher('b'), 2));
-        assertEquals(3, sb.lastIndexOf(StrMatcher.charMatcher('b'), 3));
-        assertEquals(3, sb.lastIndexOf(StrMatcher.charMatcher('b'), 4));
-        assertEquals(3, sb.lastIndexOf(StrMatcher.charMatcher('b'), 5));
-        assertEquals(3, sb.lastIndexOf(StrMatcher.charMatcher('b'), 6));
-        
-        assertEquals(-1, sb.lastIndexOf(StrMatcher.spaceMatcher(), -2));
-        assertEquals(-1, sb.lastIndexOf(StrMatcher.spaceMatcher(), 0));
-        assertEquals(2, sb.lastIndexOf(StrMatcher.spaceMatcher(), 2));
-        assertEquals(2, sb.lastIndexOf(StrMatcher.spaceMatcher(), 4));
-        assertEquals(2, sb.lastIndexOf(StrMatcher.spaceMatcher(), 20));
-        
-        assertEquals(-1, sb.lastIndexOf(StrMatcher.noneMatcher(), 0));
-        assertEquals(-1, sb.lastIndexOf((StrMatcher) null, 0));
-        
-        sb.append(" A1 junction with A2");
-        assertEquals(-1, sb.lastIndexOf(A_NUMBER_MATCHER, 5));
-        assertEquals(-1, sb.lastIndexOf(A_NUMBER_MATCHER, 6)); // A matches, 1 is outside bounds
-        assertEquals(6, sb.lastIndexOf(A_NUMBER_MATCHER, 7));
-        assertEquals(6, sb.lastIndexOf(A_NUMBER_MATCHER, 22));
-        assertEquals(6, sb.lastIndexOf(A_NUMBER_MATCHER, 23)); // A matches, 2 is outside bounds
-        assertEquals(23, sb.lastIndexOf(A_NUMBER_MATCHER, 24));
-    }
-
-    static final StrMatcher A_NUMBER_MATCHER = new StrMatcher() {
-        @Override
-        public int isMatch(final char[] buffer, int pos, final int bufferStart, final int bufferEnd) {
-            if (buffer[pos] == 'A') {
-                pos++;
-                if (pos < bufferEnd && buffer[pos] >= '0' && buffer[pos] <= '9') {
-                    return 2;
-                }
-            }
-            return 0;
-        }
-    };
-
-    //-----------------------------------------------------------------------
-    @Test
-    public void testAsTokenizer() throws Exception {
-        // from Javadoc
-        final StrBuilder b = new StrBuilder();
-        b.append("a b ");
-        final StrTokenizer 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 testAsReader() throws Exception {
-        final StrBuilder sb = new StrBuilder("some text");
-        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());
-        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());
-        
-        reader = sb.asReader();
-        array = new char[3];
-        try {
-            reader.read(array, -1, 0);
-            fail();
-        } catch (final IndexOutOfBoundsException ex) {}
-        try {
-            reader.read(array, 0, -1);
-            fail();
-        } catch (final IndexOutOfBoundsException ex) {}
-        try {
-            reader.read(array, 100, 1);
-            fail();
-        } catch (final IndexOutOfBoundsException ex) {}
-        try {
-            reader.read(array, 0, 100);
-            fail();
-        } catch (final IndexOutOfBoundsException ex) {}
-        try {
-            reader.read(array, Integer.MAX_VALUE, Integer.MAX_VALUE);
-            fail();
-        } catch (final IndexOutOfBoundsException ex) {}
-        
-        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 testAsWriter() throws Exception {
-        final StrBuilder sb = new StrBuilder("base");
-        final 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 testEqualsIgnoreCase() {
-        final StrBuilder sb1 = new StrBuilder();
-        final StrBuilder sb2 = new StrBuilder();
-        assertTrue(sb1.equalsIgnoreCase(sb1));
-        assertTrue(sb1.equalsIgnoreCase(sb2));
-        assertTrue(sb2.equalsIgnoreCase(sb2));
-        
-        sb1.append("abc");
-        assertFalse(sb1.equalsIgnoreCase(sb2));
-        
-        sb2.append("ABC");
-        assertTrue(sb1.equalsIgnoreCase(sb2));
-        
-        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 testEquals() {
-        final StrBuilder sb1 = new StrBuilder();
-        final StrBuilder sb2 = new StrBuilder();
-        assertTrue(sb1.equals(sb2));
-        assertTrue(sb1.equals(sb1));
-        assertTrue(sb2.equals(sb2));
-        assertTrue(sb1.equals((Object) sb2));
-        
-        sb1.append("abc");
-        assertFalse(sb1.equals(sb2));
-        assertFalse(sb1.equals((Object) sb2));
-        
-        sb2.append("ABC");
-        assertFalse(sb1.equals(sb2));
-        assertFalse(sb1.equals((Object) sb2));
-        
-        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 test_LANG_1131_EqualsWithNullStrBuilder() throws Exception {
-        final StrBuilder sb = new StrBuilder();
-        final StrBuilder other = null;
-        assertFalse(sb.equals(other));
-    }
-
-    //-----------------------------------------------------------------------
-    @Test
-    public void testHashCode() {
-        final StrBuilder sb = new StrBuilder();
-        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);
-    }
-
-    //-----------------------------------------------------------------------
-    @Test
-    public void testToString() {
-        final StrBuilder sb = new StrBuilder("abc");
-        assertEquals("abc", sb.toString());
-    }
-
-    //-----------------------------------------------------------------------
-    @Test
-    public void testToStringBuffer() {
-        final StrBuilder sb = new StrBuilder();
-        assertEquals(new StringBuffer().toString(), sb.toStringBuffer().toString());
-        
-        sb.append("junit");
-        assertEquals(new StringBuffer("junit").toString(), sb.toStringBuffer().toString());
-    }
-
-    //-----------------------------------------------------------------------
-    @Test
-    public void testToStringBuilder() {
-        final StrBuilder sb = new StrBuilder();
-        assertEquals(new StringBuilder().toString(), sb.toStringBuilder().toString());
-        
-        sb.append("junit");
-        assertEquals(new StringBuilder("junit").toString(), sb.toStringBuilder().toString());
-    }
-
-    //-----------------------------------------------------------------------
-    @Test
-    public void testLang294() {
-        final StrBuilder sb = new StrBuilder("\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 testIndexOfLang294() {
-        final StrBuilder sb = new StrBuilder("onetwothree");
-        sb.deleteFirst("three");
-        assertEquals(-1, sb.indexOf("three"));
-    }
-
-    //-----------------------------------------------------------------------
-    @Test
-    public void testLang295() {
-        final StrBuilder sb = new StrBuilder("onetwothree");
-        sb.deleteFirst("three");
-        assertFalse( "The contains(char) method is looking beyond the end of the string", sb.contains('h'));
-        assertEquals( "The indexOf(char) method is looking beyond the end of the string", -1, sb.indexOf('h'));
-    }
-
-    //-----------------------------------------------------------------------
-    @Test
-    public void testLang412Right() {
-        final StrBuilder sb = new StrBuilder();
-        sb.appendFixedWidthPadRight(null, 10, '*');
-        assertEquals( "Failed to invoke appendFixedWidthPadRight correctly", "**********", sb.toString());
-    }
-
-    @Test
-    public void testLang412Left() {
-        final StrBuilder sb = new StrBuilder();
-        sb.appendFixedWidthPadLeft(null, 10, '*');
-        assertEquals( "Failed to invoke appendFixedWidthPadLeft correctly", "**********", sb.toString());
-    }
-
-    @Test
-    public void testAsBuilder() {
-        final StrBuilder sb = new StrBuilder().appendAll("Lorem", " ", "ipsum", " ", "dolor");
-        assertEquals(sb.toString(), sb.build());
-    }
-
-    //-----------------------------------------------------------------------
-    @Test
-    public void testAppendCharBuffer() {
-        final StrBuilder sb1 = new StrBuilder();
-        final CharBuffer buf = CharBuffer.allocate(10);
-        buf.append("0123456789");
-        buf.flip();
-        sb1.append(buf);
-        assertEquals("0123456789", sb1.toString());
-
-        final StrBuilder sb2 = new StrBuilder();
-        sb2.append(buf, 1, 8);
-        assertEquals("12345678", sb2.toString());
-    }
-
-    //-----------------------------------------------------------------------
-    @Test
-    public void testAppendToWriter() throws Exception {
-        final StrBuilder sb = new StrBuilder("1234567890");
-        final StringWriter writer = new StringWriter();
-        writer.append("Test ");
-
-        sb.appendTo(writer);
-
-        assertEquals("Test 1234567890", writer.toString());
-    }
-
-    @Test
-    public void testAppendToStringBuilder() throws Exception {
-        final StrBuilder sb = new StrBuilder("1234567890");
-        final StringBuilder builder = new StringBuilder("Test ");
-
-        sb.appendTo(builder);
-
-        assertEquals("Test 1234567890", builder.toString());
-    }
-
-    @Test
-    public void testAppendToStringBuffer() throws Exception {
-        final StrBuilder sb = new StrBuilder("1234567890");
-        final StringBuffer buffer = new StringBuffer("Test ");
-
-        sb.appendTo(buffer);
-
-        assertEquals("Test 1234567890", buffer.toString());
-    }
-
-    @Test
-    public void testAppendToCharBuffer() throws Exception {
-        final StrBuilder sb = new StrBuilder("1234567890");
-        final String text = "Test ";
-        final CharBuffer buffer = CharBuffer.allocate(sb.size() + text.length());
-        buffer.put(text);
-
-        sb.appendTo(buffer);
-
-        buffer.flip();
-        assertEquals("Test 1234567890", buffer.toString());
-    }
-}

http://git-wip-us.apache.org/repos/asf/commons-text/blob/c7cf533d/src/test/java/org/apache/commons/text/beta/StrLookupTest.java
----------------------------------------------------------------------
diff --git a/src/test/java/org/apache/commons/text/beta/StrLookupTest.java b/src/test/java/org/apache/commons/text/beta/StrLookupTest.java
deleted file mode 100644
index 77ffc5f..0000000
--- a/src/test/java/org/apache/commons/text/beta/StrLookupTest.java
+++ /dev/null
@@ -1,115 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.commons.text.beta;
-
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.fail;
-
-import java.util.HashMap;
-import java.util.Map;
-import java.util.Properties;
-
-import org.junit.Test;
-
-/**
- * Test class for {@link StrLookup}.
- */
-public class StrLookupTest  {
-
-    //-----------------------------------------------------------------------
-    @Test
-    public void testNoneLookup() {
-        assertEquals(null, StrLookup.noneLookup().lookup(null));
-        assertEquals(null, StrLookup.noneLookup().lookup(""));
-        assertEquals(null, StrLookup.noneLookup().lookup("any"));
-    }
-
-    @Test
-    public void testSystemProperiesLookup() {
-        assertEquals(System.getProperty("os.name"), StrLookup.systemPropertiesLookup().lookup("os.name"));
-        assertEquals(null, StrLookup.systemPropertiesLookup().lookup(""));
-        assertEquals(null, StrLookup.systemPropertiesLookup().lookup("other"));
-        try {
-            StrLookup.systemPropertiesLookup().lookup(null);
-            fail();
-        } catch (final NullPointerException ex) {
-            // expected
-        }
-    }
-
-    /**
-     * Tests that a lookup object for system properties can deal with a full
-     * replacement of the system properties object. This test is related to
-     * LANG-1055.
-     */
-    @Test
-    public void testSystemPropertiesLookupReplacedProperties() {
-        final Properties oldProperties = System.getProperties();
-        final String osName = "os.name";
-        final String newOsName = oldProperties.getProperty(osName) + "_changed";
-
-        final StrLookup<String> sysLookup = StrLookup.systemPropertiesLookup();
-        final Properties newProps = new Properties();
-        newProps.setProperty(osName, newOsName);
-        System.setProperties(newProps);
-        try {
-            assertEquals("Changed properties not detected", newOsName, sysLookup.lookup(osName));
-        } finally {
-            System.setProperties(oldProperties);
-        }
-    }
-
-    /**
-     * Tests that a lookup object for system properties sees changes on system
-     * properties. This test is related to LANG-1141.
-     */
-    @Test
-    public void testSystemPropertiesLookupUpdatedProperty() {
-        final String osName = "os.name";
-        final String oldOs = System.getProperty(osName);
-        final String newOsName = oldOs + "_changed";
-
-        final StrLookup<String> sysLookup = StrLookup.systemPropertiesLookup();
-        System.setProperty(osName, newOsName);
-        try {
-            assertEquals("Changed properties not detected", newOsName, sysLookup.lookup(osName));
-        } finally {
-            System.setProperty(osName, oldOs);
-        }
-    }
-
-    @Test
-    public void testMapLookup() {
-        final Map<String, Object> map = new HashMap<>();
-        map.put("key", "value");
-        map.put("number", Integer.valueOf(2));
-        assertEquals("value", StrLookup.mapLookup(map).lookup("key"));
-        assertEquals("2", StrLookup.mapLookup(map).lookup("number"));
-        assertEquals(null, StrLookup.mapLookup(map).lookup(null));
-        assertEquals(null, StrLookup.mapLookup(map).lookup(""));
-        assertEquals(null, StrLookup.mapLookup(map).lookup("other"));
-    }
-
-    @Test
-    public void testMapLookup_nullMap() {
-        final Map<String, ?> map = null;
-        assertEquals(null, StrLookup.mapLookup(map).lookup(null));
-        assertEquals(null, StrLookup.mapLookup(map).lookup(""));
-        assertEquals(null, StrLookup.mapLookup(map).lookup("any"));
-    }
-
-}

http://git-wip-us.apache.org/repos/asf/commons-text/blob/c7cf533d/src/test/java/org/apache/commons/text/beta/StrMatcherTest.java
----------------------------------------------------------------------
diff --git a/src/test/java/org/apache/commons/text/beta/StrMatcherTest.java b/src/test/java/org/apache/commons/text/beta/StrMatcherTest.java
deleted file mode 100644
index ef9356a..0000000
--- a/src/test/java/org/apache/commons/text/beta/StrMatcherTest.java
+++ /dev/null
@@ -1,214 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- * 
- *      http://www.apache.org/licenses/LICENSE-2.0
- * 
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.commons.text.beta;
-
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertSame;
-import static org.junit.Assert.assertTrue;
-
-import org.junit.Test;
-
-/**
- * Unit tests for {@link StrMatcher}.
- */
-public class StrMatcherTest  {
-
-    private static final char[] BUFFER1 = "0,1\t2 3\n\r\f\u0000'\"".toCharArray();
-
-    private static final char[] BUFFER2 = "abcdef".toCharArray();
-
-
-    //-----------------------------------------------------------------------
-    @Test
-    public void testCommaMatcher() {
-        final StrMatcher matcher = StrMatcher.commaMatcher();
-        assertSame(matcher, StrMatcher.commaMatcher());
-        assertEquals(0, matcher.isMatch(BUFFER1, 0));
-        assertEquals(1, matcher.isMatch(BUFFER1, 1));
-        assertEquals(0, matcher.isMatch(BUFFER1, 2));
-    }
-
-    //-----------------------------------------------------------------------
-    @Test
-    public void testTabMatcher() {
-        final StrMatcher matcher = StrMatcher.tabMatcher();
-        assertSame(matcher, StrMatcher.tabMatcher());
-        assertEquals(0, matcher.isMatch(BUFFER1, 2));
-        assertEquals(1, matcher.isMatch(BUFFER1, 3));
-        assertEquals(0, matcher.isMatch(BUFFER1, 4));
-    }
-
-    //-----------------------------------------------------------------------
-    @Test
-    public void testSpaceMatcher() {
-        final StrMatcher matcher = StrMatcher.spaceMatcher();
-        assertSame(matcher, StrMatcher.spaceMatcher());
-        assertEquals(0, matcher.isMatch(BUFFER1, 4));
-        assertEquals(1, matcher.isMatch(BUFFER1, 5));
-        assertEquals(0, matcher.isMatch(BUFFER1, 6));
-    }
-
-    //-----------------------------------------------------------------------
-    @Test
-    public void testSplitMatcher() {
-        final StrMatcher matcher = StrMatcher.splitMatcher();
-        assertSame(matcher, StrMatcher.splitMatcher());
-        assertEquals(0, matcher.isMatch(BUFFER1, 2));
-        assertEquals(1, matcher.isMatch(BUFFER1, 3));
-        assertEquals(0, matcher.isMatch(BUFFER1, 4));
-        assertEquals(1, matcher.isMatch(BUFFER1, 5));
-        assertEquals(0, matcher.isMatch(BUFFER1, 6));
-        assertEquals(1, matcher.isMatch(BUFFER1, 7));
-        assertEquals(1, matcher.isMatch(BUFFER1, 8));
-        assertEquals(1, matcher.isMatch(BUFFER1, 9));
-        assertEquals(0, matcher.isMatch(BUFFER1, 10));
-    }
-
-    //-----------------------------------------------------------------------
-    @Test
-    public void testTrimMatcher() {
-        final StrMatcher matcher = StrMatcher.trimMatcher();
-        assertSame(matcher, StrMatcher.trimMatcher());
-        assertEquals(0, matcher.isMatch(BUFFER1, 2));
-        assertEquals(1, matcher.isMatch(BUFFER1, 3));
-        assertEquals(0, matcher.isMatch(BUFFER1, 4));
-        assertEquals(1, matcher.isMatch(BUFFER1, 5));
-        assertEquals(0, matcher.isMatch(BUFFER1, 6));
-        assertEquals(1, matcher.isMatch(BUFFER1, 7));
-        assertEquals(1, matcher.isMatch(BUFFER1, 8));
-        assertEquals(1, matcher.isMatch(BUFFER1, 9));
-        assertEquals(1, matcher.isMatch(BUFFER1, 10));
-    }
-
-    //-----------------------------------------------------------------------
-    @Test
-    public void testSingleQuoteMatcher() {
-        final StrMatcher matcher = StrMatcher.singleQuoteMatcher();
-        assertSame(matcher, StrMatcher.singleQuoteMatcher());
-        assertEquals(0, matcher.isMatch(BUFFER1, 10));
-        assertEquals(1, matcher.isMatch(BUFFER1, 11));
-        assertEquals(0, matcher.isMatch(BUFFER1, 12));
-    }
-
-    //-----------------------------------------------------------------------
-    @Test
-    public void testDoubleQuoteMatcher() {
-        final StrMatcher matcher = StrMatcher.doubleQuoteMatcher();
-        assertSame(matcher, StrMatcher.doubleQuoteMatcher());
-        assertEquals(0, matcher.isMatch(BUFFER1, 11));
-        assertEquals(1, matcher.isMatch(BUFFER1, 12));
-    }
-
-    //-----------------------------------------------------------------------
-    @Test
-    public void testQuoteMatcher() {
-        final StrMatcher matcher = StrMatcher.quoteMatcher();
-        assertSame(matcher, StrMatcher.quoteMatcher());
-        assertEquals(0, matcher.isMatch(BUFFER1, 10));
-        assertEquals(1, matcher.isMatch(BUFFER1, 11));
-        assertEquals(1, matcher.isMatch(BUFFER1, 12));
-    }
-
-    //-----------------------------------------------------------------------
-    @Test
-    public void testNoneMatcher() {
-        final StrMatcher matcher = StrMatcher.noneMatcher();
-        assertSame(matcher, StrMatcher.noneMatcher());
-        assertEquals(0, matcher.isMatch(BUFFER1, 0));
-        assertEquals(0, matcher.isMatch(BUFFER1, 1));
-        assertEquals(0, matcher.isMatch(BUFFER1, 2));
-        assertEquals(0, matcher.isMatch(BUFFER1, 3));
-        assertEquals(0, matcher.isMatch(BUFFER1, 4));
-        assertEquals(0, matcher.isMatch(BUFFER1, 5));
-        assertEquals(0, matcher.isMatch(BUFFER1, 6));
-        assertEquals(0, matcher.isMatch(BUFFER1, 7));
-        assertEquals(0, matcher.isMatch(BUFFER1, 8));
-        assertEquals(0, matcher.isMatch(BUFFER1, 9));
-        assertEquals(0, matcher.isMatch(BUFFER1, 10));
-        assertEquals(0, matcher.isMatch(BUFFER1, 11));
-        assertEquals(0, matcher.isMatch(BUFFER1, 12));
-    }
-
-    //-----------------------------------------------------------------------
-    @Test
-    public void testCharMatcher_char() {
-        final StrMatcher matcher = StrMatcher.charMatcher('c');
-        assertEquals(0, matcher.isMatch(BUFFER2, 0));
-        assertEquals(0, matcher.isMatch(BUFFER2, 1));
-        assertEquals(1, matcher.isMatch(BUFFER2, 2));
-        assertEquals(0, matcher.isMatch(BUFFER2, 3));
-        assertEquals(0, matcher.isMatch(BUFFER2, 4));
-        assertEquals(0, matcher.isMatch(BUFFER2, 5));
-    }
-
-    //-----------------------------------------------------------------------
-    @Test
-    public void testCharSetMatcher_String() {
-        final StrMatcher matcher = StrMatcher.charSetMatcher("ace");
-        assertEquals(1, matcher.isMatch(BUFFER2, 0));
-        assertEquals(0, matcher.isMatch(BUFFER2, 1));
-        assertEquals(1, matcher.isMatch(BUFFER2, 2));
-        assertEquals(0, matcher.isMatch(BUFFER2, 3));
-        assertEquals(1, matcher.isMatch(BUFFER2, 4));
-        assertEquals(0, matcher.isMatch(BUFFER2, 5));
-        assertSame(StrMatcher.noneMatcher(), StrMatcher.charSetMatcher(""));
-        assertSame(StrMatcher.noneMatcher(), StrMatcher.charSetMatcher((String) null));
-        assertTrue(StrMatcher.charSetMatcher("a") instanceof StrMatcher.CharMatcher);
-    }
-
-    //-----------------------------------------------------------------------
-    @Test
-    public void testCharSetMatcher_charArray() {
-        final StrMatcher matcher = StrMatcher.charSetMatcher("ace".toCharArray());
-        assertEquals(1, matcher.isMatch(BUFFER2, 0));
-        assertEquals(0, matcher.isMatch(BUFFER2, 1));
-        assertEquals(1, matcher.isMatch(BUFFER2, 2));
-        assertEquals(0, matcher.isMatch(BUFFER2, 3));
-        assertEquals(1, matcher.isMatch(BUFFER2, 4));
-        assertEquals(0, matcher.isMatch(BUFFER2, 5));
-        assertSame(StrMatcher.noneMatcher(), StrMatcher.charSetMatcher(new char[0]));
-        assertSame(StrMatcher.noneMatcher(), StrMatcher.charSetMatcher((char[]) null));
-        assertTrue(StrMatcher.charSetMatcher("a".toCharArray()) instanceof StrMatcher.CharMatcher);
-    }
-
-    //-----------------------------------------------------------------------
-    @Test
-    public void testStringMatcher_String() {
-        final StrMatcher matcher = StrMatcher.stringMatcher("bc");
-        assertEquals(0, matcher.isMatch(BUFFER2, 0));
-        assertEquals(2, matcher.isMatch(BUFFER2, 1));
-        assertEquals(0, matcher.isMatch(BUFFER2, 2));
-        assertEquals(0, matcher.isMatch(BUFFER2, 3));
-        assertEquals(0, matcher.isMatch(BUFFER2, 4));
-        assertEquals(0, matcher.isMatch(BUFFER2, 5));
-        assertSame(StrMatcher.noneMatcher(), StrMatcher.stringMatcher(""));
-        assertSame(StrMatcher.noneMatcher(), StrMatcher.stringMatcher((String) null));
-    }
-
-    //-----------------------------------------------------------------------
-    @Test
-    public void testMatcherIndices() {
-        // remember that the API contract is tight for the isMatch() method
-        // all the onus is on the caller, so invalid inputs are not
-        // the concern of StrMatcher, and are not bugs
-        final StrMatcher matcher = StrMatcher.stringMatcher("bc");
-        assertEquals(2, matcher.isMatch(BUFFER2, 1, 1, BUFFER2.length));
-        assertEquals(2, matcher.isMatch(BUFFER2, 1, 0, 3));
-        assertEquals(0, matcher.isMatch(BUFFER2, 1, 0, 2));
-    }
-
-}