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