Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
PojavLauncherTeam
GitHub Repository: PojavLauncherTeam/openjdk-multiarch-jdk8u
Path: blob/aarch64-shenandoah-jdk8u272-b10/jdk/test/java/awt/Frame/ShapeNotSetSometimes/ShapeNotSetSometimes.java
38828 views
1
/*
2
* Copyright (c) 2010, 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 6988428
27
@summary Tests whether shape is always set
28
@author [email protected]: area=awt.toplevel
29
@run main ShapeNotSetSometimes
30
*/
31
32
33
import java.awt.*;
34
import java.awt.event.InputEvent;
35
import java.awt.geom.*;
36
37
38
public class ShapeNotSetSometimes {
39
40
private Frame backgroundFrame;
41
private Frame window;
42
private static final Color BACKGROUND_COLOR = Color.BLUE;
43
private Shape shape;
44
private int[][] pointsToCheck;
45
46
private static Robot robot;
47
48
public ShapeNotSetSometimes() throws Exception {
49
EventQueue.invokeAndWait(new Runnable() {
50
public void run() {
51
initializeGUI();
52
}
53
});
54
}
55
56
private void initializeGUI() {
57
backgroundFrame = new BackgroundFrame();
58
backgroundFrame.setUndecorated(true);
59
backgroundFrame.setSize(300, 300);
60
backgroundFrame.setLocation(20, 400);
61
backgroundFrame.setVisible(true);
62
63
shape = null;
64
String shape_name = null;
65
Area a;
66
GeneralPath gp;
67
shape_name = "Rounded-corners";
68
a = new Area();
69
a.add(new Area(new Rectangle2D.Float(50, 0, 100, 150)));
70
a.add(new Area(new Rectangle2D.Float(0, 50, 200, 50)));
71
a.add(new Area(new Ellipse2D.Float(0, 0, 100, 100)));
72
a.add(new Area(new Ellipse2D.Float(0, 50, 100, 100)));
73
a.add(new Area(new Ellipse2D.Float(100, 0, 100, 100)));
74
a.add(new Area(new Ellipse2D.Float(100, 50, 100, 100)));
75
shape = a;
76
pointsToCheck = new int[][] {
77
// inside shape
78
{106, 86}, {96, 38}, {76, 107}, {180, 25}, {24, 105},
79
{196, 77}, {165, 50}, {14, 113}, {89, 132}, {167, 117},
80
// outside shape
81
{165, 196}, {191, 163}, {146, 185}, {61, 170}, {148, 171},
82
{82, 172}, {186, 11}, {199, 141}, {13, 173}, {187, 3}
83
};
84
85
window = new TestFrame();
86
window.setUndecorated(true);
87
window.setSize(200, 200);
88
window.setLocation(70, 450);
89
window.setShape(shape);
90
window.setVisible(true);
91
92
System.out.println("Checking " + window.getClass().getSuperclass().getName() + " with " + shape_name + " shape (" + window.getShape() + ")...");
93
}
94
95
class BackgroundFrame extends Frame {
96
97
@Override
98
public void paint(Graphics g) {
99
100
g.setColor(BACKGROUND_COLOR);
101
g.fillRect(0, 0, 300, 300);
102
103
super.paint(g);
104
}
105
}
106
107
class TestFrame extends Frame {
108
109
@Override
110
public void paint(Graphics g) {
111
112
g.setColor(Color.WHITE);
113
g.fillRect(0, 0, 200, 200);
114
115
super.paint(g);
116
}
117
}
118
119
public static void main(String[] args) throws Exception {
120
robot = new Robot();
121
122
for(int i = 0; i < 100; i++) {
123
System.out.println("Attempt " + i);
124
new ShapeNotSetSometimes().doTest();
125
}
126
}
127
128
private void doTest() throws Exception {
129
Point wls = backgroundFrame.getLocationOnScreen();
130
131
robot.mouseMove(wls.x + 5, wls.y + 5);
132
robot.mousePress(InputEvent.BUTTON1_DOWN_MASK);
133
robot.delay(10);
134
robot.mouseRelease(InputEvent.BUTTON1_DOWN_MASK);
135
robot.delay(500);
136
137
EventQueue.invokeAndWait(new Runnable() {
138
public void run() {
139
window.requestFocus();
140
}
141
});
142
143
robot.waitForIdle();
144
try {
145
Thread.sleep(300);
146
} catch (InterruptedException e) {
147
// ignore this one
148
}
149
150
// check transparency
151
final int COUNT_TARGET = 10;
152
153
// checking outside points only
154
for(int i = COUNT_TARGET; i < COUNT_TARGET * 2; i++) {
155
int x = pointsToCheck[i][0];
156
int y = pointsToCheck[i][1];
157
boolean inside = i < COUNT_TARGET;
158
Color c = robot.getPixelColor(window.getX() + x, window.getY() + y);
159
System.out.println("checking " + x + ", " + y + ", color = " + c);
160
if (inside && BACKGROUND_COLOR.equals(c) || !inside && !BACKGROUND_COLOR.equals(c)) {
161
System.out.println("window.getX() = " + window.getX() + ", window.getY() = " + window.getY());
162
System.err.println("Checking for transparency failed: point: " +
163
(window.getX() + x) + ", " + (window.getY() + y) +
164
", color = " + c + (inside ? " is of un" : " is not of ") +
165
"expected background color " + BACKGROUND_COLOR);
166
throw new RuntimeException("Test failed. The shape has not been applied.");
167
}
168
}
169
170
EventQueue.invokeAndWait(new Runnable() {
171
public void run() {
172
backgroundFrame.dispose();
173
window.dispose();
174
}
175
});
176
}
177
}
178
179