1 /*******************************************************************************
2  * Copyright (c) 2010, 2011 IBM Corporation and others.
3  *
4  * This program and the accompanying materials
5  * are made available under the terms of the Eclipse Public License 2.0
6  * which accompanies this distribution, and is available at
7  * https://www.eclipse.org/legal/epl-2.0/
8  *
9  * SPDX-License-Identifier: EPL-2.0
10  *
11  * Contributors:
12  *     IBM Corporation - initial API and implementation
13  ******************************************************************************/
14 
15 package org.eclipse.equinox.bidi.internal.tests;
16 
17 /**
18  * Base functionality for the handler tests.
19  */
20 public class StructuredTextTestBase {
21 
22 	static final private char LRM = 0x200E;
23 
24 	static final private char RLM = 0x200F;
25 
26 	static final private char LRE = 0x202A;
27 
28 	static final private char RLE = 0x202B;
29 
30 	static final private char PDF = 0x202C;
31 
toPseudo(String text)32 	public static String toPseudo(String text) {
33 		char[] chars = text.toCharArray();
34 		int len = chars.length;
35 
36 		for (int i = 0; i < len; i++) {
37 			char c = chars[i];
38 			if (c >= 'A' && c <= 'Z')
39 				chars[i] = (char) (c + 'a' - 'A');
40 			else if (c >= 0x05D0 && c < 0x05EA)
41 				chars[i] = (char) (c + 'A' - 0x05D0);
42 			else if (c == 0x05EA)
43 				chars[i] = '~';
44 			else if (c == 0x0644)
45 				chars[i] = '#';
46 			else if (c >= 0x0665 && c <= 0x0669)
47 				chars[i] = (char) (c + '5' - 0x0665);
48 			else if (c == LRM)
49 				chars[i] = '@';
50 			else if (c == RLM)
51 				chars[i] = '&';
52 			else if (c == LRE)
53 				chars[i] = '>';
54 			else if (c == RLE)
55 				chars[i] = '<';
56 			else if (c == PDF)
57 				chars[i] = '^';
58 			else if (c == '\n')
59 				chars[i] = '|';
60 			else if (c == '\r')
61 				chars[i] = '`';
62 		}
63 		return new String(chars);
64 	}
65 
toUT16(String text)66 	public static String toUT16(String text) {
67 		char[] chars = text.toCharArray();
68 		int len = chars.length;
69 
70 		for (int i = 0; i < len; i++) {
71 			char c = chars[i];
72 			if (c >= '5' && c <= '9')
73 				chars[i] = (char) (0x0665 + c - '5');
74 			else if (c >= 'A' && c <= 'Z')
75 				chars[i] = (char) (0x05D0 + c - 'A');
76 			else if (c == '~')
77 				chars[i] = (char) (0x05EA);
78 			else if (c == '#')
79 				chars[i] = (char) (0x0644);
80 			else if (c == '@')
81 				chars[i] = LRM;
82 			else if (c == '&')
83 				chars[i] = RLM;
84 			else if (c == '>')
85 				chars[i] = LRE;
86 			else if (c == '<')
87 				chars[i] = RLE;
88 			else if (c == '^')
89 				chars[i] = PDF;
90 			else if (c == '|')
91 				chars[i] = '\n';
92 			else if (c == '`')
93 				chars[i] = '\r';
94 		}
95 		return new String(chars);
96 	}
97 
array_display(int[] array)98 	static String array_display(int[] array) {
99 		if (array == null) {
100 			return "null";
101 		}
102 		StringBuilder sb = new StringBuilder(50);
103 		int len = array.length;
104 		for (int i = 0; i < len; i++) {
105 			sb.append(array[i]);
106 			sb.append(' ');
107 		}
108 		return sb.toString();
109 	}
110 
111 }
112