< prev index next >
test/jdk/valhalla/valuetypes/QTypeDescriptorTest.java
Print this page
rev 52850 : imported patch method-var-handles
*** 21,35 ****
* questions.
*/
/*
* @test
! * @summary Verify ValueTypes attribute generated by core reflection,
! * dynamic proxy and lambda proxy classes
! * @compile -XDallowFlattenabilityModifiers -XDallowWithFieldOperator Point.java Line.java MutablePath.java
! * @compile -XDallowFlattenabilityModifiers -XDallowWithFieldOperator NonFlattenValue.java
! * @run testng/othervm -XX:+EnableValhalla -Dsun.reflect.inflationThreshold=0 ValueTypesAttributeTest
*/
import java.lang.invoke.MethodHandle;
import java.lang.invoke.MethodHandles;
import java.lang.invoke.MethodType;
--- 21,35 ----
* questions.
*/
/*
* @test
! * @summary Test core reflection, dynamic proxy and lambdas that generates
! * classes dynamically that reference Q-type and L-type
! * @compile -XDallowWithFieldOperator Point.java Line.java MutablePath.java
! * @compile -XDallowWithFieldOperator NonFlattenValue.java
! * @run testng/othervm -XX:+EnableValhalla -Dsun.reflect.inflationThreshold=0 QTypeDescriptorTest
*/
import java.lang.invoke.MethodHandle;
import java.lang.invoke.MethodHandles;
import java.lang.invoke.MethodType;
*** 38,48 ****
import org.testng.annotations.DataProvider;
import org.testng.annotations.Test;
import static org.testng.Assert.*;
! public class ValueTypesAttributeTest {
static final Point P0 = Point.makePoint(10, 20);
static final Point P1 = Point.makePoint(30, 40);
static final NonFlattenValue NFV = NonFlattenValue.make(30, 40);
@Test
--- 38,48 ----
import org.testng.annotations.DataProvider;
import org.testng.annotations.Test;
import static org.testng.Assert.*;
! public class QTypeDescriptorTest {
static final Point P0 = Point.makePoint(10, 20);
static final Point P1 = Point.makePoint(30, 40);
static final NonFlattenValue NFV = NonFlattenValue.make(30, 40);
@Test
*** 58,80 ****
f.apply(new Point[] { P0, P1});
}
@Test
public static void testMethodInvoke() throws Exception {
! Method m = ValueTypesAttributeTest.class
! .getDeclaredMethod("toLine", Point.class, NonFlattenValue.class);
makeLine(m, P0, NFV);
! m = ValueTypesAttributeTest.class
.getDeclaredMethod("toLine", Point[].class);
makeLine(m, (Object) new Point[] { P0, P1});
}
private static void makeLine(Method m, Object... args) throws Exception {
Line l = (Line) m.invoke(null, args);
assertEquals(l.p1, P0);
! assertEquals(l.p2, NFV.point());
}
@Test
public static void testStaticMethod() throws Throwable {
// static method in a value type with no parameter and void return type
--- 58,82 ----
f.apply(new Point[] { P0, P1});
}
@Test
public static void testMethodInvoke() throws Exception {
! Class<?> pointQType = Point.class.asValueType();
! Class<?> nonFlattenValueQType = NonFlattenValue.class.asValueType();
! Method m = QTypeDescriptorTest.class
! .getDeclaredMethod("toLine", pointQType, nonFlattenValueQType);
makeLine(m, P0, NFV);
! m = QTypeDescriptorTest.class
.getDeclaredMethod("toLine", Point[].class);
makeLine(m, (Object) new Point[] { P0, P1});
}
private static void makeLine(Method m, Object... args) throws Exception {
Line l = (Line) m.invoke(null, args);
assertEquals(l.p1, P0);
! assertEquals(l.p2, NFV.pointValue());
}
@Test
public static void testStaticMethod() throws Throwable {
// static method in a value type with no parameter and void return type
*** 111,132 ****
throw new UnsupportedOperationException(method.toString());
}
};
Class<?>[] intfs = new Class<?>[] { I.class };
! I intf = (I) Proxy.newProxyInstance(ValueTypesAttributeTest.class.getClassLoader(), intfs, handler);
Line l = intf.toLine(P0, NFV);
assertEquals(l.p1, P0);
! assertEquals(l.p2, NFV.point());
}
private static <T> T[] newArray(IntFunction<T[]> arrayCreator, int size) {
return arrayCreator.apply(size);
}
private static Line toLine(Point p, NonFlattenValue nfv) {
! return Line.makeLine(p, nfv.point());
}
private static Line toLine(Point[] points) {
assertTrue(points.length == 2);
return Line.makeLine(points[0], points[1]);
--- 113,134 ----
throw new UnsupportedOperationException(method.toString());
}
};
Class<?>[] intfs = new Class<?>[] { I.class };
! I intf = (I) Proxy.newProxyInstance(QTypeDescriptorTest.class.getClassLoader(), intfs, handler);
Line l = intf.toLine(P0, NFV);
assertEquals(l.p1, P0);
! assertEquals(l.p2, NFV.pointValue());
}
private static <T> T[] newArray(IntFunction<T[]> arrayCreator, int size) {
return arrayCreator.apply(size);
}
private static Line toLine(Point p, NonFlattenValue nfv) {
! return Line.makeLine(p, nfv.pointValue());
}
private static Line toLine(Point[] points) {
assertTrue(points.length == 2);
return Line.makeLine(points[0], points[1]);
< prev index next >