File: EasternArabicTest.java

package info (click to toggle)
openjdk-11 11.0.4%2B11-1
  • links: PTS, VCS
  • area: main
  • in suites: sid
  • size: 757,028 kB
  • sloc: java: 5,016,041; xml: 1,191,974; cpp: 934,731; ansic: 555,697; sh: 24,299; objc: 12,703; python: 3,602; asm: 3,415; makefile: 2,772; awk: 351; sed: 172; perl: 114; jsp: 24; csh: 3
file content (118 lines) | stat: -rw-r--r-- 4,558 bytes parent folder | download | duplicates (16)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
/*
 * Copyright (c) 2010, Oracle and/or its affiliates. All rights reserved.
 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
 *
 * This code is free software; you can redistribute it and/or modify it
 * under the terms of the GNU General Public License version 2 only, as
 * published by the Free Software Foundation.
 *
 * This code is distributed in the hope that it will be useful, but WITHOUT
 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
 * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
 * version 2 for more details (a copy is included in the LICENSE file that
 * accompanied this code).
 *
 * You should have received a copy of the GNU General Public License version
 * 2 along with this work; if not, write to the Free Software Foundation,
 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
 *
 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
 * or visit www.oracle.com if you need additional information or have any
 * questions.
 */

/*
 * @test
 * @bug 6941948
 * @summary Make sure that EASTERN_ARABIC works with the enum interface.
 */

import java.awt.font.NumericShaper;
import java.util.EnumSet;
import static java.awt.font.NumericShaper.*;

public class EasternArabicTest {
    static NumericShaper ns_old, ns_new;
    static boolean err = false;

    static String[][] testData = {
        // Arabic "October 10"
        {"\u0623\u0643\u062a\u0648\u0628\u0631 10",
         "\u0623\u0643\u062a\u0648\u0628\u0631 \u06f1\u06f0"}, // EASTERN_ARABIC digits

        // Tamil "Year 2009"
        {"\u0b86\u0ba3\u0bcd\u0b9f\u0bc1 2009",
         "\u0b86\u0ba3\u0bcd\u0b9f\u0bc1 \u0be8\u0be6\u0be6\u0bef"},
        // "\u0be800\u0bef is returned by pre-JDK7 because Tamil zero was not
        //  included in Unicode 4.0.0.

        // Ethiopic "Syllable<HA> 2009"
        {"\u1200 2009",
         "\u1200 \u136a00\u1371"},
        // Ethiopic zero doesn't exist even in Unicode 5.1.0.
    };

    public static void main(String[] args) {
        ns_old = getContextualShaper(TAMIL|ETHIOPIC|EASTERN_ARABIC|ARABIC|THAI|LAO,
                                     EUROPEAN);
        ns_new = getContextualShaper(EnumSet.of(Range.THAI,
                                                Range.TAMIL,
                                                Range.ETHIOPIC,
                                                Range.EASTERN_ARABIC,
                                                Range.ARABIC,
                                                Range.LAO),
                                     Range.EUROPEAN);


        StringBuilder cData = new StringBuilder();
        StringBuilder cExpected = new StringBuilder();
        for (int i = 0; i < testData.length; i++) {
            String data = testData[i][0];
            String expected = testData[i][1];
            test(data, expected);
            cData.append(data).append(' ');
            cExpected.append(expected).append(' ');
        }
        test(cData.toString(), cExpected.toString());

        if (err) {
            throw new RuntimeException("shape() returned unexpected value.");
        }
    }

    private static void test(String data, String expected) {
        char[] text = data.toCharArray();
        ns_old.shape(text, 0, text.length);
        String got = new String(text);

        if (!expected.equals(got)) {
            err = true;
            System.err.println("Error with traditional range.");
            System.err.println("  text = " + data);
            System.err.println("  got = " + got);
            System.err.println("  expected = " + expected);
        } else {
            System.err.println("OK with traditional range.");
            System.err.println("  text = " + data);
            System.err.println("  got = " + got);
            System.err.println("  expected = " + expected);
        }

        text = data.toCharArray();
        ns_new.shape(text, 0, text.length);
        got = new String(text);

        if (!expected.equals(got)) {
            err = true;
            System.err.println("Error with new Enum range.");
            System.err.println("  text = " + data);
            System.err.println("  got = " + got);
            System.err.println("  expected = " + expected);
        } else {
            System.err.println("OK with new Enum range.");
            System.err.println("  text = " + data);
            System.err.println("  got = " + got);
            System.err.println("  expected = " + expected);
        }
    }
}