From 29072eee5784035d1284d3b9625450681fca25b3 Mon Sep 17 00:00:00 2001 From: Michael Bien Date: Fri, 18 Jun 2010 23:24:03 +0200 Subject: added BasicProcAddressEmitterTest testing generation of ProcAddressTable and method RenameJavaMethod property. --- .../sun/gluegen/BasicProcAddressEmitterTest.java | 68 ++++++++++++++++++++++ test/junit/com/sun/gluegen/BuildUtil.java | 14 ++++- test/junit/com/sun/gluegen/dyntest.cfg | 25 ++++++++ 3 files changed, 104 insertions(+), 3 deletions(-) create mode 100644 test/junit/com/sun/gluegen/BasicProcAddressEmitterTest.java create mode 100644 test/junit/com/sun/gluegen/dyntest.cfg (limited to 'test/junit/com') diff --git a/test/junit/com/sun/gluegen/BasicProcAddressEmitterTest.java b/test/junit/com/sun/gluegen/BasicProcAddressEmitterTest.java new file mode 100644 index 0000000..cdd8bd0 --- /dev/null +++ b/test/junit/com/sun/gluegen/BasicProcAddressEmitterTest.java @@ -0,0 +1,68 @@ +package com.sun.gluegen; + +import com.sun.gluegen.procaddress.ProcAddressEmitter; +import java.lang.reflect.Field; +import java.util.HashSet; +import java.util.Set; +import org.junit.AfterClass; +import org.junit.Test; +import static java.util.Arrays.*; +import static com.sun.gluegen.BuildUtil.*; +import static org.junit.Assert.*; + +/** + * Basic test using ProcAddressEmitter. + * @author Michael Bien + */ +public class BasicProcAddressEmitterTest { + + @Test + public void generateBindingTest() { + generate("dyntest", "test", ProcAddressEmitter.class.getName()); + } + + /** + * fails if ant script fails (which is a good thing). + * executeTarget throws RuntimeException on failure + */ + @Test + public void compileJavaTest() { + compileJava(); + } + + /* + * fails if ant script fails (which is a good thing) + * executeTarget throws RuntimeException on failure + */ + @Test + public void compileNativesTest() { + compileNatives(); + } + + @Test + public void renameTest() throws Exception { + + Class binding = Class.forName("test.DynBindingTest"); + Class table = Class.forName("test.Table"); + + Field[] fields = table.getDeclaredFields(); + + + Set expected = new HashSet( + asList("arrayTest", "bufferTest", "pbTest", "manyBuffersTest", "mixedTest", "doubleTest")); + + for (Field field : fields) { + System.out.println("address field: "+field); + + String function = field.getName().substring("_addressoff_".length()-1); + assertTrue("unexpected field: '"+function+"'",expected.contains(function)); + } + + } + + @AfterClass + public static void tearDown() { +// cleanGeneratedFiles(); + } + +} diff --git a/test/junit/com/sun/gluegen/BuildUtil.java b/test/junit/com/sun/gluegen/BuildUtil.java index 35dc0c1..0658893 100644 --- a/test/junit/com/sun/gluegen/BuildUtil.java +++ b/test/junit/com/sun/gluegen/BuildUtil.java @@ -109,14 +109,22 @@ public final class BuildUtil { } public static void generate(String bindingName) { + generate(bindingName, JavaEmitter.class.getName()); +// generate(bindingName, DebugEmitter.class.getName()); + } + + public static void generate(String bindingName, String emitter) { + generate(bindingName, bindingName, emitter); + } + public static void generate(String bindingName, String header, String emitter) { - out.println("generate binding: " + bindingName); + out.println("generate binding to '" + bindingName+"' using '"+emitter+"'"); GlueGen.main( "-I"+path, "-O"+testOutput+"/gensrc", - // "-Ecom.sun.gluegen.DebugEmitter", + "-E"+emitter, "-C"+path+"/"+bindingName+".cfg", - path+"/"+bindingName+".h" ); + path+"/"+header+".h" ); out.println("done"); } diff --git a/test/junit/com/sun/gluegen/dyntest.cfg b/test/junit/com/sun/gluegen/dyntest.cfg new file mode 100644 index 0000000..60b8764 --- /dev/null +++ b/test/junit/com/sun/gluegen/dyntest.cfg @@ -0,0 +1,25 @@ +Package test +Style AllStatic +JavaClass DynBindingTest +JavaOutputDir java +NativeOutputDir native + +CustomCCode #include "test.h" + +Import com.jogamp.common.nio.* + + +EmitProcAddressTable true +ProcAddressTableClassName Table +GetProcAddressTableExpr table +ProcAddressNameExpr $UpperCase(arg) + +ForceProcAddressGen __ALL__ + +CustomJavaCode DynBindingTest private final static Table table; +CustomJavaCode DynBindingTest static { +CustomJavaCode DynBindingTest table = new Table(); +CustomJavaCode DynBindingTest //table.reset(); +CustomJavaCode DynBindingTest } + +RenameJavaMethod arrayTest fancyArrayTest \ No newline at end of file -- cgit v1.2.3