Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
PojavLauncherTeam
GitHub Repository: PojavLauncherTeam/mobile
Path: blob/master/test/jdk/java/lang/Enum/ValueOf.java
41152 views
1
/*
2
* Copyright (c) 2004, 2009, 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 4984908 5058132 6653154
27
* @summary Basic test of valueOf(String)
28
* @author Josh Bloch
29
*
30
* @compile ValueOf.java
31
* @run main ValueOf
32
* @key randomness
33
*/
34
35
import java.util.*;
36
import java.lang.reflect.Method;
37
38
public class ValueOf {
39
static Random rnd = new Random();
40
41
public static void main(String[] args) throws Exception {
42
test(Silly0.class);
43
test(Silly1.class);
44
test(Silly31.class);
45
test(Silly32.class);
46
test(Silly33.class);
47
test(Silly63.class);
48
test(Silly64.class);
49
test(Silly65.class);
50
test(Silly127.class);
51
test(Silly128.class);
52
test(Silly129.class);
53
test(Silly500.class);
54
test(Specialized.class);
55
56
testMissingException();
57
}
58
59
static <T extends Enum<T>> void test(Class<T> enumClass) throws Exception {
60
Set<T> s = EnumSet.allOf(enumClass);
61
test(enumClass, s);
62
63
// Delete half the elements from set at random
64
for (Iterator<T> i = s.iterator(); i.hasNext(); ) {
65
i.next();
66
if (rnd.nextBoolean())
67
i.remove();
68
}
69
70
test(enumClass, s);
71
}
72
73
static <T extends Enum<T>> void test(Class<T> enumClass, Set<T> s)
74
throws Exception
75
{
76
Method valueOf = enumClass.getDeclaredMethod("valueOf", String.class);
77
Set<T> copy = EnumSet.noneOf(enumClass);
78
for (T e : s)
79
copy.add((T) valueOf.invoke(null, e.name()));
80
if (!copy.equals(s))
81
throw new Exception(copy + " != " + s);
82
}
83
84
static void testMissingException() {
85
try {
86
Enum.valueOf(Specialized.class, "BAZ");
87
throw new RuntimeException("Expected IllegalArgumentException not thrown.");
88
} catch(IllegalArgumentException iae) {
89
String message = iae.getMessage();
90
if (! "No enum constant ValueOf.Specialized.BAZ".equals(message))
91
throw new RuntimeException("Unexpected detail message: ``" + message + "''.");
92
}
93
}
94
95
enum Silly0 { };
96
97
enum Silly1 { e1 }
98
99
enum Silly31 {
100
e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16,
101
e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30
102
}
103
104
enum Silly32 {
105
e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16,
106
e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31
107
}
108
109
enum Silly33 {
110
e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16,
111
e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31,
112
e32
113
}
114
115
enum Silly63 {
116
e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16,
117
e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31,
118
e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46,
119
e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61,
120
e62
121
}
122
123
enum Silly64 {
124
e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16,
125
e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31,
126
e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46,
127
e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61,
128
e62, e63
129
}
130
131
enum Silly65 {
132
e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16,
133
e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31,
134
e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46,
135
e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61,
136
e62, e63, e64
137
}
138
139
enum Silly127 {
140
e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16,
141
e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31,
142
e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46,
143
e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61,
144
e62, e63, e64, e65, e66, e67, e68, e69, e70, e71, e72, e73, e74, e75, e76,
145
e77, e78, e79, e80, e81, e82, e83, e84, e85, e86, e87, e88, e89, e90, e91,
146
e92, e93, e94, e95, e96, e97, e98, e99, e100, e101, e102, e103, e104, e105,
147
e106, e107, e108, e109, e110, e111, e112, e113, e114, e115, e116, e117,
148
e118, e119, e120, e121, e122, e123, e124, e125, e126
149
}
150
151
enum Silly128 {
152
e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16,
153
e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31,
154
e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46,
155
e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61,
156
e62, e63, e64, e65, e66, e67, e68, e69, e70, e71, e72, e73, e74, e75, e76,
157
e77, e78, e79, e80, e81, e82, e83, e84, e85, e86, e87, e88, e89, e90, e91,
158
e92, e93, e94, e95, e96, e97, e98, e99, e100, e101, e102, e103, e104, e105,
159
e106, e107, e108, e109, e110, e111, e112, e113, e114, e115, e116, e117,
160
e118, e119, e120, e121, e122, e123, e124, e125, e126, e127
161
}
162
163
enum Silly129 {
164
e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16,
165
e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31,
166
e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46,
167
e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61,
168
e62, e63, e64, e65, e66, e67, e68, e69, e70, e71, e72, e73, e74, e75, e76,
169
e77, e78, e79, e80, e81, e82, e83, e84, e85, e86, e87, e88, e89, e90, e91,
170
e92, e93, e94, e95, e96, e97, e98, e99, e100, e101, e102, e103, e104, e105,
171
e106, e107, e108, e109, e110, e111, e112, e113, e114, e115, e116, e117,
172
e118, e119, e120, e121, e122, e123, e124, e125, e126, e127, e128
173
}
174
175
enum Silly500 {
176
e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16,
177
e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31,
178
e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46,
179
e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61,
180
e62, e63, e64, e65, e66, e67, e68, e69, e70, e71, e72, e73, e74, e75, e76,
181
e77, e78, e79, e80, e81, e82, e83, e84, e85, e86, e87, e88, e89, e90, e91,
182
e92, e93, e94, e95, e96, e97, e98, e99, e100, e101, e102, e103, e104, e105,
183
e106, e107, e108, e109, e110, e111, e112, e113, e114, e115, e116, e117,
184
e118, e119, e120, e121, e122, e123, e124, e125, e126, e127, e128, e129,
185
e130, e131, e132, e133, e134, e135, e136, e137, e138, e139, e140, e141,
186
e142, e143, e144, e145, e146, e147, e148, e149, e150, e151, e152, e153,
187
e154, e155, e156, e157, e158, e159, e160, e161, e162, e163, e164, e165,
188
e166, e167, e168, e169, e170, e171, e172, e173, e174, e175, e176, e177,
189
e178, e179, e180, e181, e182, e183, e184, e185, e186, e187, e188, e189,
190
e190, e191, e192, e193, e194, e195, e196, e197, e198, e199, e200, e201,
191
e202, e203, e204, e205, e206, e207, e208, e209, e210, e211, e212, e213,
192
e214, e215, e216, e217, e218, e219, e220, e221, e222, e223, e224, e225,
193
e226, e227, e228, e229, e230, e231, e232, e233, e234, e235, e236, e237,
194
e238, e239, e240, e241, e242, e243, e244, e245, e246, e247, e248, e249,
195
e250, e251, e252, e253, e254, e255, e256, e257, e258, e259, e260, e261,
196
e262, e263, e264, e265, e266, e267, e268, e269, e270, e271, e272, e273,
197
e274, e275, e276, e277, e278, e279, e280, e281, e282, e283, e284, e285,
198
e286, e287, e288, e289, e290, e291, e292, e293, e294, e295, e296, e297,
199
e298, e299, e300, e301, e302, e303, e304, e305, e306, e307, e308, e309,
200
e310, e311, e312, e313, e314, e315, e316, e317, e318, e319, e320, e321,
201
e322, e323, e324, e325, e326, e327, e328, e329, e330, e331, e332, e333,
202
e334, e335, e336, e337, e338, e339, e340, e341, e342, e343, e344, e345,
203
e346, e347, e348, e349, e350, e351, e352, e353, e354, e355, e356, e357,
204
e358, e359, e360, e361, e362, e363, e364, e365, e366, e367, e368, e369,
205
e370, e371, e372, e373, e374, e375, e376, e377, e378, e379, e380, e381,
206
e382, e383, e384, e385, e386, e387, e388, e389, e390, e391, e392, e393,
207
e394, e395, e396, e397, e398, e399, e400, e401, e402, e403, e404, e405,
208
e406, e407, e408, e409, e410, e411, e412, e413, e414, e415, e416, e417,
209
e418, e419, e420, e421, e422, e423, e424, e425, e426, e427, e428, e429,
210
e430, e431, e432, e433, e434, e435, e436, e437, e438, e439, e440, e441,
211
e442, e443, e444, e445, e446, e447, e448, e449, e450, e451, e452, e453,
212
e454, e455, e456, e457, e458, e459, e460, e461, e462, e463, e464, e465,
213
e466, e467, e468, e469, e470, e471, e472, e473, e474, e475, e476, e477,
214
e478, e479, e480, e481, e482, e483, e484, e485, e486, e487, e488, e489,
215
e490, e491, e492, e493, e494, e495, e496, e497, e498, e499
216
}
217
218
enum Specialized {
219
FOO {
220
public void foo() {}
221
};
222
public abstract void foo();
223
};
224
225
}
226
227