Author: ggregory
Date: Tue Aug  2 19:50:53 2005
New Revision: 227149

URL: http://svn.apache.org/viewcvs?rev=227149&view=rev
Log:
Fixes and better unit test code coverage from Nathan Beyer [EMAIL PROTECTED]

Modified:
    
jakarta/commons/proper/lang/trunk/src/java/org/apache/commons/lang/text/StrBuilder.java
    
jakarta/commons/proper/lang/trunk/src/test/org/apache/commons/lang/text/StrBuilderTest.java

Modified: 
jakarta/commons/proper/lang/trunk/src/java/org/apache/commons/lang/text/StrBuilder.java
URL: 
http://svn.apache.org/viewcvs/jakarta/commons/proper/lang/trunk/src/java/org/apache/commons/lang/text/StrBuilder.java?rev=227149&r1=227148&r2=227149&view=diff
==============================================================================
--- 
jakarta/commons/proper/lang/trunk/src/java/org/apache/commons/lang/text/StrBuilder.java
 (original)
+++ 
jakarta/commons/proper/lang/trunk/src/java/org/apache/commons/lang/text/StrBuilder.java
 Tue Aug  2 19:50:53 2005
@@ -1058,12 +1058,15 @@
     public StrBuilder replace(int startIndex, int endIndex, StrBuilder 
builder) {
         endIndex = validateRange(startIndex, endIndex);
         int insertLen = builder.length();
-        int removeLen = endIndex = startIndex;
+        int removeLen = endIndex - startIndex;
         if (insertLen > removeLen) {
             ensureCapacity(size - removeLen + insertLen);
         }
         if (insertLen != removeLen) {
+            //shift the current characters to the right
             System.arraycopy(buf, endIndex, buf, startIndex + insertLen, size 
- endIndex);
+            //adjust the size accordingly
+            size += (insertLen - removeLen);
         }
         builder.getChars(0, insertLen, buf, startIndex);
         return this;
@@ -1233,7 +1236,7 @@
         } else if (length >= size) {
             return new String(buf, 0, size);
         } else {
-            return new String(buf, size - length, size);
+            return new String(buf, size - length, length);
         }
     }
 

Modified: 
jakarta/commons/proper/lang/trunk/src/test/org/apache/commons/lang/text/StrBuilderTest.java
URL: 
http://svn.apache.org/viewcvs/jakarta/commons/proper/lang/trunk/src/test/org/apache/commons/lang/text/StrBuilderTest.java?rev=227149&r1=227148&r2=227149&view=diff
==============================================================================
--- 
jakarta/commons/proper/lang/trunk/src/test/org/apache/commons/lang/text/StrBuilderTest.java
 (original)
+++ 
jakarta/commons/proper/lang/trunk/src/test/org/apache/commons/lang/text/StrBuilderTest.java
 Tue Aug  2 19:50:53 2005
@@ -375,6 +375,8 @@
         assertEquals("ddbbcc", sb.toString());
         sb.replace('a', 'd');
         assertEquals("ddbbcc", sb.toString());
+        sb.replace('d', 'd');
+        assertEquals("ddbbcc", sb.toString());
     }
     
     /**
@@ -394,6 +396,18 @@
         assertEquals("ddbbcc", sb.toString());
     }
     
+    public void testReplaceIntIntStrBuilder() {
+        StrBuilder sb = new StrBuilder("abc");
+        sb.replace(0, 1, new StrBuilder ("d"));
+        assertEquals("dbc", sb.toString());
+        sb.replace(0, 1, new StrBuilder ("aaa"));
+        assertEquals("aaabc", sb.toString());
+        
+        sb = new StrBuilder("aabbcc");
+        sb.replace(0, 2, new StrBuilder("d"));
+        assertEquals("dbbcc", sb.toString());
+    }
+    
     public void testSetCharAt() {
         StrBuilder sb = new StrBuilder();
         try {
@@ -435,6 +449,7 @@
         assertTrue(sb.startsWith("a"));
         assertTrue(sb.startsWith("ab"));
         assertTrue(sb.startsWith("abc"));
+        assertFalse(sb.startsWith("cba"));
     }
     
     public void testEndsWith() {
@@ -452,6 +467,7 @@
         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 "));
@@ -1492,5 +1508,85 @@
         sb = new StrBuilder("xyzabc");
         assertEquals (2, sb.lastIndexOf("za", sb.length()));
         assertEquals (-1, sb.lastIndexOf("za", 1));
+    }
+    
+    public void testContainsChar() {
+        StrBuilder sb = new StrBuilder("abcdefghijklmnopqrstuvwxyz");
+        assertTrue (sb.contains('a'));
+        assertTrue (sb.contains('o'));
+        assertTrue (sb.contains('z'));
+        assertFalse (sb.contains('1'));
+    }
+    
+    public void testContainsString() {
+        StrBuilder sb = new StrBuilder("abcdefghijklmnopqrstuvwxyz");
+        assertTrue (sb.contains("a"));
+        assertTrue (sb.contains("pq"));
+        assertTrue (sb.contains("z"));
+        assertFalse (sb.contains("zyx"));
+    }
+    
+    public void testMidString() {
+        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));
+    }
+    
+    public void testRightString() {
+        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));
+    }
+    
+    public void testLeftString() {
+        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));
+    }
+    
+    public void testSubstringInt() {
+        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 (StringIndexOutOfBoundsException e) {}
+        
+        try {
+            sb.substring(15);
+            fail ();
+        } catch (StringIndexOutOfBoundsException e) {}
+    
+    }
+    
+    public void testSubstringIntInt() {
+        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 (StringIndexOutOfBoundsException e) {}
+        
+        try {
+            sb.substring(15, 20);
+            fail();
+        } catch (StringIndexOutOfBoundsException e) {}
     }
 }



---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to