2
0
Эх сурвалжийг харах

TestChooser multi-run fix.
Not all TestXXX class extends Application class.
If test doesn't extend Application, call main() instead of start() method.

git-svn-id: https://jmonkeyengine.googlecode.com/svn/trunk@7144 75d07b2b-3a1a-0410-a2c5-0572b91ccdca

mul..va 14 жил өмнө
parent
commit
fbc980152e

+ 25 - 17
engine/src/test/jme3test/TestChooser.java

@@ -265,24 +265,32 @@ public class TestChooser extends JDialog {
                 	    Class<?> clazz = (Class)appClass[i];
                 		try {
                 			Object app = clazz.newInstance();
-                			final Method settingMethod = clazz.getMethod("setShowSettings", boolean.class);
-                			settingMethod.invoke(app, showSetting);
-                			final Method mainMethod = clazz.getMethod("start", null);
-                			mainMethod.invoke(app, null);
-                			// wait for destroy
-                			Field contextField = Application.class.getDeclaredField("context");
-                			contextField.setAccessible(true);
-                			JmeContext context = null; 
-                			while (context == null) {
-                			    context = (JmeContext) contextField.get(app);
-                			    Thread.sleep(100);
-                			}
-                			while (!context.isCreated()) {
-                			    Thread.sleep(100);
-                			}
-                			while (context.isCreated()) {
-                			    Thread.sleep(100);
+                			if (app instanceof Application) {
+                			    if (app instanceof SimpleApplication) {
+                			        final Method settingMethod = clazz.getMethod("setShowSettings", boolean.class);
+                			        settingMethod.invoke(app, showSetting);
+                			    }
+                			    final Method mainMethod = clazz.getMethod("start", null);
+                			    mainMethod.invoke(app, null);
+                			    Field contextField = Application.class.getDeclaredField("context");
+                			    contextField.setAccessible(true);
+                			    JmeContext context = null; 
+                			    while (context == null) {
+                			        context = (JmeContext) contextField.get(app);
+                			        Thread.sleep(100);
+                			    }
+                			    while (!context.isCreated()) {
+                			        Thread.sleep(100);
+                			    }
+                			    while (context.isCreated()) {
+                			        Thread.sleep(100);
+                			    }
+                			} else {
+                                final Method mainMethod = clazz.getMethod("main", (new String[0]).getClass());
+                                mainMethod.invoke(app, new Object[]{new String[0]});
                 			}
+                			// wait for destroy
+                			System.gc();
                 		} catch (IllegalAccessException ex) {
                 			logger.log(Level.SEVERE, "Cannot access constructor: "+clazz.getName(), ex);
                 		} catch (IllegalArgumentException ex) {