You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@harmony.apache.org by te...@apache.org on 2006/03/13 20:46:38 UTC
svn commit: r385636 - in
/incubator/harmony/enhanced/classlib/trunk/modules/text/src:
main/java/java/text/BreakIterator.java
test/java/org/apache/harmony/tests/java/text/BreakIteratorTest.java
Author: tellison
Date: Mon Mar 13 11:46:37 2006
New Revision: 385636
URL: http://svn.apache.org/viewcvs?rev=385636&view=rev
Log:
Apply patch for HARMONY-172 (Harmony text component has some API difference with JSE 5 spec)
Modified:
incubator/harmony/enhanced/classlib/trunk/modules/text/src/main/java/java/text/BreakIterator.java
incubator/harmony/enhanced/classlib/trunk/modules/text/src/test/java/org/apache/harmony/tests/java/text/BreakIteratorTest.java
Modified: incubator/harmony/enhanced/classlib/trunk/modules/text/src/main/java/java/text/BreakIterator.java
URL: http://svn.apache.org/viewcvs/incubator/harmony/enhanced/classlib/trunk/modules/text/src/main/java/java/text/BreakIterator.java?rev=385636&r1=385635&r2=385636&view=diff
==============================================================================
--- incubator/harmony/enhanced/classlib/trunk/modules/text/src/main/java/java/text/BreakIterator.java (original)
+++ incubator/harmony/enhanced/classlib/trunk/modules/text/src/main/java/java/text/BreakIterator.java Mon Mar 13 11:46:37 2006
@@ -61,6 +61,10 @@
*/
public static final int DONE = -1;
+ private static final int LONG_LENGTH = 8;
+ private static final int INT_LENGTH = 4;
+ private static final int SHORT_LENGTH = 2;
+
/*
* -----------------------------------------------------------------------
* variables
@@ -365,26 +369,65 @@
}
/**
- * This method is added by Java SE 5 without any spec, but will be removed
- * by Java SE 6, so this method is not implemented by Harmony.
+ * Get a long value from the given byte array, start from given offset.
+ *
+ * @param buf the bytes to be converted
+ * @param offset the start position of conversion
+ * @return the converted long value
*/
protected static long getLong(byte[] buf, int offset) {
- throw new NotYetImplementedException();
+ if(null == buf){
+ throw new NullPointerException();
+ }
+ if(offset < 0 || offset + LONG_LENGTH > buf.length){
+ throw new ArrayIndexOutOfBoundsException();
+ }
+ long result = 0;
+ for (int i = offset; i < offset + LONG_LENGTH; i++) {
+ result = (result << 8) | (buf[i] & 0xff);
+ }
+ return result;
}
/**
- * This method is added by Java SE 5 without any spec, but will be removed
- * by Java SE 6, so this method is not implemented by Harmony.
- */
+ * Get a ing value from the given byte array, start from given offset.
+ *
+ * @param buf the bytes to be converted
+ * @param offset the start position of conversion
+ * @return the converted int value
+ */
protected static int getInt(byte[] buf, int offset) {
- throw new NotYetImplementedException();
+ if(null == buf){
+ throw new NullPointerException();
+ }
+ if(offset < 0 || offset + INT_LENGTH > buf.length){
+ throw new ArrayIndexOutOfBoundsException();
+ }
+ int result = 0;
+ for (int i = offset; i < offset + INT_LENGTH; i++) {
+ result = (result << 8) | (buf[i] & 0xff);
+ }
+ return result;
}
/**
- * This method is added by Java SE 5 without any spec, but will be removed
- * by Java SE 6, so this method is not implemented by Harmony.
+ * Get a short value from the given byte array, start from given offset.
+ *
+ * @param buf the bytes to be converted
+ * @param offset the start position of conversion
+ * @return the converted short value
*/
protected static short getShort(byte[] buf, int offset) {
- throw new NotYetImplementedException();
+ if(null == buf){
+ throw new NullPointerException();
+ }
+ if(offset < 0 || offset + SHORT_LENGTH > buf.length){
+ throw new ArrayIndexOutOfBoundsException();
+ }
+ short result = 0;
+ for (int i = offset; i < offset + SHORT_LENGTH; i++) {
+ result = (short)((result << 8) | (buf[i] & 0xff));
+ }
+ return result;
}
}
Modified: incubator/harmony/enhanced/classlib/trunk/modules/text/src/test/java/org/apache/harmony/tests/java/text/BreakIteratorTest.java
URL: http://svn.apache.org/viewcvs/incubator/harmony/enhanced/classlib/trunk/modules/text/src/test/java/org/apache/harmony/tests/java/text/BreakIteratorTest.java?rev=385636&r1=385635&r2=385636&view=diff
==============================================================================
--- incubator/harmony/enhanced/classlib/trunk/modules/text/src/test/java/org/apache/harmony/tests/java/text/BreakIteratorTest.java (original)
+++ incubator/harmony/enhanced/classlib/trunk/modules/text/src/test/java/org/apache/harmony/tests/java/text/BreakIteratorTest.java Mon Mar 13 11:46:37 2006
@@ -17,6 +17,7 @@
package org.apache.harmony.tests.java.text;
import java.text.BreakIterator;
+import java.text.CharacterIterator;
import java.util.Locale;
import junit.framework.TestCase;
@@ -30,5 +31,144 @@
int n = bi.first();
n = bi.next();
assertEquals("Assert 0: next() returns incorrect value ", 4, n);
+ }
+
+ public void test_getShort() {
+ try {
+ MockBreakIterator.publicGetShort(null, 0);
+ fail("should throw NPE.");
+ } catch (NullPointerException e) {
+ }
+ try {
+ MockBreakIterator.publicGetShort(null, -1);
+ fail("should throw NPE.");
+ } catch (NullPointerException e) {
+ }
+ try {
+ MockBreakIterator.publicGetShort(new byte[] { 0, 0, 0, 1 , 1}, -1);
+ fail("should throw ArrayIndexOutOfBoundsException.");
+ } catch (ArrayIndexOutOfBoundsException e) {
+ }
+ try {
+ MockBreakIterator.publicGetShort(new byte[] { 0, 0 }, 1);
+ fail("should throw ArrayIndexOutOfBoundsException.");
+ } catch (ArrayIndexOutOfBoundsException e) {
+ }
+ assertEquals(0, MockBreakIterator.publicGetShort(new byte[] { 0, 0 }, 0));
+ assertEquals(1, MockBreakIterator.publicGetShort(new byte[] { 0, 1 }, 0));
+ assertEquals(-1, MockBreakIterator.publicGetShort(new byte[] { (byte)0xff, (byte)0xff }, 0));
+ assertEquals(1, MockBreakIterator.publicGetShort(new byte[] { 1, 0, 1, 0 }, 1));
+ assertEquals(1, MockBreakIterator.publicGetShort(new byte[] { 0, 0, 1, 0 }, 1));
+ assertEquals(1, MockBreakIterator.publicGetShort(new byte[] { 0, 0, 1, 1 }, 1));
+ assertEquals(257, MockBreakIterator.publicGetShort(new byte[] { 0, 1, 1 }, 1));
+ }
+
+ public void test_getInt() {
+ try {
+ MockBreakIterator.publicGetInt(null, 0);
+ fail("should throw NPE.");
+ } catch (NullPointerException e) {
+ }
+ try {
+ MockBreakIterator.publicGetInt(null, -1);
+ fail("should throw NPE.");
+ } catch (NullPointerException e) {
+ }
+ try {
+ MockBreakIterator.publicGetInt(new byte[] { 0, 0, 0, 1 , 1}, -1);
+ fail("should throw ArrayIndexOutOfBoundsException.");
+ } catch (ArrayIndexOutOfBoundsException e) {
+ }
+ try {
+ MockBreakIterator.publicGetInt(new byte[] { 0, 0, 0, 0}, 1);
+ fail("should throw ArrayIndexOutOfBoundsException.");
+ } catch (ArrayIndexOutOfBoundsException e) {
+ }
+ assertEquals(0, MockBreakIterator.publicGetInt(new byte[] { 0, 0, 0, 0 }, 0));
+ assertEquals(1, MockBreakIterator.publicGetInt(new byte[] { 0, 0, 0, 1 }, 0));
+ assertEquals(-1, MockBreakIterator.publicGetInt(new byte[] { (byte)0xff, (byte)0xff, (byte)0xff, (byte)0xff }, 0));
+ assertEquals(1, MockBreakIterator.publicGetInt(new byte[] { 1, 0, 0, 0, 1, 0 }, 1));
+ assertEquals(1, MockBreakIterator.publicGetInt(new byte[] { 0, 0, 0, 0, 1, 0 }, 1));
+ assertEquals(1, MockBreakIterator.publicGetInt(new byte[] { 0, 0, 0, 0, 1, 1 }, 1));
+ assertEquals(257, MockBreakIterator.publicGetInt(new byte[] { 0, 0, 0, 1, 1 }, 1));
+ }
+
+ public void test_getLong() {
+ try {
+ MockBreakIterator.publicGetLong(null, 0);
+ fail("should throw NPE.");
+ } catch (NullPointerException e) {
+ }
+ try {
+ MockBreakIterator.publicGetLong(null, -1);
+ fail("should throw NPE.");
+ } catch (NullPointerException e) {
+ }
+ try {
+ MockBreakIterator.publicGetLong(new byte[] { 0, 0, 0, 0, 0, 0, 1, 1}, -1);
+ fail("should throw ArrayIndexOutOfBoundsException.");
+ } catch (ArrayIndexOutOfBoundsException e) {
+ }
+ try {
+ MockBreakIterator.publicGetLong(new byte[] { 0, 0, 0, 0, 0, 0, 1, 1}, 1);
+ fail("should throw ArrayIndexOutOfBoundsException.");
+ } catch (ArrayIndexOutOfBoundsException e) {
+ }
+ assertEquals(0, MockBreakIterator.publicGetLong(new byte[] { 0, 0, 0, 0, 0, 0, 0, 0 }, 0));
+ assertEquals(1, MockBreakIterator.publicGetLong(new byte[] { 0, 0, 0, 0, 0, 0, 0, 1 }, 0));
+ assertEquals(-1, MockBreakIterator.publicGetLong(new byte[] { (byte)0xff, (byte)0xff, (byte)0xff, (byte)0xff, (byte)0xff, (byte)0xff, (byte)0xff, (byte)0xff }, 0));
+ assertEquals(1, MockBreakIterator.publicGetLong(new byte[] { 1, 0, 0, 0, 0, 0, 0, 0, 1, 0 }, 1));
+ assertEquals(1, MockBreakIterator.publicGetLong(new byte[] { 0, 0, 0, 0, 0, 0, 0, 0, 1, 0 }, 1));
+ assertEquals(1, MockBreakIterator.publicGetLong(new byte[] { 0, 0, 0, 0, 0, 0, 0, 0, 1, 1 }, 1));
+ assertEquals(257, MockBreakIterator.publicGetLong(new byte[] { 0, 0, 0, 0, 0, 0, 0, 1, 1 }, 1));
+ }
+
+ private static class MockBreakIterator extends BreakIterator {
+ public static int publicGetInt(byte[] buf, int offset) {
+ return BreakIterator.getInt(buf, offset);
+ }
+
+ public static long publicGetLong(byte[] buf, int offset) {
+ return BreakIterator.getLong(buf, offset);
+ }
+
+ public static short publicGetShort(byte[] buf, int offset) {
+ return BreakIterator.getShort(buf, offset);
+ }
+
+ public int current() {
+ return 0;
+ }
+
+ public int first() {
+ return 0;
+ }
+
+ public int following(int offset) {
+ return 0;
+ }
+
+ public CharacterIterator getText() {
+ return null;
+ }
+
+ public int last() {
+ return 0;
+ }
+
+ public int next() {
+ return 0;
+ }
+
+ public int next(int n) {
+ return 0;
+ }
+
+ public int previous() {
+ return 0;
+ }
+
+ public void setText(CharacterIterator newText) {
+ }
}
}