87 |
87 |
88 import java.lang.reflect.InvocationTargetException; |
88 import java.lang.reflect.InvocationTargetException; |
89 |
89 |
90 public class TestStableObject { |
90 public class TestStableObject { |
91 static final boolean isStableEnabled = StableConfiguration.isStableEnabled; |
91 static final boolean isStableEnabled = StableConfiguration.isStableEnabled; |
92 static final boolean isServerWithStable = StableConfiguration.isServerWithStable; |
|
93 |
92 |
94 public static void main(String[] args) throws Exception { |
93 public static void main(String[] args) throws Exception { |
95 run(DefaultValue.class); |
94 run(DefaultValue.class); |
96 run(ObjectStable.class); |
95 run(ObjectStable.class); |
97 run(DefaultStaticValue.class); |
96 run(DefaultStaticValue.class); |
210 public static void test() throws Exception { |
209 public static void test() throws Exception { |
211 { |
210 { |
212 c.v = new Object[1]; c.v[0] = Values.A; Object val1 = get(); |
211 c.v = new Object[1]; c.v[0] = Values.A; Object val1 = get(); |
213 c.v[0] = Values.B; Object val2 = get(); |
212 c.v[0] = Values.B; Object val2 = get(); |
214 assertEquals(val1, Values.A); |
213 assertEquals(val1, Values.A); |
215 assertEquals(val2, (isServerWithStable ? Values.A : Values.B)); |
214 assertEquals(val2, (isStableEnabled ? Values.A : Values.B)); |
216 |
215 |
217 c.v = new Object[1]; c.v[0] = Values.C; Object val3 = get(); |
216 c.v = new Object[1]; c.v[0] = Values.C; Object val3 = get(); |
218 assertEquals(val3, (isStableEnabled ? (isServerWithStable ? Values.A : Values.B) |
217 assertEquals(val3, (isStableEnabled ? (isStableEnabled ? Values.A : Values.B) |
219 : Values.C)); |
218 : Values.C)); |
220 } |
219 } |
221 |
220 |
222 { |
221 { |
223 c.v = new Object[20]; c.v[10] = Values.A; Object val1 = get1(); |
222 c.v = new Object[20]; c.v[10] = Values.A; Object val1 = get1(); |
224 c.v[10] = Values.B; Object val2 = get1(); |
223 c.v[10] = Values.B; Object val2 = get1(); |
225 assertEquals(val1, Values.A); |
224 assertEquals(val1, Values.A); |
226 assertEquals(val2, (isServerWithStable ? Values.A : Values.B)); |
225 assertEquals(val2, (isStableEnabled ? Values.A : Values.B)); |
227 |
226 |
228 c.v = new Object[20]; c.v[10] = Values.C; Object val3 = get1(); |
227 c.v = new Object[20]; c.v[10] = Values.C; Object val3 = get1(); |
229 assertEquals(val3, (isStableEnabled ? (isServerWithStable ? Values.A : Values.B) |
228 assertEquals(val3, (isStableEnabled ? (isStableEnabled ? Values.A : Values.B) |
230 : Values.C)); |
229 : Values.C)); |
231 } |
230 } |
232 |
231 |
233 { |
232 { |
234 c.v = new Object[1]; Object[] val1 = get2(); |
233 c.v = new Object[1]; Object[] val1 = get2(); |
250 public static void test() throws Exception { |
249 public static void test() throws Exception { |
251 { |
250 { |
252 c.v = new Object[1][1]; c.v[0][0] = Values.A; Object val1 = get(); |
251 c.v = new Object[1][1]; c.v[0][0] = Values.A; Object val1 = get(); |
253 c.v[0][0] = Values.B; Object val2 = get(); |
252 c.v[0][0] = Values.B; Object val2 = get(); |
254 assertEquals(val1, Values.A); |
253 assertEquals(val1, Values.A); |
255 assertEquals(val2, (isServerWithStable ? Values.A : Values.B)); |
254 assertEquals(val2, (isStableEnabled ? Values.A : Values.B)); |
256 |
255 |
257 c.v = new Object[1][1]; c.v[0][0] = Values.C; Object val3 = get(); |
256 c.v = new Object[1][1]; c.v[0][0] = Values.C; Object val3 = get(); |
258 assertEquals(val3, (isStableEnabled ? (isServerWithStable ? Values.A : Values.B) |
257 assertEquals(val3, (isStableEnabled ? (isStableEnabled ? Values.A : Values.B) |
259 : Values.C)); |
258 : Values.C)); |
260 |
259 |
261 c.v[0] = new Object[1]; c.v[0][0] = Values.D; Object val4 = get(); |
260 c.v[0] = new Object[1]; c.v[0][0] = Values.D; Object val4 = get(); |
262 assertEquals(val4, (isStableEnabled ? (isServerWithStable ? Values.A : Values.B) |
261 assertEquals(val4, (isStableEnabled ? (isStableEnabled ? Values.A : Values.B) |
263 : Values.D)); |
262 : Values.D)); |
264 } |
263 } |
265 |
264 |
266 { |
265 { |
267 c.v = new Object[1][1]; Object[] val1 = get1(); |
266 c.v = new Object[1][1]; Object[] val1 = get1(); |
268 c.v[0] = new Object[1]; Object[] val2 = get1(); |
267 c.v[0] = new Object[1]; Object[] val2 = get1(); |
269 assertTrue((isServerWithStable ? (val1 == val2) : (val1 != val2))); |
268 assertTrue((isStableEnabled ? (val1 == val2) : (val1 != val2))); |
270 } |
269 } |
271 |
270 |
272 { |
271 { |
273 c.v = new Object[1][1]; Object[][] val1 = get2(); |
272 c.v = new Object[1][1]; Object[][] val1 = get2(); |
274 c.v = new Object[1][1]; Object[][] val2 = get2(); |
273 c.v = new Object[1][1]; Object[][] val2 = get2(); |
290 public static void test() throws Exception { |
289 public static void test() throws Exception { |
291 { |
290 { |
292 c.v = new Object[1][1][1]; c.v[0][0][0] = Values.A; Object val1 = get(); |
291 c.v = new Object[1][1][1]; c.v[0][0][0] = Values.A; Object val1 = get(); |
293 c.v[0][0][0] = Values.B; Object val2 = get(); |
292 c.v[0][0][0] = Values.B; Object val2 = get(); |
294 assertEquals(val1, Values.A); |
293 assertEquals(val1, Values.A); |
295 assertEquals(val2, (isServerWithStable ? Values.A : Values.B)); |
294 assertEquals(val2, (isStableEnabled ? Values.A : Values.B)); |
296 |
295 |
297 c.v = new Object[1][1][1]; c.v[0][0][0] = Values.C; Object val3 = get(); |
296 c.v = new Object[1][1][1]; c.v[0][0][0] = Values.C; Object val3 = get(); |
298 assertEquals(val3, (isStableEnabled ? (isServerWithStable ? Values.A : Values.B) |
297 assertEquals(val3, (isStableEnabled ? (isStableEnabled ? Values.A : Values.B) |
299 : Values.C)); |
298 : Values.C)); |
300 |
299 |
301 c.v[0] = new Object[1][1]; c.v[0][0][0] = Values.D; Object val4 = get(); |
300 c.v[0] = new Object[1][1]; c.v[0][0][0] = Values.D; Object val4 = get(); |
302 assertEquals(val4, (isStableEnabled ? (isServerWithStable ? Values.A : Values.B) |
301 assertEquals(val4, (isStableEnabled ? (isStableEnabled ? Values.A : Values.B) |
303 : Values.D)); |
302 : Values.D)); |
304 |
303 |
305 c.v[0][0] = new Object[1]; c.v[0][0][0] = Values.E; Object val5 = get(); |
304 c.v[0][0] = new Object[1]; c.v[0][0][0] = Values.E; Object val5 = get(); |
306 assertEquals(val5, (isStableEnabled ? (isServerWithStable ? Values.A : Values.B) |
305 assertEquals(val5, (isStableEnabled ? (isStableEnabled ? Values.A : Values.B) |
307 : Values.E)); |
306 : Values.E)); |
308 } |
307 } |
309 |
308 |
310 { |
309 { |
311 c.v = new Object[1][1][1]; Object[] val1 = get1(); |
310 c.v = new Object[1][1][1]; Object[] val1 = get1(); |
312 c.v[0][0] = new Object[1]; Object[] val2 = get1(); |
311 c.v[0][0] = new Object[1]; Object[] val2 = get1(); |
313 assertTrue((isServerWithStable ? (val1 == val2) : (val1 != val2))); |
312 assertTrue((isStableEnabled ? (val1 == val2) : (val1 != val2))); |
314 } |
313 } |
315 |
314 |
316 { |
315 { |
317 c.v = new Object[1][1][1]; Object[][] val1 = get2(); |
316 c.v = new Object[1][1][1]; Object[][] val1 = get2(); |
318 c.v[0] = new Object[1][1]; Object[][] val2 = get2(); |
317 c.v[0] = new Object[1][1]; Object[][] val2 = get2(); |
319 assertTrue((isServerWithStable ? (val1 == val2) : (val1 != val2))); |
318 assertTrue((isStableEnabled ? (val1 == val2) : (val1 != val2))); |
320 } |
319 } |
321 |
320 |
322 { |
321 { |
323 c.v = new Object[1][1][1]; Object[][][] val1 = get3(); |
322 c.v = new Object[1][1][1]; Object[][][] val1 = get3(); |
324 c.v = new Object[1][1][1]; Object[][][] val2 = get3(); |
323 c.v = new Object[1][1][1]; Object[][][] val2 = get3(); |
341 public static void test() throws Exception { |
340 public static void test() throws Exception { |
342 { |
341 { |
343 c.v = new Object[1][1][1][1]; c.v[0][0][0][0] = Values.A; Object val1 = get(); |
342 c.v = new Object[1][1][1][1]; c.v[0][0][0][0] = Values.A; Object val1 = get(); |
344 c.v[0][0][0][0] = Values.B; Object val2 = get(); |
343 c.v[0][0][0][0] = Values.B; Object val2 = get(); |
345 assertEquals(val1, Values.A); |
344 assertEquals(val1, Values.A); |
346 assertEquals(val2, (isServerWithStable ? Values.A : Values.B)); |
345 assertEquals(val2, (isStableEnabled ? Values.A : Values.B)); |
347 |
346 |
348 c.v = new Object[1][1][1][1]; c.v[0][0][0][0] = Values.C; Object val3 = get(); |
347 c.v = new Object[1][1][1][1]; c.v[0][0][0][0] = Values.C; Object val3 = get(); |
349 assertEquals(val3, (isStableEnabled ? (isServerWithStable ? Values.A : Values.B) |
348 assertEquals(val3, (isStableEnabled ? (isStableEnabled ? Values.A : Values.B) |
350 : Values.C)); |
349 : Values.C)); |
351 |
350 |
352 c.v[0] = new Object[1][1][1]; c.v[0][0][0][0] = Values.D; Object val4 = get(); |
351 c.v[0] = new Object[1][1][1]; c.v[0][0][0][0] = Values.D; Object val4 = get(); |
353 assertEquals(val4, (isStableEnabled ? (isServerWithStable ? Values.A : Values.B) |
352 assertEquals(val4, (isStableEnabled ? (isStableEnabled ? Values.A : Values.B) |
354 : Values.D)); |
353 : Values.D)); |
355 |
354 |
356 c.v[0][0] = new Object[1][1]; c.v[0][0][0][0] = Values.E; Object val5 = get(); |
355 c.v[0][0] = new Object[1][1]; c.v[0][0][0][0] = Values.E; Object val5 = get(); |
357 assertEquals(val5, (isStableEnabled ? (isServerWithStable ? Values.A : Values.B) |
356 assertEquals(val5, (isStableEnabled ? (isStableEnabled ? Values.A : Values.B) |
358 : Values.E)); |
357 : Values.E)); |
359 |
358 |
360 c.v[0][0][0] = new Object[1]; c.v[0][0][0][0] = Values.F; Object val6 = get(); |
359 c.v[0][0][0] = new Object[1]; c.v[0][0][0][0] = Values.F; Object val6 = get(); |
361 assertEquals(val6, (isStableEnabled ? (isServerWithStable ? Values.A : Values.B) |
360 assertEquals(val6, (isStableEnabled ? (isStableEnabled ? Values.A : Values.B) |
362 : Values.F)); |
361 : Values.F)); |
363 } |
362 } |
364 |
363 |
365 { |
364 { |
366 c.v = new Object[1][1][1][1]; Object[] val1 = get1(); |
365 c.v = new Object[1][1][1][1]; Object[] val1 = get1(); |
367 c.v[0][0][0] = new Object[1]; Object[] val2 = get1(); |
366 c.v[0][0][0] = new Object[1]; Object[] val2 = get1(); |
368 assertTrue((isServerWithStable ? (val1 == val2) : (val1 != val2))); |
367 assertTrue((isStableEnabled ? (val1 == val2) : (val1 != val2))); |
369 } |
368 } |
370 |
369 |
371 { |
370 { |
372 c.v = new Object[1][1][1][1]; Object[][] val1 = get2(); |
371 c.v = new Object[1][1][1][1]; Object[][] val1 = get2(); |
373 c.v[0][0] = new Object[1][1]; Object[][] val2 = get2(); |
372 c.v[0][0] = new Object[1][1]; Object[][] val2 = get2(); |
374 assertTrue((isServerWithStable ? (val1 == val2) : (val1 != val2))); |
373 assertTrue((isStableEnabled ? (val1 == val2) : (val1 != val2))); |
375 } |
374 } |
376 |
375 |
377 { |
376 { |
378 c.v = new Object[1][1][1][1]; Object[][][] val1 = get3(); |
377 c.v = new Object[1][1][1][1]; Object[][][] val1 = get3(); |
379 c.v[0] = new Object[1][1][1]; Object[][][] val2 = get3(); |
378 c.v[0] = new Object[1][1][1]; Object[][][] val2 = get3(); |
380 assertTrue((isServerWithStable ? (val1 == val2) : (val1 != val2))); |
379 assertTrue((isStableEnabled ? (val1 == val2) : (val1 != val2))); |
381 } |
380 } |
382 |
381 |
383 { |
382 { |
384 c.v = new Object[1][1][1][1]; Object[][][][] val1 = get4(); |
383 c.v = new Object[1][1][1][1]; Object[][][][] val1 = get4(); |
385 c.v = new Object[1][1][1][1]; Object[][][][] val2 = get4(); |
384 c.v = new Object[1][1][1][1]; Object[][][][] val2 = get4(); |
471 |
470 |
472 { |
471 { |
473 c.v = new Object[1][1][1]; c.v[0][0] = new Object[0]; Object[] val1 = get1(); |
472 c.v = new Object[1][1][1]; c.v[0][0] = new Object[0]; Object[] val1 = get1(); |
474 c.v[0][0] = new Object[0]; Object[] val2 = get1(); |
473 c.v[0][0] = new Object[0]; Object[] val2 = get1(); |
475 |
474 |
476 assertTrue((isServerWithStable ? (val1 == val2) : (val1 != val2))); |
475 assertTrue((isStableEnabled ? (val1 == val2) : (val1 != val2))); |
477 } |
476 } |
478 |
477 |
479 { |
478 { |
480 c.v = new Object[1][1][1]; c.v[0] = new Object[0][0]; Object[][] val1 = get2(); |
479 c.v = new Object[1][1][1]; c.v[0] = new Object[0][0]; Object[][] val1 = get2(); |
481 c.v[0] = new Object[0][0]; Object[][] val2 = get2(); |
480 c.v[0] = new Object[0][0]; Object[][] val2 = get2(); |
482 |
481 |
483 assertTrue((isServerWithStable ? (val1 == val2) : (val1 != val2))); |
482 assertTrue((isStableEnabled ? (val1 == val2) : (val1 != val2))); |
484 } |
483 } |
485 |
484 |
486 { |
485 { |
487 c.v = new Object[0][0][0]; Object[][] val1 = get3(); |
486 c.v = new Object[0][0][0]; Object[][] val1 = get3(); |
488 c.v = new Object[0][0][0]; Object[][] val2 = get3(); |
487 c.v = new Object[0][0][0]; Object[][] val2 = get3(); |
613 c.v = new A[] { elem, elem }; c.v[0].left = c.v[0].right = c.v; |
612 c.v = new A[] { elem, elem }; c.v[0].left = c.v[0].right = c.v; |
614 elem.a = Values.A; Object val1 = get(); Object val2 = get1(); |
613 elem.a = Values.A; Object val1 = get(); Object val2 = get1(); |
615 elem.a = Values.B; Object val3 = get(); Object val4 = get1(); |
614 elem.a = Values.B; Object val3 = get(); Object val4 = get1(); |
616 |
615 |
617 assertEquals(val1, Values.A); |
616 assertEquals(val1, Values.A); |
618 assertEquals(val3, (isServerWithStable ? Values.A : Values.B)); |
617 assertEquals(val3, (isStableEnabled ? Values.A : Values.B)); |
619 |
618 |
620 assertEquals(val2, Values.A); |
619 assertEquals(val2, Values.A); |
621 assertEquals(val4, Values.B); |
620 assertEquals(val4, Values.B); |
622 } |
621 } |
623 } |
622 } |