package org.ruboto.test; import android.app.Activity; import android.app.ProgressDialog; import android.test.ActivityInstrumentationTestCase2; import android.util.Log; import java.io.BufferedReader; import java.io.FileReader; import java.io.InputStream; import java.io.InputStreamReader; import java.io.IOException; import junit.framework.AssertionFailedError; import junit.framework.Test; import junit.framework.TestResult; import junit.framework.TestSuite; import org.ruboto.JRubyAdapter; public class ActivityTest extends ActivityInstrumentationTestCase2 { private final Object setup; private final Object teardown; private final Object block; private final String filename; private final boolean onUiThread; public ActivityTest(Class activityClass, String filename, Object setup, Object teardown, String name, boolean onUiThread, Object block) { super(activityClass.getPackage().getName(), activityClass); this.filename = filename; this.setup = setup; this.teardown = teardown; setName(filename + "#" + name); this.onUiThread = onUiThread; this.block = block; Log.i(getClass().getName(), "Instance: " + getName()); } public void runTest() throws Exception { try { Log.i(getClass().getName(), "runTest: " + getName()); final Activity activity = getActivity(); Log.i(getClass().getName(), "Activity OK"); Runnable testRunnable = new Runnable() { public void run() { if (setup != null) { Log.i(getClass().getName(), "calling setup"); JRubyAdapter.setScriptFilename(filename); JRubyAdapter.runRubyMethod(setup, "call", activity); Log.i(getClass().getName(), "setup ok"); } JRubyAdapter.setScriptFilename(filename); JRubyAdapter.runRubyMethod(block, "call", activity); if (teardown != null) { Log.i(getClass().getName(), "calling teardown"); JRubyAdapter.runRubyMethod(teardown, "call", activity); Log.i(getClass().getName(), "teardown ok"); } } }; if (onUiThread) { runTestOnUiThread(testRunnable); } else { testRunnable.run(); } Log.i(getClass().getName(), "runTest ok"); } catch (Throwable t) { AssertionFailedError afe = new AssertionFailedError("Exception running test."); afe.initCause(t); throw afe; } } }