< prev index next >
test/jdk/com/sun/tools/jextract/test8221154/SrcGenTest.java
Print this page
*** 19,45 ****
* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
* or visit www.oracle.com if you need additional information or have any
* questions.
*/
import java.io.File;
import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.util.ArrayList;
import java.util.spi.ToolProvider;
import org.testng.annotations.Test;
import static org.testng.Assert.assertTrue;
/*
* @test
* @bug 8221154
* @summary jextract should generate java source files
* @run testng SrcGenTest
*/
! public class SrcGenTest {
private static final ToolProvider JEXTRACT = ToolProvider.findFirst("jextract")
.orElseThrow(() ->
new RuntimeException("jextract tool not found")
);
--- 19,50 ----
* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
* or visit www.oracle.com if you need additional information or have any
* questions.
*/
+ import java.foreign.memory.Pointer;
import java.io.File;
import java.io.IOException;
+ import java.lang.reflect.Method;
+ import java.lang.reflect.Modifier;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
+ import java.util.Arrays;
import java.util.ArrayList;
import java.util.spi.ToolProvider;
import org.testng.annotations.Test;
import static org.testng.Assert.assertTrue;
/*
* @test
* @bug 8221154
* @summary jextract should generate java source files
+ * @library ..
* @run testng SrcGenTest
*/
! public class SrcGenTest extends JextractToolRunner {
private static final ToolProvider JEXTRACT = ToolProvider.findFirst("jextract")
.orElseThrow(() ->
new RuntimeException("jextract tool not found")
);
*** 96,102 ****
--- 101,155 ----
assertTrue(Files.isRegularFile(pkgDir.resolve("srcgentest.class")));
assertTrue(Files.isRegularFile(pkgDir.resolve("srcgentest$Point.class")));
assertTrue(Files.isRegularFile(pkgDir.resolve("srcgentest$Color.class")));
assertTrue(Files.isRegularFile(pkgDir.resolve("srcgentest_h.class")));
assertTrue(Files.isRegularFile(pkgDir.resolve("srcgentest_h$Color.class")));
+
+ checkClasses(outputDir, pkgName);
+ }
+
+ private void checkClasses(Path outputDir, String pkgName) {
+ Loader loader = classLoader(outputDir);
+ Class<?> forwarderCls = loader.loadClass(pkgName + ".srcgentest_h");
+ assertTrue(forwarderCls != null);
+
+ // check "sum" method
+ Method sumMethod = findFirstMethod(forwarderCls, "sum");
+ assertTrue(sumMethod.getReturnType() == int.class);
+ Class<?>[] sumParamTypes = sumMethod.getParameterTypes();
+ assertTrue(sumParamTypes.length == 2);
+ assertTrue(sumParamTypes[0] == int.class);
+ assertTrue(sumParamTypes[1] == Object[].class);
+ assertTrue(Modifier.isStatic(sumMethod.getModifiers()));
+
+ // check "x_coord" method
+ Method xCoordMethod = findFirstMethod(forwarderCls, "x_coord");
+ assertTrue(xCoordMethod.getReturnType() == int.class);
+ Class<?>[] xCoordParamTypes = xCoordMethod.getParameterTypes();
+ assertTrue(xCoordParamTypes.length == 1);
+ assertTrue(xCoordParamTypes[0] == Pointer.class);
+
+ // check "y_coord" method
+ Method yCoordMethod = findFirstMethod(forwarderCls, "y_coord");
+ assertTrue(yCoordMethod.getReturnType() == int.class);
+ Class<?>[] yCoordParamTypes = yCoordMethod.getParameterTypes();
+ assertTrue(yCoordParamTypes.length == 1);
+ assertTrue(yCoordParamTypes[0] == Pointer.class);
+
+ // global variable "num" getter
+ Method numGet = findGlobalVariableGet(forwarderCls, "num");
+ assertTrue(numGet != null);
+
+ // anonymous enum fields
+ assertTrue(findField(forwarderCls, "R") != null);
+ assertTrue(findField(forwarderCls, "G") != null);
+ assertTrue(findField(forwarderCls, "B") != null);
+
+ // enum interface class
+ Class<?> colorCls = Arrays.stream(forwarderCls.getClasses())
+ .filter(c -> c.getSimpleName().equals("Color")).findFirst().get();
+ assertTrue(Modifier.isInterface(colorCls.getModifiers()));
+ checkIntField(colorCls, "RED", 0);
+ checkIntField(colorCls, "GREEN", 1);
+ checkIntField(colorCls, "BLUE", 2);
}
}
< prev index next >