diff options
author | Android (Google) Code Review <android-gerrit@google.com> | 2009-07-15 14:18:58 -0700 |
---|---|---|
committer | Android (Google) Code Review <android-gerrit@google.com> | 2009-07-15 14:18:58 -0700 |
commit | 30c1371ef5297784c970a02bc2c850e948911d02 (patch) | |
tree | ebe187900588f6f4a534f4f143b3291f48bf9a7e | |
parent | 7c56ce3f48365eda13bd12134cf97bcc3bf8caf4 (diff) | |
parent | 283b3a99b7c7135db1d8a217629a76cf17ff0b7e (diff) | |
download | libcore-30c1371ef5297784c970a02bc2c850e948911d02.zip libcore-30c1371ef5297784c970a02bc2c850e948911d02.tar.gz libcore-30c1371ef5297784c970a02bc2c850e948911d02.tar.bz2 |
Merge change 7410 into donut
* changes:
Fix bug: Arrays.deepToSting renders "[null]" as "null"; "[[]]" as "[]"; etc.
-rw-r--r-- | luni/src/main/java/java/util/Arrays.java | 20 | ||||
-rw-r--r-- | luni/src/test/java/org/apache/harmony/luni/tests/java/util/ArraysTest.java | 33 |
2 files changed, 43 insertions, 10 deletions
diff --git a/luni/src/main/java/java/util/Arrays.java b/luni/src/main/java/java/util/Arrays.java index 6af24b0..d479945 100644 --- a/luni/src/main/java/java/util/Arrays.java +++ b/luni/src/main/java/java/util/Arrays.java @@ -2912,8 +2912,14 @@ public class Arrays { * @since Android 1.0 */ public static String deepToString(Object[] array) { + // Special case null to prevent NPE + if (array == null) { + return "null"; //$NON-NLS-1$ + } // delegate this to the recursive method - return deepToStringImpl(array, new Object[] { array }, null); + StringBuilder buf = new StringBuilder(2 + array.length * 5); + deepToStringImpl(array, new Object[] { array }, buf); + return buf.toString(); } /** @@ -2932,18 +2938,13 @@ public class Arrays { * @return the result. * @see #deepToString(Object[]) */ - private static String deepToStringImpl(Object[] array, Object[] origArrays, + private static void deepToStringImpl(Object[] array, Object[] origArrays, StringBuilder sb) { if (array == null) { - return "null"; //$NON-NLS-1$ - } - if (array.length == 0) { - return "[]"; //$NON-NLS-1$ + sb.append("null"); //$NON-NLS-1$ + return; } - if (sb == null) { - sb = new StringBuilder(2 + array.length * 5); - } sb.append('['); for (int i = 0; i < array.length; i++) { @@ -3006,7 +3007,6 @@ public class Arrays { } } sb.append(']'); - return sb.toString(); } /** diff --git a/luni/src/test/java/org/apache/harmony/luni/tests/java/util/ArraysTest.java b/luni/src/test/java/org/apache/harmony/luni/tests/java/util/ArraysTest.java index 3b673f3..b26dd43 100644 --- a/luni/src/test/java/org/apache/harmony/luni/tests/java/util/ArraysTest.java +++ b/luni/src/test/java/org/apache/harmony/luni/tests/java/util/ArraysTest.java @@ -468,6 +468,39 @@ public class ArraysTest extends TestCase { fail("No NPE"); } catch (NullPointerException e) {} } + + /** + * @tests java.util.Arrays#deepToString(Object[]) + * @bug 1452542 + */ + @TestTargetNew( + level = TestLevel.COMPLETE, + notes = "Tests fix for Android bug 1452542", + method = "deepToString", + args = {java.lang.Object[].class} + ) + public void test_deepToStringNestedEmptyArray() { + Object[][] foo = new Object[1][]; + foo[0] = new Object[0]; + assertEquals("[[]]", Arrays.deepToString(foo)); + } + + /** + * @tests java.util.Arrays#deepToString(Object[]) + * @bug 1452542 + */ + @TestTargetNew( + level = TestLevel.COMPLETE, + notes = "Tests fix for Android bug 1452542", + method = "deepToString", + args = {java.lang.Object[].class} + ) + public void test_deepToStringNestedNullArray() { + Object[][] foo = new Object[1][]; + assertEquals("[null]", Arrays.deepToString(foo)); + } + + @TestTargetNew( level = TestLevel.COMPLETE, notes = "", |