1/*
2 * Copyright (c) 2016, Oracle and/or its affiliates. All rights reserved.
3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
4 *
5 * This code is free software; you can redistribute it and/or modify it
6 * under the terms of the GNU General Public License version 2 only, as
7 * published by the Free Software Foundation.
8 *
9 * This code is distributed in the hope that it will be useful, but WITHOUT
10 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
11 * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
12 * version 2 for more details (a copy is included in the LICENSE file that
13 * accompanied this code).
14 *
15 * You should have received a copy of the GNU General Public License version
16 * 2 along with this work; if not, write to the Free Software Foundation,
17 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
18 *
19 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
20 * or visit www.oracle.com if you need additional information or have any
21 * questions.
22 */
23
24/*
25 * @test
26 * @bug 8146324
27 * @summary Test Font.textRequiresLayout
28 */
29
30import java.awt.Font;
31
32public class TextRequiresLayoutTest {
33
34    public static void main(String args[]) {
35
36        String simpleStr = "Hello World";
37        String complexStr = "\u0641\u0642\u0643";
38        char[] simpleChars = simpleStr.toCharArray();
39        char[] complexChars = complexStr.toCharArray();
40
41        if (Font.textRequiresLayout(simpleChars, 0, simpleChars.length)) {
42            throw new RuntimeException("Simple text should not need layout");
43        }
44
45        if (!Font.textRequiresLayout(complexChars, 0, complexChars.length)) {
46            throw new RuntimeException("Complex text should need layout");
47        }
48
49        if (Font.textRequiresLayout(complexChars, 0, 0)) {
50            throw new RuntimeException("Empty text should not need layout");
51        }
52
53        boolean except = false;
54        try {
55             Font.textRequiresLayout(null, 0, 0);
56        } catch (NullPointerException npe) {
57           except = true;
58        }
59        if (!except) {
60            throw new RuntimeException("No expected IllegalArgumentException");
61        }
62
63        except = false;
64        try {
65             Font.textRequiresLayout(complexChars, -1, 0);
66        } catch (ArrayIndexOutOfBoundsException aioobe) {
67           except = true;
68        }
69        if (!except) {
70            throw new
71                RuntimeException("No expected ArrayIndexOutOfBoundsException");
72        }
73
74        except = false;
75        try {
76             Font.textRequiresLayout(complexChars, 0, complexChars.length+1);
77        } catch (ArrayIndexOutOfBoundsException aioobe) {
78           except = true;
79        }
80        if (!except) {
81            throw new
82                RuntimeException("No expected ArrayIndexOutOfBoundsException");
83        }
84    }
85}
86