Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
PojavLauncherTeam
GitHub Repository: PojavLauncherTeam/mobile
Path: blob/master/test/jdk/java/lang/StringBuffer/ToStringCache.java
41149 views
1
/*
2
* Copyright (c) 2013, 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
/* @test
25
* @bug 8013395 8014814
26
* @summary Test StringBuffer.toString caching
27
*/
28
29
public class ToStringCache {
30
31
// we can't test that we actually use a cached value (the benchmarks
32
// verify that) but we have to test that the cache is cleared when
33
// expected
34
35
public static void main(String[] args) throws Exception {
36
String original = "The original String";
37
38
StringBuffer sb = new StringBuffer(original);
39
40
String a = sb.toString();
41
checkEqual(a, original);
42
43
String b = sb.toString();
44
checkEqual(a, b);
45
46
// mutating methods
47
48
sb.setLength(12);
49
b = sb.toString();
50
checkUnequal(a, b);
51
a = b;
52
53
sb.setCharAt(0, 'X');
54
b = sb.toString();
55
checkUnequal(a, b);
56
a = b;
57
58
sb.append(new Character('X'));
59
b = sb.toString();
60
checkUnequal(a, b);
61
a = b;
62
63
sb.append("More text");
64
b = sb.toString();
65
checkUnequal(a, b);
66
a = b;
67
68
sb.append(sb);
69
b = sb.toString();
70
checkUnequal(a, b);
71
a = b;
72
73
sb.append(new StringBuilder("Build"));
74
b = sb.toString();
75
checkUnequal(a, b);
76
a = b;
77
78
sb.append(new StringBuilder("Build2"), 0, 1);
79
b = sb.toString();
80
checkUnequal(a, b);
81
a = b;
82
83
sb.append(new char[] { 'a', 'b' });
84
b = sb.toString();
85
checkUnequal(a, b);
86
a = b;
87
88
sb.append(true);
89
b = sb.toString();
90
checkUnequal(a, b);
91
a = b;
92
93
sb.append('c');
94
b = sb.toString();
95
checkUnequal(a, b);
96
a = b;
97
98
sb.append(23);
99
b = sb.toString();
100
checkUnequal(a, b);
101
a = b;
102
103
sb.appendCodePoint(Character.codePointAt(new char[] { 'X'}, 0));
104
b = sb.toString();
105
checkUnequal(a, b);
106
a = b;
107
108
sb.append(1L);
109
b = sb.toString();
110
checkUnequal(a, b);
111
a = b;
112
113
sb.append(1.0f);
114
b = sb.toString();
115
checkUnequal(a, b);
116
a = b;
117
118
sb.append(1.0d);
119
b = sb.toString();
120
checkUnequal(a, b);
121
a = b;
122
123
sb.delete(0, 5);
124
b = sb.toString();
125
checkUnequal(a, b);
126
a = b;
127
128
sb.deleteCharAt(0);
129
b = sb.toString();
130
checkUnequal(a, b);
131
a = b;
132
133
sb.replace(0,2, "123");
134
b = sb.toString();
135
checkUnequal(a, b);
136
a = b;
137
138
sb.insert(0, new char[] { 'a', 'b', 'c'}, 0, 3);
139
b = sb.toString();
140
checkUnequal(a, b);
141
a = b;
142
143
sb.insert(0, new Object());
144
b = sb.toString();
145
checkUnequal(a, b);
146
a = b;
147
148
sb.insert(0, "abc");
149
b = sb.toString();
150
checkUnequal(a, b);
151
a = b;
152
153
sb.insert(0, new char[] { 'a', 'b', 'c' });
154
b = sb.toString();
155
checkUnequal(a, b);
156
a = b;
157
158
sb.insert(0, new StringBuilder("Build"));
159
b = sb.toString();
160
checkUnequal(a, b);
161
a = b;
162
163
sb.insert(0, new StringBuilder("Build"), 0, 1);
164
b = sb.toString();
165
checkUnequal(a, b);
166
a = b;
167
168
sb.insert(0, false);
169
b = sb.toString();
170
checkUnequal(a, b);
171
a = b;
172
173
sb.insert(0, 'X');
174
b = sb.toString();
175
checkUnequal(a, b);
176
a = b;
177
178
sb.insert(0, 1);
179
b = sb.toString();
180
checkUnequal(a, b);
181
a = b;
182
183
sb.insert(0, 1L);
184
b = sb.toString();
185
checkUnequal(a, b);
186
a = b;
187
188
sb.insert(0, 1.0f);
189
b = sb.toString();
190
checkUnequal(a, b);
191
a = b;
192
193
sb.insert(0, 1.0d);
194
b = sb.toString();
195
checkUnequal(a, b);
196
a = b;
197
198
sb.reverse();
199
b = sb.toString();
200
checkUnequal(a, b);
201
202
// Extra checks that append(null) works correctly
203
204
sb.append((String)null);
205
b = sb.toString();
206
checkUnequal(a, b);
207
a = b;
208
209
sb.append((StringBuffer)null);
210
b = sb.toString();
211
checkUnequal(a, b);
212
a = b;
213
214
sb.append((StringBuilder)null);
215
b = sb.toString();
216
checkUnequal(a, b);
217
a = b;
218
219
sb.append((CharSequence)null);
220
b = sb.toString();
221
checkUnequal(a, b);
222
a = b;
223
224
// non-mutating methods
225
226
// Reset to known value
227
sb = new StringBuffer(original);
228
a = sb.toString();
229
b = sb.toString();
230
checkEqual(a, b);
231
232
int l = sb.length();
233
b = sb.toString();
234
checkEqual(a, b);
235
236
int cap = sb.capacity();
237
b = sb.toString();
238
checkEqual(a, b);
239
240
sb.ensureCapacity(100);
241
b = sb.toString();
242
checkEqual(a, b);
243
244
sb.trimToSize();
245
b = sb.toString();
246
checkEqual(a, b);
247
248
char c = sb.charAt(1);
249
b = sb.toString();
250
checkEqual(a, b);
251
252
int cp = sb.codePointAt(1);
253
b = sb.toString();
254
checkEqual(a, b);
255
256
cp = sb.codePointBefore(2);
257
b = sb.toString();
258
checkEqual(a, b);
259
260
int count = sb.codePointCount(0,1);
261
b = sb.toString();
262
checkEqual(a, b);
263
264
count = sb.offsetByCodePoints(0, 1);
265
b = sb.toString();
266
checkEqual(a, b);
267
268
sb.getChars(0, 1, new char[2], 0);
269
b = sb.toString();
270
checkEqual(a, b);
271
272
String sub = sb.substring(0);
273
b = sb.toString();
274
checkEqual(a, b);
275
276
CharSequence cs = sb.subSequence(0,1);
277
b = sb.toString();
278
checkEqual(a, b);
279
280
sub = sb.substring(0, 3);
281
b = sb.toString();
282
checkEqual(a, b);
283
284
int index = sb.indexOf("rig");
285
b = sb.toString();
286
checkEqual(a, b);
287
288
index = sb.indexOf("rig", 2);
289
b = sb.toString();
290
checkEqual(a, b);
291
292
index = sb.lastIndexOf("rig");
293
b = sb.toString();
294
checkEqual(a, b);
295
296
index = sb.lastIndexOf("rig", 3);
297
b = sb.toString();
298
checkEqual(a, b);
299
300
}
301
302
private static void checkEqual(String s1, String s2) {
303
if (!s1.equals(s2))
304
throw new RuntimeException("Unmatched strings: s1 = "
305
+ s1 + " s2 = " + s2);
306
}
307
private static void checkUnequal(String s1, String s2) {
308
if (s1.equals(s2))
309
throw new RuntimeException("Unexpected matched strings: " + s1);
310
}
311
}
312
313