Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
PojavLauncherTeam
GitHub Repository: PojavLauncherTeam/mobile
Path: blob/master/test/jdk/java/awt/FullScreen/NonExistentDisplayModeTest/NonExistentDisplayModeTest.java
41153 views
1
/*
2
* Copyright (c) 2006, 2018, 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
import java.awt.DisplayMode;
25
import java.awt.Frame;
26
import java.awt.GraphicsDevice;
27
import java.util.ArrayList;
28
import java.util.Random;
29
30
import static java.awt.DisplayMode.REFRESH_RATE_UNKNOWN;
31
32
/**
33
* @test
34
* @key headful
35
* @bug 6430607 8198613
36
* @summary Test that we throw an exception for incorrect display modes
37
* @author [email protected] area=FullScreen
38
* @run main/othervm NonExistentDisplayModeTest
39
* @run main/othervm -Dsun.java2d.noddraw=true NonExistentDisplayModeTest
40
*/
41
public class NonExistentDisplayModeTest {
42
43
public static void main(String[] args) {
44
new NonExistentDisplayModeTest().start();
45
}
46
47
private void start() {
48
Frame f = new Frame("Testing, please wait..");
49
f.pack();
50
GraphicsDevice gd = f.getGraphicsConfiguration().getDevice();
51
if (!gd.isFullScreenSupported()) {
52
System.out.println("Exclusive FS mode not supported, test passed.");
53
f.dispose();
54
return;
55
}
56
57
gd.setFullScreenWindow(f);
58
if (!gd.isDisplayChangeSupported()) {
59
System.out.println("DisplayMode change not supported, test passed.");
60
f.dispose();
61
return;
62
}
63
64
DisplayMode dms[] = gd.getDisplayModes();
65
ArrayList<DisplayMode> dmList = new ArrayList<DisplayMode>(dms.length);
66
for (DisplayMode dm : dms) {
67
dmList.add(dm);
68
}
69
70
ArrayList<DisplayMode> nonExistentDms = createNonExistentDMList(dmList);
71
72
for (DisplayMode dm : nonExistentDms) {
73
boolean exThrown = false;
74
try {
75
System.out.printf("Testing mode: (%4dx%4d) depth=%3d rate=%d\n",
76
dm.getWidth(), dm.getHeight(),
77
dm.getBitDepth(), dm.getRefreshRate());
78
gd.setDisplayMode(dm);
79
} catch (IllegalArgumentException e) {
80
exThrown = true;
81
}
82
if (!exThrown) {
83
gd.setFullScreenWindow(null);
84
f.dispose();
85
throw new
86
RuntimeException("Failed: No exception thrown for dm "+dm);
87
}
88
}
89
gd.setFullScreenWindow(null);
90
f.dispose();
91
System.out.println("Test passed.");
92
}
93
94
private static final Random rnd = new Random();
95
private ArrayList<DisplayMode>
96
createNonExistentDMList(ArrayList<DisplayMode> dmList)
97
{
98
ArrayList<DisplayMode> newList =
99
new ArrayList<DisplayMode>(dmList.size());
100
// vary one parameter at a time
101
int param = 0;
102
for (DisplayMode dm : dmList) {
103
param = ++param % 3;
104
switch (param) {
105
case 0: {
106
DisplayMode newDM = deriveSize(dm);
107
if (!dmList.contains(newDM)) {
108
newList.add(newDM);
109
}
110
break;
111
}
112
case 1: {
113
DisplayMode newDM = deriveDepth(dm);
114
if (!dmList.contains(newDM)) {
115
newList.add(newDM);
116
}
117
break;
118
}
119
case 2: {
120
if (dm.getRefreshRate() != REFRESH_RATE_UNKNOWN) {
121
DisplayMode newDM = deriveRR(dm);
122
if (!dmList.contains(newDM)) {
123
newList.add(newDM);
124
}
125
}
126
break;
127
}
128
}
129
}
130
return newList;
131
}
132
133
private static DisplayMode deriveSize(DisplayMode dm) {
134
int w = dm.getWidth() / 7;
135
int h = dm.getHeight() / 3;
136
return new DisplayMode(w, h, dm.getBitDepth(), dm.getRefreshRate());
137
}
138
private static DisplayMode deriveRR(DisplayMode dm) {
139
return new DisplayMode(dm.getWidth(), dm.getHeight(),
140
dm.getBitDepth(), 777);
141
}
142
private static DisplayMode deriveDepth(DisplayMode dm) {
143
int depth;
144
if (dm.getBitDepth() == DisplayMode.BIT_DEPTH_MULTI) {
145
depth = 77;
146
} else {
147
depth = DisplayMode.BIT_DEPTH_MULTI;
148
}
149
return new DisplayMode(dm.getWidth(), dm.getHeight(),
150
depth, dm.getRefreshRate());
151
}
152
}
153
154