BidiConformance.java revision 1280
2976N/A * Copyright (c) 2009 Sun Microsystems, Inc. All Rights Reserved. 2976N/A * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. 2976N/A * This code is free software; you can redistribute it and/or modify it 2976N/A * under the terms of the GNU General Public License version 2 only, as 2976N/A * published by the Free Software Foundation. 2976N/A * This code is distributed in the hope that it will be useful, but WITHOUT 2976N/A * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or 2976N/A * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License 2976N/A * version 2 for more details (a copy is included in the LICENSE file that 2976N/A * You should have received a copy of the GNU General Public License version 2976N/A * 2 along with this work; if not, write to the Free Software Foundation, 2976N/A * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. 2976N/A * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, 2976N/A * CA 95054 USA or visit www.sun.com if you need additional information or 2976N/A * @summary confirm the behavior of new Bidi implementation. (Backward compatibility) ": Bidi(AttributedCharacterIterator\"" +
": RUN_DIRECTION_LTR, BIDI_EMBEDDING(1)");
": RUN_DIERCTION_LTR, BIDI_EMBEDDING(2)");
": RUN_DIRECTIOIN_LTR, BIDI_EMBEDDING(-3)");
": RUN_DIRECTION_LTR, BIDI_EMBEDDING(-4)");
": RUN_DIRECTION_RTL, BIDI_EMBEDDING(1)");
": RUN_DIRECTION_RTL, BIDI_EMBEDDING(2)");
": RUN_DIRECTION_RTL, BIDI_EMBEDDING(-3)");
": RUN_DIRECTION_RTL, BIDI_EMBEDDING(-4)");
": TextAttribute not specified");
": RUN_DIRECTION_LTR, NUMERIC_SHAPING(ARABIC)");
": RUN_DIRECTION_RTL, NUMERIC_SHAPING(ARABIC)");
"should not throw an NPE but an IAE.");
" but 60 when BIDI_EMBEDDING is -61.");
errorHandling(
"Bidi(AttributedCharacterIterator).getLevelAt() " +
"should be 1 when BIDI_EMBEDDING is -62.");
errorHandling(
"Bidi(AttributedCharacterIterator).getLevelAt() " +
"should be 61 when BIDI_EMBEDDING is 60.");
" but 61 when BIDI_EMBEDDING is 61.");
" but 1 when BIDI_EMBEDDING is 62.");
errorHandling(
"Bidi((String)null, DIRECTION_DEFAULT_LEFT_TO_RIGHT)" +
" should throw an IAE.");
errorHandling(
"Bidi((String)null, DIRECTION_DEFAULT_LEFT_TO_RIGHT) " +
"should not throw an NPE but an IAE.");
errorHandling(
"Bidi(\"abc\", -3) should not throw an exception: " +
errorHandling(
"Bidi(\"abc\", 2) should not throw an exception: " +
char[]
text = {
'a',
'b',
'c',
'd',
'e'};
"but an IAE when text=null.");
"when textStart is incorrect(-1: too small).");
"but an IAE when textStart is incorrect(-1: too small).");
"when textStart is incorrect(4: too large).");
"but an IAE when textStart is incorrect(4: too large).");
"} when embeddings are {" +
errorHandling(
"Bidi(char[], ...) should not throw an exception " +
"when embeddings is valid(-61).");
"} when embeddings are {" +
errorHandling(
"Bidi(char[], ...) should not throw an exception " +
"when embeddings is valid(61).");
"when embeddings[1] is -62.");
errorHandling(
"Bidi(char[], ...) should not throw an exception " +
"even when embeddings includes -62.");
"when embeddings[1] is 62.");
errorHandling(
"Bidi(char[], ...) should not throw an exception " +
"even when embeddings includes 62.");
"when paragraphLength=-1(too small).");
"but an IAE when paragraphLength=-1(too small).");
"when paragraphLength=6(too large).");
"but an IAE when paragraphLength=6(too large).");
errorHandling(
"Bidi(char[], ...) should not throw an exception " +
"even when flag=-3(too small).");
errorHandling(
"Bidi(char[], ...) should not throw an exception " +
"even when flag=2(too large).");
/* Test baseIsLeftToRight() */ /* Test getBaseLevel() */ /* Test getRunLevel(), getRunLimit() and getRunStart() */ /* Test isLeftToRight() */ /* Test isRightToLeft() */ array[i++] = (
byte)(c -
'0');
array[i++] = (
byte)(c -
'0');
" should not throw an exception.");
" should throw an IAE.");
" should throw an IAE.");
* Confirm that getLevelAt() doesn't throw an exception for invalid offset " returned a wrong level." +
" when getRunCount() is 1.");
"when getRunCount() is 1.");
"when run is -1(too small).");
"but an AIOoBE when run is -1(too small).");
" when run is from 0 to 2(runCount-1).");
" when run is 3(same as runCount).");
"but an AIOoBE when run is 3(same as runCount).");
" when getRunCount() is 1.");
"when getRunCount() is 1.");
"when run is -1(too small).");
"but an AIOoBE when run is -1(too small).");
"when run is from 0 to 2(runCount-1).");
"when run is 3(same as runCount).");
"but an AIOoBE when run is 3(same as runCount).");
" when getRunCount() is 1.");
" when getRunCount() is 1.");
" when run is -1(too small).");
"but an AIOoBE when run is -1(too small).");
"when run is from 0 to 2(runCount-1).");
" when run is 3(same as runCount).");
"when run is 3(same as runCount).");
"when run is runCount+1(too large).");
"but an AIOoBE when run is runCount+1(too large).");
"when levelStart is -1.");
"but an IAE when levelStart is -1.");
"when levelStart is 6(levels.length).");
"but an IAE when levelStart is 6(levels.length).");
" when objects is null.");
" when objectStart is -1.");
"but an IAE when objectStart is -1.");
"when objectStart is 6(objects.length).");
"but an IAE when count is -1.");
"when count is 7(objects.length+1).");
"but an IAE when count is 7(objects.length+1).");
errorHandling(
"reorderVisually() should not throw an exception" +
" for requiresBidi(\"" +
paragraph +
"\", " +
0 +
", " +
" requiresBidi(\"" +
paragraph +
"\", " +
0 +
", " +
char[]
txt = {
'A',
'B',
'C',
'D',
'E'};
" when start is -1(too small).");
"but an IAE when start is -1(too small).");
"when start is textLength.");
" when start is textLength+1(too large).");
" when limit is -1(too small).");
" when limit is textLength+1(too large).");
"but an IAE when limit is textLength+1(too large).");
/* Bidi pubilc constants */ private static final int[]
FLAGS = {
/* Bidi pubilc constants names */ "DIRECTION_DEFAULT_LEFT_TO_RIGHT",
// -2 "DIRECTION_DEFAULT_RIGHT_TO_LEFT",
// -1 "DIRECTION_LEFT_TO_RIGHT",
// 0 "DIRECTION_RIGHT_TO_LEFT",
// 1 /* Bidirectional Character Types */ private static final char L =
'\u200E';
private static final char R =
'\u202F';
private static final char LRE =
'\u202A';
private static final char RLE =
'\u202B';
private static final char PDF =
'\u202C';
private static final char LRO =
'\u202D';
private static final char RLO =
'\u202E';
* 0x05D0-0x05EA: [R] Hewbrew letters (Strong) * 0x0627-0x063A: [AL] Arabic letters (Strong) * 0x0660-0x0669: [AN] Arabic-Indic digits (Weak) * 0x07CA-0x07E7: [R] NKo letters (Strong) * 0x07C0-0x07C9: [R] NKo digits (Strong) * 0xFE50-0xFEFF: [AL] Arabic presentaion form (Strong) * 0x10480-0x1049D: [L] Osmanya letters (Strong) * 0x104A0-0x104A9: [L] Osmanya digits (Strong) * 0x10A10-0x10A33: [R] Kharoshthi letters (Strong) * 0x10A40-0x10A43: [R] Kharoshthi digits (Strong) * 0x200E: [L] Left-to-right mark (Implicit, Strong) * 0x200F: [R] Right-to-left mark (Implicit, Strong) * 0x202A: [LRE] Left-to-right embedding (Explicit, Strong) * 0x202B: [RLE] Right-to-left embedding (Explicit, Strong) * 0x202C: [PDF] Pop directional formatting (Explicit, Weak) * 0x202D: [LRO] Left-to-right override (Explicit, Strong) * 0x202E: [RLO] Right-to-left override (Explicit, Strong) /* --------------------------------------------------------------------- */ * Test data for Bidi(char[], ...) constructor and methods /* Text for Bidi processing and its levels */ "000000000000000000",
"000002222222000000",
"000000000000000000",
"000003333333000000",
"000000000000000000",
"222222222222222221",
"222222222222222221",
"222222222222222221",
"222113333333112221",
"222224444444222221",
"000000000000000000",
"000000000000000000",
"222222222222222221"},
"000001111111000000",
"000001111111000000",
"000003333333000000",
"000003333333000000",
"000000000000000000",
"222111111111112221",
"222111111111112221",
"222223333333222221",
"222113333333112221",
"222224444444222221",
"000001111111000000",
"000001111111000000",
"222111111111112221"},
"111000000000001110",
"111112222222111110",
"111002222222001110",
"111113333333111110",
"111004444444001110",
"111112222222111111",
"111112222222111111",
"111112222222111111",
"111111111111111111",
"111114444444111111",
"111112222222111111",
"111000000000001110",
"111112222222111111"},
"111111111222111110",
"111111111222111110",
"111003333444001110",
"111113333333111110",
"111004444444001110",
"111111111222111111",
"111111111222111111",
"111113333444111111",
"111111111111111111",
"111114444444111111",
"111111111222111111",
"111111111222111110",
"111111111222111111"},
{
"abc <" +
NKoABC +
" 123> xyz.",
"000001111222000000",
"000001111222000000",
"000003333444000000",
"000003333333000000",
"000000000000000000",
"222111111222112221",
"222111111222112221",
"222223333444222221",
"222113333333112221",
"222224444444222221",
"000001111222000000",
"000001111222000000",
"222111111222112221"},
{
"abc <ABC " +
NKo123 +
"> xyz.",
"000000000111000000",
"000002221111000000",
"000002222333000000",
"000003333333000000",
"000000000000000000",
"222222221111112221",
"222222221111112221",
"222222222333222221",
"222113333333112221",
"222224444444222221",
"000000000111000000",
"000000000111000000",
"222222221111112221"},
"111111111222112220",
"111111111222112220",
"111003333444002220",
"111113333333112220",
"111004444444002220",
"111111111222112221",
"111111111222112221",
"111113333444112221",
"111113333333112221",
"111114444444112221",
"111111111222112221",
"111111111222112220",
"111111111222112221"},
"111000000111112220",
"111112221111112220",
"111002222333002220",
"111113333333112220",
"111004444444002220",
"111112221111112221",
"111112221111112221",
"111112222333112221",
"111113333333112221",
"111114444444112221",
"111112221111112221",
"111000000111112220",
"111112221111112221"},
"000000001111111111111000000000",
"000000001111111111111000000000",
"000000003333333333333000000000",
"000000003333333333333000000000",
"000000000000000000000000000000",
"222222111111111111111112222221",
"222222111111111111111112222221",
"222222223333333333333222222221",
"222222113333333333333112222221",
"222222224444444444444222222221",
"000000001111111111111000000000",
"000000001111111111111000000000",
"222222111111111111111112222221"},
"111111000000000000000001111110",
"111111112222222222222111111110",
"111111002222222222222001111110",
"111111113333333333333111111110",
"111111004444444444444001111110",
"111111112222222222222111111111",
"111111112222222222222111111111",
"111111112222222222222111111111",
"111111111111111111111111111111",
"111111114444444444444111111111",
"111111112222222222222111111111",
"111111000000000000000001111110",
"111111112222222222222111111111"},
/* Golden data for baseIsLeftToRight() results */ {
true,
true,
true,
true,
true,
false,
false,
false,
false,
false,
{
true,
true,
true,
true,
true,
false,
false,
false,
false,
false,
{
true,
true,
true,
true,
true,
false,
false,
false,
false,
false,
{
true,
true,
true,
true,
true,
false,
false,
false,
false,
false,
{
true,
true,
true,
true,
true,
false,
false,
false,
false,
false,
{
true,
true,
true,
true,
true,
false,
false,
false,
false,
false,
{
true,
true,
true,
true,
true,
false,
false,
false,
false,
false,
{
true,
true,
true,
true,
true,
false,
false,
false,
false,
false,
{
true,
true,
true,
true,
true,
false,
false,
false,
false,
false,
{
true,
true,
true,
true,
true,
false,
false,
false,
false,
false,
/* Golden data for isLeftToRight() & isRightToLeft() results */ /* isLeftToRight() results */ {{
true,
false,
true,
false,
true,
false,
false,
false,
false,
false,
/* isRightToLeft() results */ {
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
/* isLeftToRight() results */ {{
false,
false,
false,
false,
true,
false,
false,
false,
false,
false,
/* isRightToLeft() results */ {
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
/* isLeftToRight() results */ {{
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
/* isRightToLeft() results */ {
false,
false,
false,
false,
false,
false,
false,
false,
true,
false,
/* isLeftToRight() results */ {{
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
/* isRightToLeft() results */ {
false,
false,
false,
false,
false,
false,
false,
false,
true,
false,
/* isLeftToRight() results */ {{
false,
false,
false,
false,
true,
false,
false,
false,
false,
false,
/* isRightToLeft() results */ {
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
/* isLeftToRight() results */ {{
false,
false,
false,
false,
true,
false,
false,
false,
false,
false,
/* isRightToLeft() results */ {
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
/* isLeftToRight() results */ {{
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
/* isRightToLeft() results */ {
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
/* isLeftToRight() results */ {{
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
/* isRightToLeft() results */ {
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
/* isLeftToRight() results */ {{
false,
false,
false,
false,
true,
false,
false,
false,
false,
false,
/* isRightToLeft() results */ {
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
/* isLeftToRight() results */ {{
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
/* isRightToLeft() results */ {
false,
false,
false,
false,
false,
false,
false,
false,
true,
false,
/* --------------------------------------------------------------------- */ * Test data for Bidi(String, int) constructor and methods /* Text for Bidi processing and its levels */ "000000000",
"000000000",
"000000000",
"122222221"},
"00000111111112220",
"00000111111112220",
"00000111111112220",
"00000111122212220",
"00000111122212220",
"00000111122212220",
"11111222222211111",
"11111222222211111",
"01110000000001110",
"11111222222212221",
"11111222222212221",
"01110000000002220",
"111111111",
"111111111",
"011111110",
"111111111"},
"111112221",
"111112221",
"011112220",
"111112221"},
"111111111111111",
"111111111111111",
"011111111111110",
"011111110",
"011111110",
"011111110",
"211111111"},
"000000000000",
"000000000000",
"000000000000",
"122222222221"},
"000011111111222",
"000011111111222",
"000011111111222",
"22221111111110",
"22221111111110",
"22221111111110",
"000000000222211111111000",
"000000000222211111111000",
"000000000222211111111000",
"222222211444433333333111"},
"22222222224444333333332220",
"22222222224444333333332220",
"22222222224444333333332220",
"22222222224444333333332221"},
"2222222222444433333333222",
"2222222222444433333333222",
"2222222222444433333333222",
"2222222222444433333333222"},
"0000000000000222222222244443333333322000",
"0000000000000222222222244443333333322000",
"0000000000000222222222244443333333322000",
"2222222222222222222222244443333333322111"},
{
RLO +
"Did you say '" +
LRE +
"he said \"" +
RLE +
"ABC " +
"111111111111112222222222444433333333221110",
"111111111111112222222222444433333333221110",
"111111111111112222222222444433333333221110",
"333333333333334444444444666655555555443331"},
{
RLO +
"Did you say '" +
LRE +
"he said \"" +
RLE +
"ABC " +
"11111111111111222222222244443333333322111",
"11111111111111222222222244443333333322111",
"11111111111111222222222244443333333322111",
"33333333333333444444444466665555555544333"},
"0000001111222112220",
"0000001111222112220",
"0000001111222112220",
"1222111111222112221"},
"1111112222222111111",
"1111112222222111111",
"0111000000000001110",
"1111112222222111111"},
"00000000002222111111110000",
"00000000002222111111110000",
"00000000002222111111110000",
"12222222114444333333331111"},
"000000000000002222222222444433333333220000",
"000000000000002222222222444433333333220000",
"000000000000002222222222444433333333220000",
"122222222222222222222222444433333333221111"},
"22222221111111111111110",
"22222221111111111111110",
"22222221111111111111110",
"44444443333333333333331"},
/* Golden data for baseIsLeftToRight() results */ {
true,
true,
true,
false},
{
true,
true,
true,
false},
{
true,
true,
true,
false},
{
false,
false,
true,
false},
{
false,
false,
true,
false},
{
false,
false,
true,
false},
{
false,
false,
true,
false},
{
false,
false,
true,
false},
{
true,
true,
true,
false},
{
true,
true,
true,
false},
{
true,
true,
true,
false},
{
true,
true,
true,
false},
{
true,
true,
true,
false},
{
true,
true,
true,
false},
{
true,
true,
true,
false},
{
true,
true,
true,
false},
{
true,
true,
true,
false},
{
true,
true,
true,
false},
{
true,
true,
true,
false},
{
false,
false,
true,
false},
{
true,
true,
true,
false},
{
true,
true,
true,
false},
{
true,
true,
true,
false},
/* Golden data for isLeftToRight() & isRightToLeft() results */ /* isLeftToRight() results & isRightToLeft() results */ {{
true,
true,
true,
false}, {
false,
false,
false,
false}},
{{
false,
false,
false,
false}, {
false,
false,
false,
false}},
{{
false,
false,
false,
false}, {
false,
false,
false,
false}},
{{
false,
false,
false,
false}, {
false,
false,
false,
false}},
{{
false,
false,
false,
false}, {
false,
false,
false,
false}},
{{
false,
false,
false,
false}, {
true,
true,
false,
true }},
{{
false,
false,
false,
false}, {
false,
false,
false,
false}},
{{
false,
false,
false,
false}, {
true,
true,
false,
true }},
{{
false,
false,
false,
false}, {
false,
false,
false,
false}},
{{
true,
true,
true,
false}, {
false,
false,
false,
false}},
{{
false,
false,
false,
false}, {
false,
false,
false,
false}},
{{
false,
false,
false,
false}, {
false,
false,
false,
false}},
{{
false,
false,
false,
false}, {
false,
false,
false,
false}},
{{
false,
false,
false,
false}, {
false,
false,
false,
false}},
{{
false,
false,
false,
false}, {
false,
false,
false,
false}},
{{
false,
false,
false,
false}, {
false,
false,
false,
false}},
{{
false,
false,
false,
false}, {
false,
false,
false,
false}},
{{
false,
false,
false,
false}, {
false,
false,
false,
false}},
{{
false,
false,
false,
false}, {
false,
false,
false,
false}},
{{
false,
false,
false,
false}, {
false,
false,
false,
false}},
{{
false,
false,
false,
false}, {
false,
false,
false,
false}},
{{
false,
false,
false,
false}, {
false,
false,
false,
false}},
{{
false,
false,
false,
false}, {
false,
false,
false,
false}},
/* Golden data for requiresBidi() results */ false,
true,
true,
true,
true,
true,
true,
true,
true,
false,
true,
true,
true,
true,
true,
true,
true,
true,
true,
true,
/* --------------------------------------------------------------------- */ * Test data for Bidi(char[], ...) constructor and methods /* Embeddings for paragraphs which don't include surrogate pairs. */ {{
0,
0,
0,
0,
0,
1,
1,
1,
1,
1,
1,
1,
0,
0,
0,
0,
0,
0},
{
0,
0,
0,
0,
0,
2,
2,
2,
2,
2,
2,
2,
0,
0,
0,
0,
0,
0},
{
0,
0,
0,
0,
0, -
3, -
3, -
3, -
3, -
3, -
3, -
3,
0,
0,
0,
0,
0,
0},
{
0,
0,
0,
0,
0, -
4, -
4, -
4, -
4, -
4, -
4, -
4,
0,
0,
0,
0,
0,
0}},
/* Embeddings for paragraphs which include surrogate pairs. */ {{
0,
0,
0,
0,
0,
0,
0,
0,
1,
1,
1,
1,
1,
1,
1,
1,
1,
1,
1,
1,
1,
0,
0,
0,
0,
0,
0,
0,
0,
0},
{
0,
0,
0,
0,
0,
0,
0,
0,
2,
2,
2,
2,
2,
2,
2,
2,
2,
2,
2,
2,
2,
0,
0,
0,
0,
0,
0,
0,
0,
0},
{
0,
0,
0,
0,
0,
0,
0,
0,
-
3, -
3, -
3, -
3, -
3, -
3, -
3, -
3, -
3, -
3, -
3, -
3, -
3,
0,
0,
0,
0,
0,
0,
0,
0,
0},
{
0,
0,
0,
0,
0,
0,
0,
0,
-
4, -
4, -
4, -
4, -
4, -
4, -
4, -
4, -
4, -
4, -
4, -
4, -
4,
0,
0,
0,
0,
0,
0,
0,
0,
0}},
/* Text for Bidi processing and its levels */ /* DIRECTION_DEFAULT_LEFT_TO_RIGHT */ "000002222222000000",
"000000000000000000",
"000003333333000000",
"000000000000000000",
/* DIRECTION_DEFAULT_RIGHT_TO_LEFT */ "222222222222222221",
"222222222222222221",
"222113333333112221",
"222224444444222221",
/* DIRECTION_LEFT_TO_RIGHT */ "000002222222000000",
"000000000000000000",
"000003333333000000",
"000000000000000000",
/* DIRECTION_RIGHT_TO_LEFT */ "222222222222222221",
"222222222222222221",
"222113333333112221",
"222224444444222221"},
/* DIRECTION_DEFAULT_LEFT_TO_RIGHT */ "000001111111000000",
"000003333333000000",
"000003333333000000",
"000000000000000000",
/* DIRECTION_DEFAULT_RIGHT_TO_LEFT */ "222111111111112221",
"222223333333222221",
"222113333333112221",
"222224444444222221",
/* DIRECTION_LEFT_TO_RIGHT */ "000001111111000000",
"000003333333000000",
"000003333333000000",
"000000000000000000",
/* DIRECTION_RIGHT_TO_LEFT */ "222111111111112221",
"222223333333222221",
"222113333333112221",
"222224444444222221"},
/* DIRECTION_DEFAULT_LEFT_TO_RIGHT */ "111112222222111111",
"111112222222111111",
"111111111111111111",
"111114444444111111",
/* DIRECTION_DEFAULT_RIGHT_TO_LEFT */ "111112222222111111",
"111112222222111111",
"111111111111111111",
"111114444444111111",
/* DIRECTION_LEFT_TO_RIGHT */ "111112222222111110",
"111002222222001110",
"111113333333111110",
"111004444444001110",
/* DIRECTION_RIGHT_TO_LEFT */ "111112222222111111",
"111112222222111111",
"111111111111111111",
"111114444444111111"},
/* DIRECTION_DEFAULT_LEFT_TO_RIGHT */ "111111111222111111",
"111113333444111111",
"111111111111111111",
"111114444444111111",
/* DIRECTION_DEFAULT_RIGHT_TO_LEFT */ "111111111222111111",
"111113333444111111",
"111111111111111111",
"111114444444111111",
/* DIRECTION_LEFT_TO_RIGHT */ "111111111222111110",
"111003333444001110",
"111113333333111110",
"111004444444001110",
/* DIRECTION_RIGHT_TO_LEFT */ "111111111222111111",
"111113333444111111",
"111111111111111111",
"111114444444111111"},
/* DIRECTION_DEFAULT_LEFT_TO_RIGHT */ "000002221222000000",
"000000000000000000",
"000003333333000000",
"000000000000000000",
/* DIRECTION_DEFAULT_RIGHT_TO_LEFT */ "222222222222222221",
"222222222222222221",
"222113333333112221",
"222224444444222221",
/* DIRECTION_LEFT_TO_RIGHT */ "000002221222000000",
"000000000000000000",
"000003333333000000",
"000000000000000000",
/* DIRECTION_RIGHT_TO_LEFT */ "222222222222222221",
"222222222222222221",
"222113333333112221",
"222224444444222221"},
/* DIRECTION_DEFAULT_LEFT_TO_RIGHT */ "000000001111111111111000000000",
"000000003333333333333000000000",
"000000003333333333333000000000",
"000000000000000000000000000000",
/* DIRECTION_DEFAULT_RIGHT_TO_LEFT */ "222222111111111111111112222221",
"222222223333333333333222222221",
"222222113333333333333112222221",
"222222224444444444444222222221",
/* DIRECTION_LEFT_TO_RIGHT */ "000000001111111111111000000000",
"000000003333333333333000000000",
"000000003333333333333000000000",
"000000000000000000000000000000",
/* DIRECTION_RIGHT_TO_LEFT */ "222222111111111111111112222221",
"222222223333333333333222222221",
"222222113333333333333112222221",
"222222224444444444444222222221"},
/* DIRECTION_DEFAULT_LEFT_TO_RIGHT */ "111111112222222222222111111111",
"111111112222222222222111111111",
"111111111111111111111111111111",
"111111114444444444444111111111",
/* DIRECTION_DEFAULT_RIGHT_TO_LEFT */ "111111112222222222222111111111",
"111111112222222222222111111111",
"111111111111111111111111111111",
"111111114444444444444111111111",
/* DIRECTION_LEFT_TO_RIGHT */ "111111112222222222222111111110",
"111111002222222222222001111110",
"111111113333333333333111111110",
"111111004444444444444001111110",
/* DIRECTION_RIGHT_TO_LEFT */ "111111112222222222222111111111",
"111111112222222222222111111111",
"111111111111111111111111111111",
"111111114444444444444111111111"},
/* Golden data for baseIsLeftToRight() results */ {
true,
true,
true,
true,
// DIRECTION_DEFAULT_LEFT_TO_RIGHT true,
true,
true,
true,
// DIRECTION_DEFAULT_RIGHT_TO_LEFT true,
true,
true,
true,
// DIRECTION_LEFT_TO_RIGHT false,
false,
false,
false},
// DIRECTION_RIGHT_TO_LEFT false,
false,
false,
false},
{
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false},
{
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false},
false,
false,
false,
false},
false,
false,
false,
false},
{
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false},
/* Golden data for isLeftToRight() & isRightToLeft() results */ /* isLeftToRight() results */ {{
false,
true,
false,
true,
// DIRECTION_DEFAULT_LEFT_TO_RIGHT false,
false,
false,
false,
// DIRECTION_DEFAULT_RIGHT_TO_LEFT false,
true,
false,
true,
// DIRECTION_LEFT_TO_RIGHT false,
false,
false,
false},
// DIRECTION_RIGHT_TO_LEFT /* isRightToLeft() results */ {
false,
false,
false,
false,
// DIRECTION_DEFAULT_LEFT_TO_RIGHT false,
false,
false,
false,
// DIRECTION_DEFAULT_RIGHT_TO_LEFT false,
false,
false,
false,
// DIRECTION_LEFT_TO_RIGHT false,
false,
false,
false}},
// DIRECTION_RIGHT_TO_LEFTT /* isLeftToRight() results */ {{
false,
false,
false,
true,
false,
false,
false,
false,
false,
false,
false,
true,
false,
false,
false,
false},
/* isRightToLeft() results */ {
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false}},
/* isLeftToRight() results */ {{
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false},
/* isRightToLeft() results */ {
false,
false,
true,
false,
false,
false,
true,
false,
false,
false,
false,
false,
false,
false,
true,
false}},
/* isLeftToRight() results */ {{
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false},
/* isRightToLeft() results */ {
false,
false,
true,
false,
false,
false,
true,
false,
false,
false,
false,
false,
false,
false,
true,
false}},
/* isLeftToRight() results */ {{
false,
true,
false,
true,
false,
false,
false,
false,
false,
true,
false,
true,
false,
false,
false,
false },
/* isRightToLeft() results */ {
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false}},
/* isLeftToRight() results */ {{
false,
false,
false,
true,
false,
false,
false,
false,
false,
false,
false,
true,
false,
false,
false,
false},
/* isRightToLeft() results */ {
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false}},
/* isLeftToRight() results */ {{
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false},
/* isRightToLeft() results */ {
false,
false,
true,
false,
false,
false,
true,
false,
false,
false,
false,
false,
false,
false,
true,
false}},
/* --------------------------------------------------------------------- */ * Test data for reorderVisually() methods {{
"ABC",
" ",
"abc",
" ",
ArabicABC,
"."},
// Original text {
"000000001110"},
// levels {
"ABC",
" ",
"abc",
" ",
ArabicABC,
"."}},
// Reordered text {
"0000000000002222221111111111111100"},