From b94c2de6d0152789f7e7e6a1b75ac80f218a6219 Mon Sep 17 00:00:00 2001
From: log2 <logtwo2@gmail.com>
Date: Sat, 15 Nov 2014 21:20:12 +0100
Subject: [PATCH] Added code to generate tests two times: this helps testing
 code generation stability (which was undermined by caching)

---
 .../com/amd/aparapi/CreateJUnitTests.java     | 73 +++++++++++--------
 1 file changed, 43 insertions(+), 30 deletions(-)

diff --git a/test/codegen/src/java/com/amd/aparapi/CreateJUnitTests.java b/test/codegen/src/java/com/amd/aparapi/CreateJUnitTests.java
index 40c00851..028da4a8 100644
--- a/test/codegen/src/java/com/amd/aparapi/CreateJUnitTests.java
+++ b/test/codegen/src/java/com/amd/aparapi/CreateJUnitTests.java
@@ -45,7 +45,7 @@ import java.io.PrintStream;
 import java.util.ArrayList;
 import java.util.List;
 
-public class CreateJUnitTests{
+public class CreateJUnitTests {
    public static void main(String[] args) throws ClassNotFoundException, FileNotFoundException, IOException {
       File rootDir = new File(System.getProperty("root", "."));
 
@@ -57,9 +57,10 @@ public class CreateJUnitTests{
       System.out.println(testDir.getCanonicalPath());
 
       List<String> classNames = new ArrayList<String>();
-      for (File sourceFile : testDir.listFiles(new FilenameFilter(){
+      for (File sourceFile : testDir.listFiles(new FilenameFilter() {
 
-         @Override public boolean accept(File dir, String name) {
+         @Override
+         public boolean accept(File dir, String name) {
             return (name.endsWith(".java"));
          }
       })) {
@@ -86,33 +87,10 @@ public class CreateJUnitTests{
             sb.append("\n */\n");
          }
          sb.append("public class " + className + " extends com.amd.aparapi.CodeGenJUnitBase{\n");
-         sb.append("   @Test public void " + className + "(){\n");
-         if (source.getOpenCLSectionCount() > 0) {
-
-            sb.append("   String[] expectedOpenCL = new String[]{\n");
-            for (List<String> opencl : source.getOpenCL()) {
-               sb.append("   \"\"\n");
-               for (String line : opencl) {
-                  sb.append("   +\"" + line + "\\n\"\n");
-               }
-               sb.append("   ,\n");
-            }
-            sb.append("   };\n");
-         } else {
-            sb.append("   String[] expectedOpenCL = null;\n");
-         }
-
-         String exceptions = source.getExceptionsString();
-         if (exceptions.length() > 0) {
-            sb.append("   Class<? extends com.amd.aparapi.internal.exception.AparapiException> expectedException = ");
-
-            sb.append("com.amd.aparapi.internal.exception." + exceptions + ".class");
-            sb.append(";\n");
-         } else {
-            sb.append("   Class<? extends com.amd.aparapi.internal.exception.AparapiException> expectedException = null;\n");
-         }
-         sb.append("       test(" + testPackageName + "." + className + ".class, expectedException, expectedOpenCL);\n");
-         sb.append("   }\n");
+         appendExpectedOpenCL(source, sb);
+         appendExpectedExceptions(source, sb);
+         appendTest(testPackageName, className, "", sb);
+         appendTest(testPackageName, className, "WorksWithCaching", sb);
          sb.append("}\n");
          //  System.out.println(sb.toString());
 
@@ -124,4 +102,39 @@ public class CreateJUnitTests{
       }
 
    }
+
+   private static void appendTest(String testPackageName, String className, String suffix, StringBuilder sb) {
+      sb.append("   @Test public void " + className + suffix + "(){\n");
+      sb.append("       test(" + testPackageName + "." + className + ".class, expectedException, expectedOpenCL);\n");
+      sb.append("   }\n");
+   }
+
+   private static void appendExpectedExceptions(Source source, StringBuilder sb) {
+      String exceptions = source.getExceptionsString();
+      if (exceptions.length() > 0) {
+         sb.append("   private static final Class<? extends com.amd.aparapi.internal.exception.AparapiException> expectedException = ");
+
+         sb.append("com.amd.aparapi.internal.exception." + exceptions + ".class");
+         sb.append(";\n");
+      } else {
+         sb.append("   private static final Class<? extends com.amd.aparapi.internal.exception.AparapiException> expectedException = null;\n");
+      }
+   }
+
+   private static void appendExpectedOpenCL(Source source, StringBuilder sb) {
+      if (source.getOpenCLSectionCount() > 0) {
+
+         sb.append("  private static final  String[] expectedOpenCL = new String[]{\n");
+         for (List<String> opencl : source.getOpenCL()) {
+            sb.append("   \"\"\n");
+            for (String line : opencl) {
+               sb.append("   +\"" + line + "\\n\"\n");
+            }
+            sb.append("   ,\n");
+         }
+         sb.append("   };\n");
+      } else {
+         sb.append("   private static final String[] expectedOpenCL = null;\n");
+      }
+   }
 }
-- 
GitLab