use of examples.PackageExamples in project openj9 by eclipse.
the class Unreflect_InvokeTracker method test_Unreflect_Public_CrossPackage.
/**
**************************************************************************************************
* unreflect tests.
* Combinations :Cross package - public [static] and private [static] , virtual [overridden] methods
* *************************************************************************************************
*/
/**
* Test to unreflect a public virtual method belonging to a different package than the Lookup class.
* @throws Throwable
*/
@Test(groups = { "level.extended" })
@SuppressWarnings({ "rawtypes", "unchecked" })
public void test_Unreflect_Public_CrossPackage() throws Throwable {
Class clazz = Class.forName("examples.PackageExamples");
Method m = clazz.getDeclaredMethod("addPublic", int.class, int.class);
MethodHandle mh = MethodHandles.lookup().unreflect(m);
PackageExamples g = new PackageExamples();
int out = (int) mh.invokeExact(g, 1, 2);
AssertJUnit.assertEquals(3, out);
}
use of examples.PackageExamples in project openj9 by eclipse.
the class Unreflect_InvokeTracker method test_Unreflect_SetterGetter_Public_CrossPackage.
/**
****************************************************************************
* unreflectGetter unreflectSetter tests.
* Combinations : cross package - public [static] and private [static] fields
*****************************************************************************
*/
/**
* unreflectSetter/getter test using a public virtual method belonging to a different package than the Lookup class.
* @throws Throwable
*/
@Test(groups = { "level.extended" })
public void test_Unreflect_SetterGetter_Public_CrossPackage() throws Throwable {
Field nonStaticPublicField = PackageExamples.class.getDeclaredField("nonStaticPublicField");
PackageExamples g = new PackageExamples();
MethodHandle mhSetter = MethodHandles.lookup().unreflectSetter(nonStaticPublicField);
mhSetter.invokeExact(g, 100);
MethodHandle mhGetter = MethodHandles.lookup().unreflectGetter(nonStaticPublicField);
int out = (int) mhGetter.invokeExact(g);
AssertJUnit.assertEquals(100, out);
}
use of examples.PackageExamples in project openj9 by eclipse.
the class Find_InvokeTracker method test_GetterSetter_Public_CrossPackage.
/**
******************************************************************************
* findSetter, findGetter, findStaticSetter, findStaticGetter tests.
* COMBINATIONS: Cross package - public, private, public static, private static,
* protected, super-class, sub-class fields
* *****************************************************************************
*/
/*public fields ( cross package )*/
/**
* findSetter, findGetter tests using public fields belonging to a different class under a
* different package than the lookup class.
* @throws Throwable
*/
@Test(groups = { "level.extended" })
public void test_GetterSetter_Public_CrossPackage() throws Throwable {
Lookup publicLookup = MethodHandles.lookup();
MethodHandle mhSetter = publicLookup.findSetter(PackageExamples.class, "nonStaticPublicField", int.class);
MethodHandle mhGetter = publicLookup.findGetter(PackageExamples.class, "nonStaticPublicField", int.class);
PackageExamples g = new PackageExamples();
mhSetter.invokeExact(g, 5);
int o = (int) mhGetter.invoke(g);
AssertJUnit.assertEquals(o, 5);
}
use of examples.PackageExamples in project openj9 by eclipse.
the class Find_InvokeTracker method test_FindVirtual_Public_CrossPackage_Overridden_SubclassLookup.
/**
* findVirtual test with a public overridden method in a super-class of the lookup class that is on a different package than the lookup class.
* @throws Throwable
*/
@Test(groups = { "level.extended" })
public void test_FindVirtual_Public_CrossPackage_Overridden_SubclassLookup() throws Throwable {
MethodHandle example = CrossPackageExampleSubclass.getLookup().findVirtual(PackageExamples.class, "addPublic", MethodType.methodType(int.class, int.class, int.class));
PackageExamples g = new CrossPackageExampleSubclass();
int s = (int) example.invoke(g, 1, 2);
AssertJUnit.assertEquals(5, s);
}
use of examples.PackageExamples in project openj9 by eclipse.
the class Find_InvokeTracker method test_FindVirtual_Public_CrossPackage.
/*public methods ( cross package )*/
/**
* findVirtual test with a public method in a class that belongs to a different package than the lookup class.
* @throws Throwable
*/
@Test(groups = { "level.extended" })
public void test_FindVirtual_Public_CrossPackage() throws Throwable {
MethodHandle example = MethodHandles.lookup().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);
}
Aggregations