You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@harmony.apache.org by "Richard Liang (JIRA)" <ji...@apache.org> on 2006/02/28 06:08:30 UTC
[jira] Commented: (HARMONY-124) java.nio.charset.CharsetDecoder
doesn't throw CoderMalfunctionError exception when decodeLoop threw
unexpected exception.
[ http://issues.apache.org/jira/browse/HARMONY-124?page=comments#action_12368074 ]
Richard Liang commented on HARMONY-124:
---------------------------------------
Sorry, there are bugs in my test cases and patches.
1. Refined test cases (the three Mock class are the same)
/*
* Test malfunction decode(ByteBuffer)
*/
public void testDecode_CoderMalfunctionError() throws Exception {
MockMalfunctionCharset cs = new MockMalfunctionCharset("Harmony-124-1", null);
try {
cs.newDecoder().onMalformedInput(CodingErrorAction.REPLACE)
.onUnmappableCharacter(CodingErrorAction.REPLACE).decode(
ByteBuffer.wrap(new byte[] { 0x00, 0x11 }));
fail("should throw CoderMalfunctionError");// NON-NLS-1$
} catch (CoderMalfunctionError e) {
// expected
}
}
/*
* Test malfunction decode(ByteBuffer)
*/
public void testDecode_NoCoderMalfunctionError() throws Exception {
MockMalfunctionCharset cs = new MockMalfunctionCharset("Harmony-124-2", null); //$NON-NLS-1$
try {
cs.decode(ByteBuffer.wrap(new byte[] { 0x00, 0x11 }));
fail("Charset.decode should throw CoderMalfunctionError");// NON-NLS-1
} catch (CoderMalfunctionError e) {
//expected
}
}
2. The Charset_patch.txt is unnecessary, please just apply CharsetDecoder_patch.txt.
> java.nio.charset.CharsetDecoder doesn't throw CoderMalfunctionError exception when decodeLoop threw unexpected exception.
> -------------------------------------------------------------------------------------------------------------------------
>
> Key: HARMONY-124
> URL: http://issues.apache.org/jira/browse/HARMONY-124
> Project: Harmony
> Type: Bug
> Components: Classlib
> Reporter: Richard Liang
> Attachments: CharsetDecoder_patch.txt, Charset_patch.txt
>
> public final CoderResult decode(ByteBuffer in, CharBuffer out, boolean endOfInput)
> As spec says, the method throws CoderMalfunctionError if an invocation of the decodeLoop method threw an unexpected exception.
> However, Harmony doesn't throws CoderMalfunctionError when decodeLoop method threw an unexpected exception.
> The following test cases pass on RI , but fail on Harmony.
> /*
> * Test malfunction decode(ByteBuffer)
> */
> public void testDecode_CoderMalfunctionError() throws Exception {
> MockMalfunctionCharset cs = new MockMalfunctionCharset("mock", null);
> try{
> cs.newDecoder().onMalformedInput(CodingErrorAction.REPLACE)
> .onUnmappableCharacter(CodingErrorAction.REPLACE).decode(ByteBuffer.wrap(new byte[]{0x00,0x11}));
> fail("should throw CoderMalfunctionError");//NON-NLS-1$
> }catch(CoderMalfunctionError e){
> //expected
> }
> }
> /*
> * Test malfunction decode(ByteBuffer)
> */
> public void testDecode_NoCoderMalfunctionError() throws Exception {
> MockMalfunctionCharset cs = new MockMalfunctionCharset("mock", null);
> try{
> cs.decode(ByteBuffer.wrap(new byte[]{0x00,0x11}));
> }catch(CoderMalfunctionError e){
> fail("Charset.decode should return silently");//NON-NLS-1
> }
> }
> /*
> * Mock charset class with malfunction decode & encode.
> */
> static final class MockMalfunctionCharset extends Charset {
> public MockMalfunctionCharset(String canonicalName, String[] aliases) {
> super(canonicalName, aliases);
> }
> public boolean contains(Charset cs) {
> return false;
> }
> public CharsetDecoder newDecoder() {
> return new MockMalfunctionDecoder(this);
> }
> public CharsetEncoder newEncoder() {
> return new MockMalfunctionEncoder(this);
> }
> }
> /*
> * Mock decoder. decodeLoop always throws unexpected exception.
> */
> static class MockMalfunctionDecoder extends java.nio.charset.CharsetDecoder {
> public MockMalfunctionDecoder(Charset cs) {
> super(cs, 1, 10);
> }
> protected CoderResult decodeLoop(ByteBuffer in, CharBuffer out) {
> throw new BufferOverflowException();
> }
> }
> /*
> * Mock encoder. encodeLoop always throws unexpected exception.
> */
> static class MockMalfunctionEncoder extends java.nio.charset.CharsetEncoder {
> public MockMalfunctionEncoder(Charset cs) {
> super(cs, 1, 3, new byte[] { (byte) '?' });
> }
> protected CoderResult encodeLoop(CharBuffer in, ByteBuffer out) {
> throw new BufferOverflowException();
> }
> }
--
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators:
http://issues.apache.org/jira/secure/Administrators.jspa
-
For more information on JIRA, see:
http://www.atlassian.com/software/jira