3261N/A * Copyright (c) 2003, 2010, Oracle and/or its affiliates. All rights reserved. 0N/A * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. 0N/A * This code is free software; you can redistribute it and/or modify it 0N/A * under the terms of the GNU General Public License version 2 only, as 0N/A * published by the Free Software Foundation. 0N/A * This code is distributed in the hope that it will be useful, but WITHOUT 0N/A * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or 0N/A * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License 0N/A * version 2 for more details (a copy is included in the LICENSE file that 0N/A * accompanied this code). 0N/A * You should have received a copy of the GNU General Public License version 0N/A * 2 along with this work; if not, write to the Free Software Foundation, 0N/A * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. 2362N/A * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA 2362N/A * or visit www.oracle.com if you need additional information or have any 0N/A * @bug 4533872 4915683 4985217 5017280 0N/A * @summary Unit tests for supplementary character support (JSR-204) 0N/A test1();
// Test for codePointAt(int index) 0N/A test2();
// Test for codePointBefore(int index) 0N/A test4();
// Test for appendCodePoint(int codePoint) 0N/A test5();
// Test for codePointCount(int beginIndex, int endIndex) 0N/A test6();
// Test for offsetByCodePoints(int index, int offset) 0N/A /* Text strings which are used as input data. 0N/A * The comment above each text string means the index of each 16-bit char 0N/A /* 111 1 111111 22222 0N/A 0123 4 5678 9 012 3 456789 01234 */ 0N/A "abc\uD800\uDC00def\uD800\uD800ab\uD800\uDC00cdefa\uDC00bcdef",
0N/A /* 1 1111 1111 1 222 0N/A 0 12345 6789 0 1234 5678 9 012 */ 0N/A "\uD800defg\uD800hij\uD800\uDC00klm\uDC00nop\uDC00\uD800rt\uDC00",
0N/A /* 11 1 1111 1 112 222 0N/A 0 12345 6 78901 2 3456 7 890 123 */ 0N/A "\uDC00abcd\uDBFF\uDFFFefgh\uD800\uDC009ik\uDC00\uDC00lm\uDC00no\uD800",
0N/A /* 111 111111 1 22 2 0N/A 0 1 2345 678 9 012 345678 9 01 2 */ 0N/A "\uD800\uDC00!#$\uD800%&\uD800\uDC00;+\uDC00<>;=^\uDC00\\@\uD800\uDC00",
2563N/A // includes an undefined supplementary character in Unicode 4.0.0 0N/A 0 1 2345 6 789 0 12 3 4567 8 */ 0N/A "\uDB40\uDE00abc\uDE01\uDB40de\uDB40\uDE02f\uDB40\uDE03ghi\uDB40\uDE02",
0N/A /* Expected results for: 0N/A * test1(): for codePointAt() 0N/A * Each character in each array is the golden data for each text string 0N/A * in the above input data. For example, the first data in each array is 0N/A * for the first input string. 0N/A {
'a',
0xD800,
0xDC00,
0x10000,
0xE0200},
// codePointAt(0) 0N/A {
0xD800,
0x10000,
'g',
0xDC00,
0xE0202},
// codePointAt(9) 0N/A {
'f',
0xDC00,
0xD800,
0xDC00,
0xDE02},
// codePointAt(length-1) 0N/A * Test for codePointAt(int index) method 0N/A * Abnormal case - verify that an exception is thrown. 0N/A /* Expected results for: 0N/A * test2(): for codePointBefore() 0N/A * Each character in each array is the golden data for each text string 0N/A * in the above input data. For example, the first data in each array is 0N/A * for the first input string. 0N/A {
'a',
0xD800,
0xDC00,
0xD800,
0xDB40},
// codePointBefore(1) 0N/A {
0xD800,
'l',
0x10000,
0xDC00,
0xDB40},
// codePointBefore(13) 0N/A {
'f',
0xDC00,
0xD800,
0x10000,
0xE0202},
// codePointBefore(length) 0N/A * Test for codePointBefore(int index) method 0N/A * Abnormal case - verify that an exception is thrown. 0N/A /* Expected results for: 0N/A * test3(): for reverse() 0N/A * Unlike golden1 and golden2, each array is the golden data for each text 0N/A * string in the above input data. For example, the first array is for 0N/A * the first input string. 0N/A "fedcb\uDC00afedc\uD800\uDC00ba\uD800\uD800fed\uD800\uDC00cba",
0N/A "\uDC00tr\uD800\uDC00pon\uDC00mlk\uD800\uDC00jih\uD800gfed\uD800",
0N/A "\uD800on\uDC00ml\uDC00\uDC00ki9\uD800\uDC00hgfe\uDBFF\uDFFFdcba\uDC00",
0N/A "\uD800\uDC00@\\\uDC00^=;><\uDC00+;\uD800\uDC00&%\uD800$#!\uD800\uDC00",
2563N/A // includes an undefined supplementary character in Unicode 4.0.0 0N/A "\uDB40\uDE02ihg\uDB40\uDE03f\uDB40\uDE02ed\uDB40\uDE01cba\uDB40\uDE00",
0N/A // Additional input data & expected result for test3() 0N/A {
"a\uD800\uDC00",
"\uD800\uDC00a"},
0N/A {
"a\uDC00\uD800",
"\uD800\uDC00a"},
0N/A {
"\uD800\uDC00a",
"a\uD800\uDC00"},
0N/A {
"\uDC00\uD800a",
"a\uD800\uDC00"},
0N/A {
"\uDC00\uD800\uD801",
"\uD801\uD800\uDC00"},
0N/A {
"\uDC00\uD800\uDC01",
"\uD800\uDC01\uDC00"},
0N/A {
"\uD801\uD800\uDC00",
"\uD800\uDC00\uD801"},
0N/A {
"\uD800\uDC01\uDC00",
"\uDC00\uD800\uDC01"},
0N/A {
"\uD800\uDC00\uDC01\uD801",
"\uD801\uDC01\uD800\uDC00"},
0N/A * Test for reverse() method 0N/A * Test for appendCodePoint() method 0N/A "appendCodePoint() produced a wrong result with input["+i+
"]");
0N/A * Test codePointCount(int, int) 0N/A * This test case assumes that 0N/A * Character.codePointCount(CharSequence, int, int) works 0N/A * Test offsetByCodePoints(int, int) 0N/A * This test case assumes that 0N/A * Character.codePointCount(CharSequence, int, int) works 0N/A "codePoint" + (
isAt ?
"At" :
"Before") +
"(" +
index +
") for <" 0N/A "codePoint" + (
isAt ?
"At" :
"Before") +
"(" +
index +
") for <" 0N/A +
sb +
"> should throw StringIndexOutOfBoundsPointerException.");
0N/A +
" returned an unexpected value. got " 0N/A +
" returned an unexpected value. got <"