100 public @Stable Object v; |
100 public @Stable Object v; |
101 |
101 |
102 public static final DefaultValue c = new DefaultValue(); |
102 public static final DefaultValue c = new DefaultValue(); |
103 public static Object get() { return c.v; } |
103 public static Object get() { return c.v; } |
104 public static void test() throws Exception { |
104 public static void test() throws Exception { |
105 Object val1 = get(); |
105 Object val1 = get(); |
106 c.v = Values.A; Object val2 = get(); |
106 c.v = Values.A; Object val2 = get(); |
107 assertEquals(val1, null); |
107 assertEquals(val1, null); |
108 assertEquals(val2, Values.A); |
108 assertEquals(val2, Values.A); |
109 } |
109 } |
110 } |
110 } |
130 public static @Stable Object v; |
130 public static @Stable Object v; |
131 |
131 |
132 public static final DefaultStaticValue c = new DefaultStaticValue(); |
132 public static final DefaultStaticValue c = new DefaultStaticValue(); |
133 public static Object get() { return c.v; } |
133 public static Object get() { return c.v; } |
134 public static void test() throws Exception { |
134 public static void test() throws Exception { |
135 Object val1 = get(); |
135 Object val1 = get(); |
136 c.v = Values.A; Object val2 = get(); |
136 c.v = Values.A; Object val2 = get(); |
137 assertEquals(val1, null); |
137 assertEquals(val1, null); |
138 assertEquals(val2, Values.A); |
138 assertEquals(val2, Values.A); |
139 } |
139 } |
140 } |
140 } |
180 public static Object get1() { return c.v[10]; } |
180 public static Object get1() { return c.v[10]; } |
181 public static Object[] get2() { return c.v; } |
181 public static Object[] get2() { return c.v; } |
182 public static void test() throws Exception { |
182 public static void test() throws Exception { |
183 { |
183 { |
184 c.v = new Object[1]; c.v[0] = Values.A; Object val1 = get(); |
184 c.v = new Object[1]; c.v[0] = Values.A; Object val1 = get(); |
185 c.v[0] = Values.B; Object val2 = get(); |
185 c.v[0] = Values.B; Object val2 = get(); |
186 assertEquals(val1, Values.A); |
186 assertEquals(val1, Values.A); |
187 assertEquals(val2, (isStableEnabled ? Values.A : Values.B)); |
187 assertEquals(val2, (isStableEnabled ? Values.A : Values.B)); |
188 |
188 |
189 c.v = new Object[1]; c.v[0] = Values.C; Object val3 = get(); |
189 c.v = new Object[1]; c.v[0] = Values.C; Object val3 = get(); |
190 assertEquals(val3, (isStableEnabled ? (isStableEnabled ? Values.A : Values.B) |
190 assertEquals(val3, (isStableEnabled ? (isStableEnabled ? Values.A : Values.B) |
191 : Values.C)); |
191 : Values.C)); |
192 } |
192 } |
193 |
193 |
194 { |
194 { |
195 c.v = new Object[20]; c.v[10] = Values.A; Object val1 = get1(); |
195 c.v = new Object[20]; c.v[10] = Values.A; Object val1 = get1(); |
196 c.v[10] = Values.B; Object val2 = get1(); |
196 c.v[10] = Values.B; Object val2 = get1(); |
197 assertEquals(val1, Values.A); |
197 assertEquals(val1, Values.A); |
198 assertEquals(val2, (isStableEnabled ? Values.A : Values.B)); |
198 assertEquals(val2, (isStableEnabled ? Values.A : Values.B)); |
199 |
199 |
200 c.v = new Object[20]; c.v[10] = Values.C; Object val3 = get1(); |
200 c.v = new Object[20]; c.v[10] = Values.C; Object val3 = get1(); |
201 assertEquals(val3, (isStableEnabled ? (isStableEnabled ? Values.A : Values.B) |
201 assertEquals(val3, (isStableEnabled ? (isStableEnabled ? Values.A : Values.B) |
202 : Values.C)); |
202 : Values.C)); |
203 } |
203 } |
204 |
204 |
205 { |
205 { |
206 c.v = new Object[1]; Object[] val1 = get2(); |
206 c.v = new Object[1]; Object[] val1 = get2(); |
207 c.v = new Object[1]; Object[] val2 = get2(); |
207 c.v = new Object[1]; Object[] val2 = get2(); |
220 public static Object[] get1() { return c.v[0]; } |
220 public static Object[] get1() { return c.v[0]; } |
221 public static Object[][] get2() { return c.v; } |
221 public static Object[][] get2() { return c.v; } |
222 public static void test() throws Exception { |
222 public static void test() throws Exception { |
223 { |
223 { |
224 c.v = new Object[1][1]; c.v[0][0] = Values.A; Object val1 = get(); |
224 c.v = new Object[1][1]; c.v[0][0] = Values.A; Object val1 = get(); |
225 c.v[0][0] = Values.B; Object val2 = get(); |
225 c.v[0][0] = Values.B; Object val2 = get(); |
226 assertEquals(val1, Values.A); |
226 assertEquals(val1, Values.A); |
227 assertEquals(val2, (isStableEnabled ? Values.A : Values.B)); |
227 assertEquals(val2, (isStableEnabled ? Values.A : Values.B)); |
228 |
228 |
229 c.v = new Object[1][1]; c.v[0][0] = Values.C; Object val3 = get(); |
229 c.v = new Object[1][1]; c.v[0][0] = Values.C; Object val3 = get(); |
230 assertEquals(val3, (isStableEnabled ? (isStableEnabled ? Values.A : Values.B) |
230 assertEquals(val3, (isStableEnabled ? (isStableEnabled ? Values.A : Values.B) |
231 : Values.C)); |
231 : Values.C)); |
232 |
232 |
233 c.v[0] = new Object[1]; c.v[0][0] = Values.D; Object val4 = get(); |
233 c.v[0] = new Object[1]; c.v[0][0] = Values.D; Object val4 = get(); |
234 assertEquals(val4, (isStableEnabled ? (isStableEnabled ? Values.A : Values.B) |
234 assertEquals(val4, (isStableEnabled ? (isStableEnabled ? Values.A : Values.B) |
235 : Values.D)); |
235 : Values.D)); |
236 } |
236 } |
237 |
237 |
238 { |
238 { |
239 c.v = new Object[1][1]; Object[] val1 = get1(); |
239 c.v = new Object[1][1]; Object[] val1 = get1(); |
240 c.v[0] = new Object[1]; Object[] val2 = get1(); |
240 c.v[0] = new Object[1]; Object[] val2 = get1(); |
260 public static Object[][] get2() { return c.v[0]; } |
260 public static Object[][] get2() { return c.v[0]; } |
261 public static Object[][][] get3() { return c.v; } |
261 public static Object[][][] get3() { return c.v; } |
262 public static void test() throws Exception { |
262 public static void test() throws Exception { |
263 { |
263 { |
264 c.v = new Object[1][1][1]; c.v[0][0][0] = Values.A; Object val1 = get(); |
264 c.v = new Object[1][1][1]; c.v[0][0][0] = Values.A; Object val1 = get(); |
265 c.v[0][0][0] = Values.B; Object val2 = get(); |
265 c.v[0][0][0] = Values.B; Object val2 = get(); |
266 assertEquals(val1, Values.A); |
266 assertEquals(val1, Values.A); |
267 assertEquals(val2, (isStableEnabled ? Values.A : Values.B)); |
267 assertEquals(val2, (isStableEnabled ? Values.A : Values.B)); |
268 |
268 |
269 c.v = new Object[1][1][1]; c.v[0][0][0] = Values.C; Object val3 = get(); |
269 c.v = new Object[1][1][1]; c.v[0][0][0] = Values.C; Object val3 = get(); |
270 assertEquals(val3, (isStableEnabled ? (isStableEnabled ? Values.A : Values.B) |
270 assertEquals(val3, (isStableEnabled ? (isStableEnabled ? Values.A : Values.B) |
271 : Values.C)); |
271 : Values.C)); |
272 |
272 |
273 c.v[0] = new Object[1][1]; c.v[0][0][0] = Values.D; Object val4 = get(); |
273 c.v[0] = new Object[1][1]; c.v[0][0][0] = Values.D; Object val4 = get(); |
274 assertEquals(val4, (isStableEnabled ? (isStableEnabled ? Values.A : Values.B) |
274 assertEquals(val4, (isStableEnabled ? (isStableEnabled ? Values.A : Values.B) |
275 : Values.D)); |
275 : Values.D)); |
276 |
276 |
277 c.v[0][0] = new Object[1]; c.v[0][0][0] = Values.E; Object val5 = get(); |
277 c.v[0][0] = new Object[1]; c.v[0][0][0] = Values.E; Object val5 = get(); |
278 assertEquals(val5, (isStableEnabled ? (isStableEnabled ? Values.A : Values.B) |
278 assertEquals(val5, (isStableEnabled ? (isStableEnabled ? Values.A : Values.B) |
279 : Values.E)); |
279 : Values.E)); |
280 } |
280 } |
281 |
281 |
282 { |
282 { |
283 c.v = new Object[1][1][1]; Object[] val1 = get1(); |
283 c.v = new Object[1][1][1]; Object[] val1 = get1(); |
284 c.v[0][0] = new Object[1]; Object[] val2 = get1(); |
284 c.v[0][0] = new Object[1]; Object[] val2 = get1(); |
311 public static Object[][][] get3() { return c.v[0]; } |
311 public static Object[][][] get3() { return c.v[0]; } |
312 public static Object[][][][] get4() { return c.v; } |
312 public static Object[][][][] get4() { return c.v; } |
313 public static void test() throws Exception { |
313 public static void test() throws Exception { |
314 { |
314 { |
315 c.v = new Object[1][1][1][1]; c.v[0][0][0][0] = Values.A; Object val1 = get(); |
315 c.v = new Object[1][1][1][1]; c.v[0][0][0][0] = Values.A; Object val1 = get(); |
316 c.v[0][0][0][0] = Values.B; Object val2 = get(); |
316 c.v[0][0][0][0] = Values.B; Object val2 = get(); |
317 assertEquals(val1, Values.A); |
317 assertEquals(val1, Values.A); |
318 assertEquals(val2, (isStableEnabled ? Values.A : Values.B)); |
318 assertEquals(val2, (isStableEnabled ? Values.A : Values.B)); |
319 |
319 |
320 c.v = new Object[1][1][1][1]; c.v[0][0][0][0] = Values.C; Object val3 = get(); |
320 c.v = new Object[1][1][1][1]; c.v[0][0][0][0] = Values.C; Object val3 = get(); |
321 assertEquals(val3, (isStableEnabled ? (isStableEnabled ? Values.A : Values.B) |
321 assertEquals(val3, (isStableEnabled ? (isStableEnabled ? Values.A : Values.B) |
322 : Values.C)); |
322 : Values.C)); |
323 |
323 |
324 c.v[0] = new Object[1][1][1]; c.v[0][0][0][0] = Values.D; Object val4 = get(); |
324 c.v[0] = new Object[1][1][1]; c.v[0][0][0][0] = Values.D; Object val4 = get(); |
325 assertEquals(val4, (isStableEnabled ? (isStableEnabled ? Values.A : Values.B) |
325 assertEquals(val4, (isStableEnabled ? (isStableEnabled ? Values.A : Values.B) |
326 : Values.D)); |
326 : Values.D)); |
327 |
327 |
328 c.v[0][0] = new Object[1][1]; c.v[0][0][0][0] = Values.E; Object val5 = get(); |
328 c.v[0][0] = new Object[1][1]; c.v[0][0][0][0] = Values.E; Object val5 = get(); |
329 assertEquals(val5, (isStableEnabled ? (isStableEnabled ? Values.A : Values.B) |
329 assertEquals(val5, (isStableEnabled ? (isStableEnabled ? Values.A : Values.B) |
330 : Values.E)); |
330 : Values.E)); |
331 |
331 |
332 c.v[0][0][0] = new Object[1]; c.v[0][0][0][0] = Values.F; Object val6 = get(); |
332 c.v[0][0][0] = new Object[1]; c.v[0][0][0][0] = Values.F; Object val6 = get(); |
333 assertEquals(val6, (isStableEnabled ? (isStableEnabled ? Values.A : Values.B) |
333 assertEquals(val6, (isStableEnabled ? (isStableEnabled ? Values.A : Values.B) |
334 : Values.F)); |
334 : Values.F)); |
335 } |
335 } |
336 |
336 |
337 { |
337 { |
338 c.v = new Object[1][1][1][1]; Object[] val1 = get1(); |
338 c.v = new Object[1][1][1][1]; Object[] val1 = get1(); |
339 c.v[0][0][0] = new Object[1]; Object[] val2 = get1(); |
339 c.v[0][0][0] = new Object[1]; Object[] val2 = get1(); |
370 public static Object[] get1() { return (Object[])c.v; } |
370 public static Object[] get1() { return (Object[])c.v; } |
371 |
371 |
372 public static void test() throws Exception { |
372 public static void test() throws Exception { |
373 { |
373 { |
374 c.v = new Object[1]; ((Object[])c.v)[0] = Values.A; Object val1 = get(); |
374 c.v = new Object[1]; ((Object[])c.v)[0] = Values.A; Object val1 = get(); |
375 ((Object[])c.v)[0] = Values.B; Object val2 = get(); |
375 ((Object[])c.v)[0] = Values.B; Object val2 = get(); |
376 |
376 |
377 assertEquals(val1, Values.A); |
377 assertEquals(val1, Values.A); |
378 assertEquals(val2, Values.B); |
378 assertEquals(val2, Values.B); |
379 } |
379 } |
380 |
380 |
397 public static Object[] get2() { return c.v; } |
397 public static Object[] get2() { return c.v; } |
398 |
398 |
399 public static void test() throws Exception { |
399 public static void test() throws Exception { |
400 { |
400 { |
401 c.v = new Object[1][1]; ((Object[][])c.v)[0][0] = Values.A; Object val1 = get(); |
401 c.v = new Object[1][1]; ((Object[][])c.v)[0][0] = Values.A; Object val1 = get(); |
402 ((Object[][])c.v)[0][0] = Values.B; Object val2 = get(); |
402 ((Object[][])c.v)[0][0] = Values.B; Object val2 = get(); |
403 |
403 |
404 assertEquals(val1, Values.A); |
404 assertEquals(val1, Values.A); |
405 assertEquals(val2, Values.B); |
405 assertEquals(val2, Values.B); |
406 } |
406 } |
407 |
407 |
408 { |
408 { |
409 c.v = new Object[1][1]; c.v[0] = new Object[0]; Object[] val1 = get1(); |
409 c.v = new Object[1][1]; c.v[0] = new Object[0]; Object[] val1 = get1(); |
410 c.v[0] = new Object[0]; Object[] val2 = get1(); |
410 c.v[0] = new Object[0]; Object[] val2 = get1(); |
411 |
411 |
412 assertTrue((isStableEnabled ? (val1 == val2) : (val1 != val2))); |
412 assertTrue((isStableEnabled ? (val1 == val2) : (val1 != val2))); |
413 } |
413 } |
414 |
414 |
415 { |
415 { |
433 public static Object[][] get3() { return c.v; } |
433 public static Object[][] get3() { return c.v; } |
434 |
434 |
435 public static void test() throws Exception { |
435 public static void test() throws Exception { |
436 { |
436 { |
437 c.v = new Object[1][1][1]; ((Object[][][])c.v)[0][0][0] = Values.A; Object val1 = get(); |
437 c.v = new Object[1][1][1]; ((Object[][][])c.v)[0][0][0] = Values.A; Object val1 = get(); |
438 ((Object[][][])c.v)[0][0][0] = Values.B; Object val2 = get(); |
438 ((Object[][][])c.v)[0][0][0] = Values.B; Object val2 = get(); |
439 |
439 |
440 assertEquals(val1, Values.A); |
440 assertEquals(val1, Values.A); |
441 assertEquals(val2, Values.B); |
441 assertEquals(val2, Values.B); |
442 } |
442 } |
443 |
443 |
444 { |
444 { |
445 c.v = new Object[1][1][1]; c.v[0][0] = new Object[0]; Object[] val1 = get1(); |
445 c.v = new Object[1][1][1]; c.v[0][0] = new Object[0]; Object[] val1 = get1(); |
446 c.v[0][0] = new Object[0]; Object[] val2 = get1(); |
446 c.v[0][0] = new Object[0]; Object[] val2 = get1(); |
447 |
447 |
448 assertTrue((isStableEnabled ? (val1 == val2) : (val1 != val2))); |
448 assertTrue((isStableEnabled ? (val1 == val2) : (val1 != val2))); |
449 } |
449 } |
450 |
450 |
451 { |
451 { |
452 c.v = new Object[1][1][1]; c.v[0] = new Object[0][0]; Object[][] val1 = get2(); |
452 c.v = new Object[1][1][1]; c.v[0] = new Object[0][0]; Object[][] val1 = get2(); |
453 c.v[0] = new Object[0][0]; Object[][] val2 = get2(); |
453 c.v[0] = new Object[0][0]; Object[][] val2 = get2(); |
454 |
454 |
455 assertTrue((isStableEnabled ? (val1 == val2) : (val1 != val2))); |
455 assertTrue((isStableEnabled ? (val1 == val2) : (val1 != val2))); |
456 } |
456 } |
457 |
457 |
458 { |
458 { |
478 public static Object get1() { return get().a; } |
478 public static Object get1() { return get().a; } |
479 |
479 |
480 public static void test() throws Exception { |
480 public static void test() throws Exception { |
481 { |
481 { |
482 c.v = new A(); c.v.a = Values.A; A val1 = get(); |
482 c.v = new A(); c.v.a = Values.A; A val1 = get(); |
483 c.v.a = Values.B; A val2 = get(); |
483 c.v.a = Values.B; A val2 = get(); |
484 |
484 |
485 assertEquals(val1.a, Values.B); |
485 assertEquals(val1.a, Values.B); |
486 assertEquals(val2.a, Values.B); |
486 assertEquals(val2.a, Values.B); |
487 } |
487 } |
488 |
488 |
489 { |
489 { |
490 c.v = new A(); c.v.a = Values.A; Object val1 = get1(); |
490 c.v = new A(); c.v.a = Values.A; Object val1 = get1(); |
491 c.v.a = Values.B; Object val2 = get1(); |
491 c.v.a = Values.B; Object val2 = get1(); |
492 c.v = new A(); c.v.a = Values.C; Object val3 = get1(); |
492 c.v = new A(); c.v.a = Values.C; Object val3 = get1(); |
493 |
493 |
494 assertEquals(val1, Values.A); |
494 assertEquals(val1, Values.A); |
495 assertEquals(val2, (isStableEnabled ? Values.A : Values.B)); |
495 assertEquals(val2, (isStableEnabled ? Values.A : Values.B)); |
496 assertEquals(val3, (isStableEnabled ? Values.A : Values.C)); |
496 assertEquals(val3, (isStableEnabled ? Values.A : Values.C)); |
512 public static Object get1() { return get().a; } |
512 public static Object get1() { return get().a; } |
513 |
513 |
514 public static void test() throws Exception { |
514 public static void test() throws Exception { |
515 { |
515 { |
516 c.v = new A(); c.v.next = new A(); c.v.next.next = c.v; |
516 c.v = new A(); c.v.next = new A(); c.v.next.next = c.v; |
517 c.v.a = Values.A; c.v.next.a = Values.A; A val1 = get(); |
517 c.v.a = Values.A; c.v.next.a = Values.A; A val1 = get(); |
518 c.v.a = Values.B; c.v.next.a = Values.B; A val2 = get(); |
518 c.v.a = Values.B; c.v.next.a = Values.B; A val2 = get(); |
519 |
519 |
520 assertEquals(val1.a, Values.B); |
520 assertEquals(val1.a, Values.B); |
521 assertEquals(val2.a, Values.B); |
521 assertEquals(val2.a, Values.B); |
522 } |
522 } |
523 |
523 |
524 { |
524 { |
525 c.v = new A(); c.v.next = c.v; |
525 c.v = new A(); c.v.next = c.v; |
526 c.v.a = Values.A; Object val1 = get1(); |
526 c.v.a = Values.A; Object val1 = get1(); |
527 c.v.a = Values.B; Object val2 = get1(); |
527 c.v.a = Values.B; Object val2 = get1(); |
528 c.v = new A(); c.v.next = c.v; |
528 c.v = new A(); c.v.next = c.v; |
529 c.v.a = Values.C; Object val3 = get1(); |
529 c.v.a = Values.C; Object val3 = get1(); |
530 |
530 |
531 assertEquals(val1, Values.A); |
531 assertEquals(val1, Values.A); |
532 assertEquals(val2, (isStableEnabled ? Values.A : Values.B)); |
532 assertEquals(val2, (isStableEnabled ? Values.A : Values.B)); |
533 assertEquals(val3, (isStableEnabled ? Values.A : Values.C)); |
533 assertEquals(val3, (isStableEnabled ? Values.A : Values.C)); |
534 } |
534 } |
550 public static Object get1() { return c.v.left.left.right.left.a; } |
550 public static Object get1() { return c.v.left.left.right.left.a; } |
551 |
551 |
552 public static void test() throws Exception { |
552 public static void test() throws Exception { |
553 { |
553 { |
554 c.v = new A(); c.v.left = c.v.right = c.v; |
554 c.v = new A(); c.v.left = c.v.right = c.v; |
555 c.v.a = Values.A; Object val1 = get(); Object val2 = get1(); |
555 c.v.a = Values.A; Object val1 = get(); Object val2 = get1(); |
556 c.v.a = Values.B; Object val3 = get(); Object val4 = get1(); |
556 c.v.a = Values.B; Object val3 = get(); Object val4 = get1(); |
557 |
557 |
558 assertEquals(val1, Values.A); |
558 assertEquals(val1, Values.A); |
559 assertEquals(val3, (isStableEnabled ? Values.A : Values.B)); |
559 assertEquals(val3, (isStableEnabled ? Values.A : Values.B)); |
560 |
560 |
561 assertEquals(val2, Values.A); |
561 assertEquals(val2, Values.A); |
581 |
581 |
582 public static void test() throws Exception { |
582 public static void test() throws Exception { |
583 { |
583 { |
584 A elem = new A(); |
584 A elem = new A(); |
585 c.v = new A[] { elem, elem }; c.v[0].left = c.v[0].right = c.v; |
585 c.v = new A[] { elem, elem }; c.v[0].left = c.v[0].right = c.v; |
586 elem.a = Values.A; Object val1 = get(); Object val2 = get1(); |
586 elem.a = Values.A; Object val1 = get(); Object val2 = get1(); |
587 elem.a = Values.B; Object val3 = get(); Object val4 = get1(); |
587 elem.a = Values.B; Object val3 = get(); Object val4 = get1(); |
588 |
588 |
589 assertEquals(val1, Values.A); |
589 assertEquals(val1, Values.A); |
590 assertEquals(val3, (isStableEnabled ? Values.A : Values.B)); |
590 assertEquals(val3, (isStableEnabled ? Values.A : Values.B)); |
591 |
591 |
592 assertEquals(val2, Values.A); |
592 assertEquals(val2, Values.A); |