From fbc980152e520c538382f11af07a9b950b2eb28d Mon Sep 17 00:00:00 2001 From: "mul..va" Date: Thu, 31 Mar 2011 08:40:53 +0000 Subject: [PATCH] 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 --- engine/src/test/jme3test/TestChooser.java | 42 ++++++++++++++--------- 1 file changed, 25 insertions(+), 17 deletions(-) diff --git a/engine/src/test/jme3test/TestChooser.java b/engine/src/test/jme3test/TestChooser.java index 5122188f7..c1ffe33f7 100644 --- a/engine/src/test/jme3test/TestChooser.java +++ b/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) {