< prev index next >

test/jdk/java/lang/invoke/VarHandles/VarHandleBaseTest.java

Print this page

416             return desc;
417         }
418     }
419 
420     static class VarHandleAccessTestCase extends AccessTestCase<VarHandle> {
421         final VarHandle vh;
422 
423         VarHandleAccessTestCase(String desc, VarHandle vh, AccessTestAction<VarHandle> ata) {
424             this(desc, vh, ata, true);
425         }
426 
427         VarHandleAccessTestCase(String desc, VarHandle vh, AccessTestAction<VarHandle> ata, boolean loop) {
428             super("VarHandle -> " + desc, ata, loop);
429             this.vh = vh;
430         }
431 
432         @Override
433         VarHandle get() {
434             return vh;
435         }




436     }
437 
438     static class MethodHandleAccessTestCase extends AccessTestCase<Handles> {
439         final VarHandle vh;
440         final VarHandleToMethodHandle f;
441 
442         MethodHandleAccessTestCase(String desc, VarHandle vh, VarHandleToMethodHandle f, AccessTestAction<Handles> ata) {
443             this(desc, vh, f, ata, true);
444         }
445 
446         MethodHandleAccessTestCase(String desc, VarHandle vh, VarHandleToMethodHandle f, AccessTestAction<Handles> ata, boolean loop) {
447             super("VarHandle -> " + f.toString() + " -> " + desc, ata, loop);
448             this.vh = vh;
449             this.f = f;
450         }
451 
452         @Override
453         Handles get() throws Exception {
454             return new Handles(vh, f);
455         }




456     }
457 
458     static void testTypes(VarHandle vh) {
459         List<Class<?>> pts = vh.coordinateTypes();
460 
461         for (TestAccessMode accessMode : testAccessModes()) {
462             MethodType amt = vh.accessModeType(accessMode.toAccessMode());
463 
464             assertEquals(pts, amt.parameterList().subList(0, pts.size()));
465         }
466 
467         for (TestAccessMode testAccessMode : testAccessModesOfType(TestAccessType.GET)) {
468             MethodType mt = vh.accessModeType(testAccessMode.toAccessMode());
469             assertEquals(vh.varType(), mt.returnType());
470             assertEquals(pts, mt.parameterList());
471         }
472 
473         for (TestAccessMode testAccessMode : testAccessModesOfType(TestAccessType.SET)) {
474             MethodType mt = vh.accessModeType(testAccessMode.toAccessMode());
475             assertEquals(void.class, mt.returnType());

416             return desc;
417         }
418     }
419 
420     static class VarHandleAccessTestCase extends AccessTestCase<VarHandle> {
421         final VarHandle vh;
422 
423         VarHandleAccessTestCase(String desc, VarHandle vh, AccessTestAction<VarHandle> ata) {
424             this(desc, vh, ata, true);
425         }
426 
427         VarHandleAccessTestCase(String desc, VarHandle vh, AccessTestAction<VarHandle> ata, boolean loop) {
428             super("VarHandle -> " + desc, ata, loop);
429             this.vh = vh;
430         }
431 
432         @Override
433         VarHandle get() {
434             return vh;
435         }
436 
437         public String toString() {
438             return super.toString() + ", vh:" + vh;
439         }
440     }
441 
442     static class MethodHandleAccessTestCase extends AccessTestCase<Handles> {
443         final VarHandle vh;
444         final VarHandleToMethodHandle f;
445 
446         MethodHandleAccessTestCase(String desc, VarHandle vh, VarHandleToMethodHandle f, AccessTestAction<Handles> ata) {
447             this(desc, vh, f, ata, true);
448         }
449 
450         MethodHandleAccessTestCase(String desc, VarHandle vh, VarHandleToMethodHandle f, AccessTestAction<Handles> ata, boolean loop) {
451             super("VarHandle -> " + f.toString() + " -> " + desc, ata, loop);
452             this.vh = vh;
453             this.f = f;
454         }
455 
456         @Override
457         Handles get() throws Exception {
458             return new Handles(vh, f);
459         }
460 
461         public String toString() {
462             return super.toString() + ", vh:" + vh + ", f: " + f;
463         }
464     }
465 
466     static void testTypes(VarHandle vh) {
467         List<Class<?>> pts = vh.coordinateTypes();
468 
469         for (TestAccessMode accessMode : testAccessModes()) {
470             MethodType amt = vh.accessModeType(accessMode.toAccessMode());
471 
472             assertEquals(pts, amt.parameterList().subList(0, pts.size()));
473         }
474 
475         for (TestAccessMode testAccessMode : testAccessModesOfType(TestAccessType.GET)) {
476             MethodType mt = vh.accessModeType(testAccessMode.toAccessMode());
477             assertEquals(vh.varType(), mt.returnType());
478             assertEquals(pts, mt.parameterList());
479         }
480 
481         for (TestAccessMode testAccessMode : testAccessModesOfType(TestAccessType.SET)) {
482             MethodType mt = vh.accessModeType(testAccessMode.toAccessMode());
483             assertEquals(void.class, mt.returnType());
< prev index next >