use of examples.PackageExamples in project openj9 by eclipse.
the class LookupAPITests_Bind method test_Bind_Virtual_Protected_CrossPackage_Overridden_SubclassLookup.
/**
* Negative test : Lookup.bind() test with a protected method belonging to a super-class(receiver) that is on a different package than the lookup class.
* @throws Throwable
*/
@Test(groups = { "level.extended" })
public void test_Bind_Virtual_Protected_CrossPackage_Overridden_SubclassLookup() throws Throwable {
boolean iaeThrown = false;
try {
PackageExamples g = new PackageExamples();
MethodHandles.lookup().bind(g, "addProtected", MethodType.methodType(int.class, int.class, int.class));
} catch (IllegalAccessException e) {
iaeThrown = true;
}
AssertJUnit.assertTrue(iaeThrown);
}
use of examples.PackageExamples in project openj9 by eclipse.
the class LookupAPITests_Bind method test_Bind_Virtual_Private_CrossPackage.
/*private methods ( cross package )*/
/**
* Lookup.bind() test with a private method belonging to a different class than the lookup class
* @throws Throwable
*/
@Test(groups = { "level.extended" })
public void test_Bind_Virtual_Private_CrossPackage() throws Throwable {
boolean illegalAccessExceptionThrown = false;
try {
PackageExamples g = new PackageExamples();
MethodHandles.lookup().bind(g, "addPrivate", MethodType.methodType(int.class, int.class, int.class));
} catch (IllegalAccessException e) {
illegalAccessExceptionThrown = true;
}
AssertJUnit.assertTrue(illegalAccessExceptionThrown);
}
use of examples.PackageExamples in project openj9 by eclipse.
the class Find_InvokeTracker method test_FindVirtual_Public_CrossPackage_SubclassLookup.
/**
* findVirtual test with a public method in a super-class on a different package than the lookup ( sub ) class
* @throws Throwable
*/
@Test(groups = { "level.extended" })
public void test_FindVirtual_Public_CrossPackage_SubclassLookup() throws Throwable {
MethodHandle example = CrossPackageExampleSubclass.getLookup().findVirtual(PackageExamples.class, "addPublic", MethodType.methodType(int.class, int.class, int.class));
PackageExamples g = new PackageExamples();
int s = (int) example.invokeExact(g, 1, 2);
AssertJUnit.assertEquals(3, s);
}
use of examples.PackageExamples in project openj9 by eclipse.
the class MethodHandleProxiesTest method test_wrapperInstanceType_VirtualMethod.
/**
********************************
* Tests for wrapperInstanceType
* ******************************
*/
/**
* Tests wrapperInstanceType using public virtual wrappers and single method interfaces from same package and cross-package.
* @throws Throwable
*/
@Test(groups = { "level.extended" })
public void test_wrapperInstanceType_VirtualMethod() throws Throwable {
// same package test
MethodHandle mh = MethodHandles.lookup().findVirtual(SamePackageExample.class, "addPublic", MethodType.methodType(int.class, int.class, int.class));
mh = mh.bindTo(new SamePackageExample());
SamePackageSingleMethodInterfaceExample interfaceInstance = MethodHandleProxies.asInterfaceInstance(SamePackageSingleMethodInterfaceExample.class, mh);
Class<?> retrievedTargetType = MethodHandleProxies.wrapperInstanceType(interfaceInstance);
AssertJUnit.assertEquals(SamePackageSingleMethodInterfaceExample.class, retrievedTargetType);
// cross package test
MethodHandle mh2 = MethodHandles.lookup().findVirtual(PackageExamples.class, "addPublic", MethodType.methodType(int.class, int.class, int.class));
mh2 = mh2.bindTo(new PackageExamples());
CrossPackageSingleMethodInterfaceExample interfaceInstanceCrossPackage = MethodHandleProxies.asInterfaceInstance(CrossPackageSingleMethodInterfaceExample.class, mh2);
Class<?> retrievedTargetType2 = MethodHandleProxies.wrapperInstanceType(interfaceInstanceCrossPackage);
AssertJUnit.assertEquals(CrossPackageSingleMethodInterfaceExample.class, retrievedTargetType2);
}
use of examples.PackageExamples in project openj9 by eclipse.
the class MethodHandleProxiesTest method test_wrapperInstanceType_InnerClass.
/**
* Tests wrapperInstanceType using inner-class wrappers and single method interfaces from same package and cross-package.
* @throws Throwable
*/
@Test(groups = { "level.extended" })
public void test_wrapperInstanceType_InnerClass() throws Throwable {
// same package test
MethodHandle mh = MethodHandles.lookup().findVirtual(SamePackageExample.SamePackageInnerClass.class, "addPublicInner", MethodType.methodType(int.class, int.class, int.class));
SamePackageExample x = new SamePackageExample();
SamePackageExample.SamePackageInnerClass i = x.new SamePackageInnerClass();
mh = mh.bindTo(i);
SamePackageSingleMethodInterfaceExample interfaceInstance = MethodHandleProxies.asInterfaceInstance(SamePackageSingleMethodInterfaceExample.class, mh);
Class<?> retrievedTargetType = MethodHandleProxies.wrapperInstanceType(interfaceInstance);
AssertJUnit.assertEquals(SamePackageSingleMethodInterfaceExample.class, retrievedTargetType);
// cross package test
MethodHandle mh2 = MethodHandles.lookup().findVirtual(PackageExamples.CrossPackageInnerClass.class, "addPublicInner", MethodType.methodType(int.class, int.class, int.class));
PackageExamples y = new PackageExamples();
mh2 = mh2.bindTo(y.new CrossPackageInnerClass());
CrossPackageSingleMethodInterfaceExample interfaceInstanceCrossPackage = MethodHandleProxies.asInterfaceInstance(CrossPackageSingleMethodInterfaceExample.class, mh2);
Class<?> retrievedTargetType2 = MethodHandleProxies.wrapperInstanceType(interfaceInstanceCrossPackage);
AssertJUnit.assertEquals(CrossPackageSingleMethodInterfaceExample.class, retrievedTargetType2);
}
Aggregations