Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
PojavLauncherTeam
GitHub Repository: PojavLauncherTeam/mobile
Path: blob/master/test/hotspot/jtreg/runtime/CommandLine/OptionsValidation/common/optionsvalidation/DoubleJVMOption.java
41161 views
1
/*
2
* Copyright (c) 2015, 2021, 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
package optionsvalidation;
25
26
import java.util.ArrayList;
27
import java.util.List;
28
import java.util.Locale;
29
30
public class DoubleJVMOption extends JVMOption {
31
32
/**
33
* Additional double values to test
34
*/
35
private static final double ADDITIONAL_TEST_DOUBLE_NEGATIVE = -1.5;
36
private static final double ADDITIONAL_TEST_DOUBLE_ZERO = 0.0;
37
private static final double ADDITIONAL_TEST_DOUBLE_POSITIVE = 1.75;
38
39
/**
40
* Mininum option value
41
*/
42
private double min;
43
/**
44
* Maximum option value
45
*/
46
private double max;
47
48
/**
49
* Initialize double option with passed name
50
*
51
* @param name name of the option
52
*/
53
DoubleJVMOption(String name) {
54
this.name = name;
55
min = Double.MIN_VALUE;
56
max = Double.MAX_VALUE;
57
}
58
59
/**
60
* Initialize double option with passed name, min and max values
61
*
62
* @param name name of the option
63
* @param min minimum value of the option
64
* @param max maximum value of the option
65
*/
66
public DoubleJVMOption(String name, double min, double max) {
67
this(name);
68
this.min = min;
69
this.max = max;
70
}
71
72
/**
73
* Set new minimum option value
74
*
75
* @param min new minimum value
76
*/
77
@Override
78
void setMin(String min) {
79
this.min = Double.valueOf(min);
80
}
81
82
/**
83
* Get string with minimum value of the option
84
*
85
* @return string with minimum value of the option
86
*/
87
@Override
88
String getMin() {
89
return formatValue(min);
90
}
91
92
/**
93
* Set new maximum option value
94
*
95
* @param max new maximum value
96
*/
97
@Override
98
void setMax(String max) {
99
this.max = Double.valueOf(max);
100
}
101
102
/**
103
* Get string with maximum value of the option
104
*
105
* @return string with maximum value of the option
106
*/
107
@Override
108
String getMax() {
109
return formatValue(max);
110
}
111
112
private String formatValue(double value) {
113
return String.format(Locale.US, "%f", value);
114
}
115
116
/**
117
* Return list of strings with valid option values which used for testing
118
* using jcmd, attach and etc.
119
*
120
* @return list of strings which contain valid values for option
121
*/
122
@Override
123
protected List<String> getValidValues() {
124
List<String> validValues = new ArrayList<>();
125
126
if (testMinRange) {
127
validValues.add(formatValue(min));
128
}
129
if (testMaxRange) {
130
validValues.add(formatValue(max));
131
}
132
133
if (testMinRange) {
134
if ((Double.compare(min, ADDITIONAL_TEST_DOUBLE_NEGATIVE) < 0)
135
&& (Double.compare(max, ADDITIONAL_TEST_DOUBLE_NEGATIVE) > 0)) {
136
validValues.add(formatValue(ADDITIONAL_TEST_DOUBLE_NEGATIVE));
137
}
138
139
if ((Double.compare(min, ADDITIONAL_TEST_DOUBLE_ZERO) < 0)
140
&& (Double.compare(max, ADDITIONAL_TEST_DOUBLE_ZERO) > 0)) {
141
validValues.add(formatValue(ADDITIONAL_TEST_DOUBLE_ZERO));
142
}
143
144
if ((Double.compare(min, ADDITIONAL_TEST_DOUBLE_POSITIVE) < 0)
145
&& (Double.compare(max, ADDITIONAL_TEST_DOUBLE_POSITIVE) > 0)) {
146
validValues.add(formatValue(ADDITIONAL_TEST_DOUBLE_POSITIVE));
147
}
148
}
149
150
return validValues;
151
}
152
153
/**
154
* Return list of strings with invalid option values which used for testing
155
* using jcmd, attach and etc.
156
*
157
* @return list of strings which contain invalid values for option
158
*/
159
@Override
160
protected List<String> getInvalidValues() {
161
List<String> invalidValues = new ArrayList<>();
162
163
if (withRange) {
164
/* Return invalid values only for options which have defined range in VM */
165
if (Double.compare(min, Double.MIN_VALUE) != 0) {
166
if ((Double.compare(min, 0.0) > 0)
167
&& (Double.isNaN(min * 0.999) == false)) {
168
invalidValues.add(formatValue(min * 0.999));
169
} else if ((Double.compare(min, 0.0) < 0)
170
&& (Double.isNaN(min * 1.001) == false)) {
171
invalidValues.add(formatValue(min * 1.001));
172
}
173
}
174
175
if (Double.compare(max, Double.MAX_VALUE) != 0) {
176
if ((Double.compare(max, 0.0) > 0)
177
&& (Double.isNaN(max * 1.001) == false)) {
178
invalidValues.add(formatValue(max * 1.001));
179
} else if ((Double.compare(max, 0.0) < 0)
180
&& (Double.isNaN(max * 0.999) == false)) {
181
invalidValues.add(formatValue(max * 0.999));
182
}
183
}
184
}
185
186
return invalidValues;
187
}
188
189
/**
190
* Return expected error message for option with value "value" when it used
191
* on command line with passed value
192
*
193
* @param value option value
194
* @return expected error message
195
*/
196
@Override
197
protected String getErrorMessageCommandLine(String value) {
198
String errorMsg;
199
200
if (withRange) {
201
/* Option have defined range in VM */
202
errorMsg = "is outside the allowed range";
203
} else {
204
errorMsg = "";
205
}
206
207
return errorMsg;
208
}
209
}
210
211