151b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski/* Licensed to the Apache Software Foundation (ASF) under one or more 22c87ad3a45cecf9e344487cad1abfdebe79f2c7cNarayan Kamath * contributor license agreements. See the NOTICE file distributed with 351b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * this work for additional information regarding copyright ownership. 451b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * The ASF licenses this file to You under the Apache License, Version 2.0 551b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * (the "License"); you may not use this file except in compliance with 651b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * the License. You may obtain a copy of the License at 751b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * 851b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * http://www.apache.org/licenses/LICENSE-2.0 951b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * 1051b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * Unless required by applicable law or agreed to in writing, software 1151b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * distributed under the License is distributed on an "AS IS" BASIS, 1251b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 1351b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * See the License for the specific language governing permissions and 1451b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * limitations under the License. 1551b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski */ 1651b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski 1751b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebskipackage org.apache.harmony.tests.java.nio.charset; 1851b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski 1951b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebskiimport java.nio.CharBuffer; 2051b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebskiimport java.nio.charset.CharacterCodingException; 2151b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebskiimport java.nio.charset.Charset; 2251b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski 2351b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski/** 2451b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * test case specific activity of utf-8 charset encoder 2551b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski */ 2651b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebskipublic class UTFCharsetEncoderTest extends CharsetEncoderTest { 2751b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski 2851b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski // charset for UTF-8 2951b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski private static final Charset CS = Charset.forName("utf-8"); 3051b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski 3151b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski /* 3251b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * @see CharsetEncoderTest#setUp() 3351b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski */ 3451b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski protected void setUp() throws Exception { 3551b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski cs = CS; 3651b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski specifiedReplacement = new byte[] { 63 }; 3751b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski super.setUp(); 3851b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski } 3951b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski 4051b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski /* 4151b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * @see CharsetEncoderTest#tearDown() 4251b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski */ 4351b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski protected void tearDown() throws Exception { 4451b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski super.tearDown(); 4551b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski } 4651b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski 4751b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski public void testCanEncodechar() throws CharacterCodingException { 480319995669db3d4cd8fcb73e01f9beaa1106bf2fNarayan Kamath // normal case for utfCS 490319995669db3d4cd8fcb73e01f9beaa1106bf2fNarayan Kamath assertTrue(encoder.canEncode('\u0077')); 500319995669db3d4cd8fcb73e01f9beaa1106bf2fNarayan Kamath assertTrue(encoder.canEncode('\uc2a3')); 510319995669db3d4cd8fcb73e01f9beaa1106bf2fNarayan Kamath 520319995669db3d4cd8fcb73e01f9beaa1106bf2fNarayan Kamath // for non-mapped char 530319995669db3d4cd8fcb73e01f9beaa1106bf2fNarayan Kamath assertTrue(encoder.canEncode('\uc2c0')); 540319995669db3d4cd8fcb73e01f9beaa1106bf2fNarayan Kamath } 5551b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski 5651b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski public void testCanEncodeCharSequence() { 5751b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski // normal case for utfCS 5851b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski assertTrue(encoder.canEncode("\u0077")); 5951b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski assertTrue(encoder.canEncode("\uc2a3")); 6051b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski 6151b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski // for non-mapped char 6251b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski assertTrue(encoder.canEncode("\uc2c0")); 630319995669db3d4cd8fcb73e01f9beaa1106bf2fNarayan Kamath 640319995669db3d4cd8fcb73e01f9beaa1106bf2fNarayan Kamath // surrogate char for unicode 650319995669db3d4cd8fcb73e01f9beaa1106bf2fNarayan Kamath // 1st byte: d800-dbff 6651b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski // 2nd byte: dc00-dfff 670319995669db3d4cd8fcb73e01f9beaa1106bf2fNarayan Kamath // valid surrogate pair 680319995669db3d4cd8fcb73e01f9beaa1106bf2fNarayan Kamath assertTrue(encoder.canEncode("\ud800\udc00")); 690319995669db3d4cd8fcb73e01f9beaa1106bf2fNarayan Kamath // invalid surrogate pair 7051b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski assertFalse(encoder.canEncode("\ud800\udb00")); 7151b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski } 7251b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski 7351b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski public void testSpecificDefaultValue() { 7451b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski assertEquals(2, encoder.averageBytesPerChar(), 0); 7551b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski assertEquals(3, encoder.maxBytesPerChar(), 0); 7651b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski } 7751b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski 7851b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski CharBuffer getMalformedCharBuffer() { 7951b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski return CharBuffer.wrap("\ud800 buffer"); 8051b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski } 8151b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski 8251b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski CharBuffer getUnmapCharBuffer() { 8351b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski return null; 8451b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski } 8551b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski 8651b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski CharBuffer getExceptionCharBuffer() { 8751b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski return null; 8851b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski } 8951b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski 9051b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski protected byte[] getIllegalByteArray() { 9151b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski return new byte[] { (byte) 0xd8, (byte) 0x00 }; 9251b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski } 9351b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski 9451b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski protected void assertFlushed() { 9551b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski } 9651b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski} 9751b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski