Author: ggregory
Date: Sat Jul 30 18:17:01 2005
New Revision: 226597
URL: http://svn.apache.org/viewcvs?rev=226597&view=rev
Log:
Better 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=226597&r1=226596&r2=226597&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
Sat Jul 30 18:17:01 2005
@@ -18,6 +18,8 @@
import java.util.Collection;
import java.util.Iterator;
+import org.apache.commons.lang.ArrayUtils;
+
/**
* Builds a string from consituant parts providing a more flexible and
powerful API
* than StringBuffer.
@@ -271,6 +273,9 @@
* @return a new array that represents the contents of the builder
*/
public char[] toCharArray() {
+ if (size == 0) {
+ return ArrayUtils.EMPTY_CHAR_ARRAY;
+ }
char chars[] = new char[size];
System.arraycopy(buf, 0, chars, 0, size);
return chars;
@@ -283,11 +288,19 @@
* @param endIndex the end index, exclusive, must be valid except
* that if too large it is treated as end of string
* @return a new array that holds part of the contents of the builder
+ *
+ * @throws StringIndexOutOfBoundsException when <code>startIndex</code> is
less than 0;
+ * when <code>startIndex</code> is greater than
<code>endIndex</code> (if <code>endIndex</code>
+ * is larger than [EMAIL PROTECTED] #size() }, then it
is massaged to equal [EMAIL PROTECTED] #size()} before the validation).
*/
public char[] toCharArray(int startIndex, int endIndex) {
endIndex = validateRange(startIndex, endIndex);
- char chars[] = new char[size];
- System.arraycopy(buf, startIndex, chars, 0, endIndex - startIndex);
+ int len = endIndex - startIndex;
+ if (len == 0) {
+ return ArrayUtils.EMPTY_CHAR_ARRAY;
+ }
+ char chars[] = new char[len];
+ System.arraycopy(buf, startIndex, chars, 0, len);
return chars;
}
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=226597&r1=226596&r2=226597&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
Sat Jul 30 18:17:01 2005
@@ -751,11 +751,6 @@
assertEquals("foo,null,baz", sb.toString());
}
- //-----------------------------------------------------------------------
- public void testCharArray() {
- // TODO
- }
-
public void testInsert() {
StrBuilder sb = new StrBuilder();
@@ -1073,4 +1068,148 @@
assertEquals("foonullbarbaz", sb.toString());
}
+ public void testToCharArray ( ) {
+
+ StrBuilder sb = new StrBuilder();
+
+ 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));
+ }
+
+ public void testToCharArrayIntInt() {
+ StrBuilder sb = new StrBuilder();
+ 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 (StringIndexOutOfBoundsException e) {}
+
+ try {
+ sb.toCharArray(6, 5);
+ fail ("no string index out of bound on -1");
+ }
+ catch (StringIndexOutOfBoundsException e) {}
+ }
+
+ public void testGetChars ( ) {
+
+ 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);
+ }
+
+ public void testGetCharsIntIntCharArrayInt( ) {
+
+ 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 (StringIndexOutOfBoundsException e) {
+ }
+
+ try {
+ sb.getChars(0,-1,a,0);
+ fail("no exception");
+ }
+ catch (StringIndexOutOfBoundsException e) {
+ }
+
+ try {
+ sb.getChars(0,20,a,0);
+ fail("no exception");
+ }
+ catch (StringIndexOutOfBoundsException e) {
+ }
+
+ try {
+ sb.getChars(4,2,a,0);
+ fail("no exception");
+ }
+ catch (StringIndexOutOfBoundsException e) {
+ }
+ }
+
+ public void testAppendStringBuffer() {
+ StrBuilder sb = new StrBuilder();
+
+ sb = sb.append(new StringBuffer());
+ assertNotNull(sb);
+
+ sb = sb.append(new StringBuffer("junit"));
+
+ assertEquals ("junit", sb.toString());
+ }
+
+ public void testAppendStrBuilder() {
+ StrBuilder sb = new StrBuilder();
+
+ sb = sb.append((StrBuilder)null);
+ assertNotNull(sb);
+
+ sb = sb.append(new StrBuilder());
+ assertNotNull(sb);
+ assertEquals("", sb.toString());
+ }
+
+ public void toStringBuffer() {
+ StrBuilder sb = new StrBuilder();
+ assertEquals (new StringBuffer().toString(),
sb.toStringBuffer().toString());
+
+ sb.append("junit");
+ assertEquals(new StringBuffer("junit").toString(),
sb.toStringBuffer().toString());
+ }
}
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]