156ddb0af9c75dca21f10cd26e73b9f301c58771eElliott Hughes/* Licensed to the Apache Software Foundation (ASF) under one or more
256ddb0af9c75dca21f10cd26e73b9f301c58771eElliott Hughes * contributor license agreements.  See the NOTICE file distributed with
356ddb0af9c75dca21f10cd26e73b9f301c58771eElliott Hughes * this work for additional information regarding copyright ownership.
456ddb0af9c75dca21f10cd26e73b9f301c58771eElliott Hughes * The ASF licenses this file to You under the Apache License, Version 2.0
556ddb0af9c75dca21f10cd26e73b9f301c58771eElliott Hughes * (the "License"); you may not use this file except in compliance with
656ddb0af9c75dca21f10cd26e73b9f301c58771eElliott Hughes * the License.  You may obtain a copy of the License at
756ddb0af9c75dca21f10cd26e73b9f301c58771eElliott Hughes *
856ddb0af9c75dca21f10cd26e73b9f301c58771eElliott Hughes *     http://www.apache.org/licenses/LICENSE-2.0
956ddb0af9c75dca21f10cd26e73b9f301c58771eElliott Hughes *
1056ddb0af9c75dca21f10cd26e73b9f301c58771eElliott Hughes * Unless required by applicable law or agreed to in writing, software
1156ddb0af9c75dca21f10cd26e73b9f301c58771eElliott Hughes * distributed under the License is distributed on an "AS IS" BASIS,
1256ddb0af9c75dca21f10cd26e73b9f301c58771eElliott Hughes * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
1356ddb0af9c75dca21f10cd26e73b9f301c58771eElliott Hughes * See the License for the specific language governing permissions and
1456ddb0af9c75dca21f10cd26e73b9f301c58771eElliott Hughes * limitations under the License.
1556ddb0af9c75dca21f10cd26e73b9f301c58771eElliott Hughes */
1656ddb0af9c75dca21f10cd26e73b9f301c58771eElliott Hughes
17e5fea3d504609d22337a5311d3ce0e72314bceeeNarayan Kamathpackage org.apache.harmony.tests.java.nio.charset;
1856ddb0af9c75dca21f10cd26e73b9f301c58771eElliott Hughes
1956ddb0af9c75dca21f10cd26e73b9f301c58771eElliott Hughesimport java.io.Serializable;
2056ddb0af9c75dca21f10cd26e73b9f301c58771eElliott Hughesimport java.nio.charset.CharacterCodingException;
2156ddb0af9c75dca21f10cd26e73b9f301c58771eElliott Hughesimport java.nio.charset.UnmappableCharacterException;
2256ddb0af9c75dca21f10cd26e73b9f301c58771eElliott Hughes
2356ddb0af9c75dca21f10cd26e73b9f301c58771eElliott Hughesimport junit.framework.TestCase;
2456ddb0af9c75dca21f10cd26e73b9f301c58771eElliott Hughes
2556ddb0af9c75dca21f10cd26e73b9f301c58771eElliott Hughesimport org.apache.harmony.testframework.serialization.SerializationTest;
2656ddb0af9c75dca21f10cd26e73b9f301c58771eElliott Hughesimport org.apache.harmony.testframework.serialization.SerializationTest.SerializableAssert;
2756ddb0af9c75dca21f10cd26e73b9f301c58771eElliott Hughes
2856ddb0af9c75dca21f10cd26e73b9f301c58771eElliott Hughes/**
2956ddb0af9c75dca21f10cd26e73b9f301c58771eElliott Hughes * Test class UnmappableCharacterException.
3056ddb0af9c75dca21f10cd26e73b9f301c58771eElliott Hughes */
3156ddb0af9c75dca21f10cd26e73b9f301c58771eElliott Hughespublic class UnmappableCharacterExceptionTest extends TestCase {
3256ddb0af9c75dca21f10cd26e73b9f301c58771eElliott Hughes
3356ddb0af9c75dca21f10cd26e73b9f301c58771eElliott Hughes	public void testConstructor() {
3456ddb0af9c75dca21f10cd26e73b9f301c58771eElliott Hughes		UnmappableCharacterException ex = new UnmappableCharacterException(3);
3556ddb0af9c75dca21f10cd26e73b9f301c58771eElliott Hughes		assertTrue(ex instanceof CharacterCodingException);
3656ddb0af9c75dca21f10cd26e73b9f301c58771eElliott Hughes		assertNull(ex.getCause());
3756ddb0af9c75dca21f10cd26e73b9f301c58771eElliott Hughes		assertEquals(ex.getInputLength(), 3);
3856ddb0af9c75dca21f10cd26e73b9f301c58771eElliott Hughes		assertTrue(ex.getMessage().indexOf("3") != -1);
3956ddb0af9c75dca21f10cd26e73b9f301c58771eElliott Hughes
4056ddb0af9c75dca21f10cd26e73b9f301c58771eElliott Hughes		ex = new UnmappableCharacterException(-3);
4156ddb0af9c75dca21f10cd26e73b9f301c58771eElliott Hughes		assertNull(ex.getCause());
4256ddb0af9c75dca21f10cd26e73b9f301c58771eElliott Hughes		assertEquals(ex.getInputLength(), -3);
4356ddb0af9c75dca21f10cd26e73b9f301c58771eElliott Hughes		assertTrue(ex.getMessage().indexOf("-3") != -1);
4456ddb0af9c75dca21f10cd26e73b9f301c58771eElliott Hughes
4556ddb0af9c75dca21f10cd26e73b9f301c58771eElliott Hughes		ex = new UnmappableCharacterException(0);
4656ddb0af9c75dca21f10cd26e73b9f301c58771eElliott Hughes		assertNull(ex.getCause());
4756ddb0af9c75dca21f10cd26e73b9f301c58771eElliott Hughes		assertEquals(ex.getInputLength(), 0);
4856ddb0af9c75dca21f10cd26e73b9f301c58771eElliott Hughes		assertTrue(ex.getMessage().indexOf("0") != -1);
4956ddb0af9c75dca21f10cd26e73b9f301c58771eElliott Hughes
5056ddb0af9c75dca21f10cd26e73b9f301c58771eElliott Hughes	}
5156ddb0af9c75dca21f10cd26e73b9f301c58771eElliott Hughes
5256ddb0af9c75dca21f10cd26e73b9f301c58771eElliott Hughes    // comparator for UnmappableCharacterException objects
5356ddb0af9c75dca21f10cd26e73b9f301c58771eElliott Hughes    private static final SerializableAssert COMPARATOR = new SerializableAssert() {
5456ddb0af9c75dca21f10cd26e73b9f301c58771eElliott Hughes        public void assertDeserialized(Serializable initial,
5556ddb0af9c75dca21f10cd26e73b9f301c58771eElliott Hughes                Serializable deserialized) {
5656ddb0af9c75dca21f10cd26e73b9f301c58771eElliott Hughes
5756ddb0af9c75dca21f10cd26e73b9f301c58771eElliott Hughes            // do common checks for all throwable objects
5856ddb0af9c75dca21f10cd26e73b9f301c58771eElliott Hughes            SerializationTest.THROWABLE_COMPARATOR.assertDeserialized(initial,
5956ddb0af9c75dca21f10cd26e73b9f301c58771eElliott Hughes                    deserialized);
6056ddb0af9c75dca21f10cd26e73b9f301c58771eElliott Hughes
6156ddb0af9c75dca21f10cd26e73b9f301c58771eElliott Hughes            UnmappableCharacterException initEx = (UnmappableCharacterException) initial;
6256ddb0af9c75dca21f10cd26e73b9f301c58771eElliott Hughes            UnmappableCharacterException desrEx = (UnmappableCharacterException) deserialized;
6356ddb0af9c75dca21f10cd26e73b9f301c58771eElliott Hughes
6456ddb0af9c75dca21f10cd26e73b9f301c58771eElliott Hughes            assertEquals("InputLength", initEx.getInputLength(), desrEx
6556ddb0af9c75dca21f10cd26e73b9f301c58771eElliott Hughes                    .getInputLength());
6656ddb0af9c75dca21f10cd26e73b9f301c58771eElliott Hughes        }
6756ddb0af9c75dca21f10cd26e73b9f301c58771eElliott Hughes    };
6856ddb0af9c75dca21f10cd26e73b9f301c58771eElliott Hughes
6956ddb0af9c75dca21f10cd26e73b9f301c58771eElliott Hughes    /**
7056ddb0af9c75dca21f10cd26e73b9f301c58771eElliott Hughes     * @tests serialization/deserialization compatibility.
7156ddb0af9c75dca21f10cd26e73b9f301c58771eElliott Hughes     */
7256ddb0af9c75dca21f10cd26e73b9f301c58771eElliott Hughes    public void testSerializationSelf() throws Exception {
7356ddb0af9c75dca21f10cd26e73b9f301c58771eElliott Hughes
7456ddb0af9c75dca21f10cd26e73b9f301c58771eElliott Hughes        SerializationTest.verifySelf(new UnmappableCharacterException(11),
7556ddb0af9c75dca21f10cd26e73b9f301c58771eElliott Hughes                COMPARATOR);
7656ddb0af9c75dca21f10cd26e73b9f301c58771eElliott Hughes    }
7756ddb0af9c75dca21f10cd26e73b9f301c58771eElliott Hughes
7856ddb0af9c75dca21f10cd26e73b9f301c58771eElliott Hughes    /**
7956ddb0af9c75dca21f10cd26e73b9f301c58771eElliott Hughes     * @tests serialization/deserialization compatibility with RI.
8056ddb0af9c75dca21f10cd26e73b9f301c58771eElliott Hughes     */
8156ddb0af9c75dca21f10cd26e73b9f301c58771eElliott Hughes    public void testSerializationCompatibility() throws Exception {
8256ddb0af9c75dca21f10cd26e73b9f301c58771eElliott Hughes
8356ddb0af9c75dca21f10cd26e73b9f301c58771eElliott Hughes        SerializationTest.verifyGolden(this, new UnmappableCharacterException(
8456ddb0af9c75dca21f10cd26e73b9f301c58771eElliott Hughes                11), COMPARATOR);
8556ddb0af9c75dca21f10cd26e73b9f301c58771eElliott Hughes    }
8656ddb0af9c75dca21f10cd26e73b9f301c58771eElliott Hughes}
87