/* vim: set filetype=java shiftwidth=4 tabstop=4 autoindent cindent expandtab : */ import gnu.testlet.*; import com.sun.cldchi.jvm.JVM; import javax.microedition.lcdui.Display; import javax.microedition.lcdui.Form; import javax.microedition.midlet.*; import java.lang.Exception; import java.util.Vector; public class RunTestsMIDlet extends MIDlet { int classPass = 0, classFail = 0, pass = 0, fail = 0, knownFail = 0, unknownPass = 0; void runTest(String name) { name = name.replace('/', '.'); System.out.println("Running " + name); Form form = new Form(name); Display display = Display.getDisplay(this); j2mejsTestHarness harness = new j2mejsTestHarness(name, display); harness.setScreenAndWait(form); Class c = null; try { c = Class.forName(name); } catch (Exception e) { harness.fail("Can't load test: " + e); } Object obj = null; try { obj = c.newInstance(); } catch (Exception e) { harness.fail("Can't instantiate test: " + e); } Testlet t = (Testlet) obj; try { t.test(harness); } catch (Exception e) { harness.fail("Test threw an unexpected exception: " + e); } harness.report(); boolean classPassed = true; if (harness.passed() != t.getExpectedPass()) { classPassed = false; System.err.println(name + ": test expected " + t.getExpectedPass() + " passes, got " + harness.passed()); } if (harness.failed() != t.getExpectedFail()) { classPassed = false; System.err.println(name + ": test expected " + t.getExpectedFail() + " failures, got " + harness.failed()); } if (harness.knownFailed() != t.getExpectedKnownFail()) { classPassed = false; System.err.println(name + ": test expected " + t.getExpectedKnownFail() + " known failures, got " + harness.knownFailed()); } if (classPassed) { classPass++; } else { classFail++; System.err.println(name + ": class fail"); } pass += harness.passed(); fail += harness.failed(); knownFail += harness.knownFailed(); unknownPass += harness.unknownPassed(); } public void startApp() { String arg = getAppProperty("arg-0").replace('.', '/'); // Join Testlets and MIDletTestlets because we want to run them both // in RunTestsMIDlet. String[] testlets = new String[Testlets.list.length + MIDletTestlets.list.length]; for (int i = 0; i < Testlets.list.length; i++) { testlets[i] = Testlets.list[i]; } for (int i = 0; i < MIDletTestlets.list.length; i++) { testlets[i + Testlets.list.length] = MIDletTestlets.list[i]; } long then = JVM.monotonicTimeMillis(); if (arg != null && arg.length() > 0) { Vector v = new Vector(); for (int n = 0; n < testlets.length; ++n) { String name = testlets[n]; if (name != null) { v.addElement(testlets[n]); } } int i = 0; while (arg != null && arg.length() > 0) { if (v.contains(arg)) { runTest(arg); } else { System.err.println("can't find test " + arg); } arg = getAppProperty("arg-" + ++i).replace('.', '/'); } } else { for (int n = 0; n < testlets.length; ++n) { String name = testlets[n]; if (name != null) { runTest(name); } } } System.out.println("TOTALS: " + pass + " pass, " + fail + " fail, " + knownFail + " known fail, " + unknownPass + " unknown pass"); System.out.println("DONE: " + classPass + " class pass, " + classFail + " class fail, " + (JVM.monotonicTimeMillis() - then) + "ms"); } public void pauseApp() { } public void destroyApp(boolean unconditional) { } };