001: package com.reeltwo.jumble.fast;
002:
003: import experiments.JumblerExperimentTest;
004: import java.io.BufferedReader;
005: import java.io.File;
006: import java.io.FileInputStream;
007: import java.io.FileOutputStream;
008: import java.io.InputStreamReader;
009: import java.io.ObjectInputStream;
010: import java.io.ObjectOutputStream;
011: import java.util.ArrayList;
012:
013: import com.reeltwo.jumble.util.JavaRunner;
014:
015: import junit.framework.Test;
016: import junit.framework.TestCase;
017: import junit.framework.TestResult;
018: import junit.framework.TestSuite;
019:
020: /**
021: * Tests the corresponding class.
022: *
023: * @author Tin Pavlinic
024: * @version $Revision: 500 $
025: */
026: public class FastJumblerTest extends TestCase {
027: private String mFileName;
028:
029: public final void setUp() throws Exception {
030: // Unique filename
031: mFileName = "tmpTest" + System.currentTimeMillis() + ".dat";
032:
033: TimingTestSuite suite = new TimingTestSuite(getClass()
034: .getClassLoader(),
035: new String[] { JumblerExperimentTest.class.getName() });
036: suite.run(new TestResult());
037: ObjectOutputStream out = new ObjectOutputStream(
038: new FileOutputStream(mFileName));
039: out.writeObject(suite.getOrder(true));
040: out.close();
041: }
042:
043: public final void tearDown() {
044: // System.err.println(mFileName);
045: assertTrue(new File(mFileName).delete());
046: }
047:
048: public void testMain() throws Exception {
049: JavaRunner runner = new JavaRunner(
050: "com.reeltwo.jumble.fast.FastJumbler", new String[] {
051: "experiments.JumblerExperiment", "-c",
052: System.getProperty("java.class.path"), "-s",
053: "0", "-r", "-k", "-i", mFileName, });
054: Process p = runner.start();
055:
056: BufferedReader outReader = new BufferedReader(
057: new InputStreamReader(p.getInputStream()));
058:
059: String line = outReader.readLine();
060: assertEquals("START", line);
061: line = outReader.readLine();
062: assertTrue("Unexpected output: " + line, line
063: .startsWith(FastJumbler.INIT_PREFIX));
064: line = outReader.readLine();
065: assertTrue("Unexpected output: " + line, line
066: .startsWith(FastJumbler.PASS_PREFIX));
067: outReader.close();
068: p.destroy();
069: }
070:
071: public void testMain2() throws Exception {
072: JavaRunner runner = new JavaRunner(
073: "com.reeltwo.jumble.fast.FastJumbler", new String[] {
074: "experiments.JumblerExperiment", "-c",
075: System.getProperty("java.class.path"), "-s",
076: "0", "-l", "1", "-r", "-k", "-i", mFileName, });
077: Process p = runner.start();
078:
079: BufferedReader reader = new BufferedReader(
080: new InputStreamReader(p.getInputStream()));
081:
082: String line;
083:
084: line = reader.readLine();
085: assertEquals("START", line);
086: line = reader.readLine();
087: assertEquals(
088: "INIT: experiments.JumblerExperiment:21: negated conditional",
089: line);
090: line = reader.readLine();
091: assertEquals(
092: "PASS: experiments.JumblerExperiment:add(II)I:0:testAdd",
093: line);
094: line = reader.readLine();
095: assertEquals(FastJumbler.SIGNAL_MAX_REACHED, line);
096: }
097:
098: public final void testSaveCache() throws Exception {
099: File f = new File(System.getProperty("user.home"),
100: ".com.reeltwo.jumble-cache.dat");
101: assertTrue(!f.exists() || f.delete());
102:
103: ArrayList tests = new ArrayList();
104: tests.add("experiments.JumblerExperimentTest");
105: FastRunner runner = new FastRunner();
106: runner.runJumble("experiments.JumblerExperiment", tests, null);
107:
108: assertTrue(f.exists());
109:
110: ObjectInputStream ois = new ObjectInputStream(
111: new FileInputStream(f));
112: FailedTestMap map = (FailedTestMap) ois.readObject();
113: ois.close();
114: assertTrue(f.delete());
115: // System.err.println(map);
116: assertEquals("testAdd", map.getLastFailure(
117: "experiments.JumblerExperiment", "add(II)I", 0));
118: assertEquals("testMultiply", map.getLastFailure(
119: "experiments.JumblerExperiment", "multiply(II)I", 1));
120: }
121:
122: public static Test suite() {
123: TestSuite suite = new TestSuite(FastJumblerTest.class);
124: return suite;
125: }
126:
127: public static void main(String[] args) {
128: junit.textui.TestRunner.run(suite());
129: }
130: }
|