Index: junit/framework/Assert.java
===================================================================
RCS file: junit/framework/Assert.java
diff -N junit/framework/Assert.java
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ junit/framework/Assert.java 6 Oct 2006 10:37:44 -0000
@@ -0,0 +1,571 @@
+/* Assert.java -- Assertions to be used by tests
+ Copyright (C) 2006 Roman Kennke (kennke@aicas.com)
+This file is part of Mauve.
+
+Mauve is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2, or (at your option)
+any later version.
+
+Mauve is distributed in the hope that it will be useful, but
+WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with Mauve; see the file COPYING. If not, write to the
+Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: not-a-test
+
+package junit.framework;
+
+import gnu.testlet.TestHarness;
+
+/**
+ * Test assertions to be used by test cases.
+ */
+public class Assert
+{
+
+ /**
+ * The mauve test harness. The assertions are delegated to the harness
+ * if this is not null. Otherwise the normal JUnit behaviour is implemented,
+ * which is to throw an AssertionFailedError.
+ */
+ static TestHarness harness;
+
+ /**
+ * Creates a new Assert object.
+ */
+ protected Assert()
+ {
+ // Nothing to do here.
+ }
+
+ /**
+ * Checks if value
is true
.
+ *
+ * @param message the error message in the case this assertion fails
+ * @param value the value to check.
+ */
+ public static void assertTrue(String message, boolean value)
+ {
+ if (harness != null)
+ harness.check(value);
+ else if (! value)
+ fail(message);
+ }
+
+ /**
+ * Checks if value
is true
.
+ *
+ * @param value the value to check.
+ */
+ public static void assertTrue(boolean value)
+ {
+ assertTrue(null, value);
+ }
+
+ /**
+ * Checks if value
is true
.
+ *
+ * @param message the error message in the case this assertion fails
+ * @param value the value to check.
+ */
+ public static void assertFalse(String message, boolean value)
+ {
+ assertTrue(message, ! value);
+ }
+
+ /**
+ * Checks if value
is false
.
+ *
+ * @param value the value to check.
+ */
+ public static void assertFalse(boolean value)
+ {
+ assertFalse(null, value);
+ }
+
+ /**
+ * Unconditionally fails with the specified message.
+ *
+ * @param message
+ */
+ public static void fail(String message)
+ {
+ if (harness != null)
+ harness.check(false);
+ else
+ throw new AssertionFailedError(message);
+ }
+
+ /**
+ * Unconditionally fails without message.
+ */
+ public static void fail()
+ {
+ fail(null);
+ }
+
+ /**
+ * Checks if value
is equal to expexted
in the
+ * sense of Object.equals()
.
+ *
+ * @param message the error message in case of failure
+ * @param expected the expected value
+ * @param value the actual value to check
+ */
+ public static void assertEquals(String message, Object expected,
+ Object value)
+ {
+ if (harness != null)
+ harness.check(expected, value);
+ else
+ {
+ if ((expected != null || value != null)
+ && (expected == null || ! expected.equals(value)))
+ failNotEquals(message, expected, value);
+ }
+ }
+
+ /**
+ * Checks if value
is equal to expexted
in the
+ * sense of Object.equals()
.
+ *
+ * @param expected the expected value
+ * @param value the actual value to check
+ */
+ public static void assertEquals(Object expected, Object value)
+ {
+ assertEquals(null, expected, value);
+ }
+
+ /**
+ * Checks if value
is equal to expexted
in the
+ * sense of Object.equals()
.
+ *
+ * @param message the error message in case of failure
+ * @param expected the expected value
+ * @param value the actual value to check
+ */
+ public static void assertEquals(String message, String expected,
+ String value)
+ {
+ if (harness != null)
+ harness.check(expected, value);
+ else
+ {
+ if ((expected != null || value != null)
+ && (expected == null || ! expected.equals(value)))
+ throw new ComparisonFailure(message, expected, value);
+ }
+ }
+
+ /**
+ * Checks if value
is equal to expexted
in the
+ * sense of Object.equals()
.
+ *
+ * @param expected the expected value
+ * @param value the actual value to check
+ */
+ public static void assertEquals(String expected, String value)
+ {
+ assertEquals(null, expected, value);
+ }
+
+ /**
+ * Checks if value
is equal to expected
, taking
+ * a rounding delta delta
into account.
+ *
+ * @param message the error message in the case of failure
+ * @param expected the expected value
+ * @param value the actual value to check
+ * @param delta the rounding delta
+ */
+ public static void assertEquals(String message, double expected,
+ double value, double delta)
+ {
+ if (harness != null)
+ harness.check(expected, value, delta);
+ else
+ {
+ if (Double.isInfinite(expected))
+ {
+ if (value != expected)
+ failNotEquals(message, new Double(expected), new Double(value));
+ }
+ else if (! (Math.abs(expected - value) <= delta))
+ failNotEquals(message, new Double(expected), new Double(value));
+ }
+ }
+
+ /**
+ * Checks if value
is equal to expected
, taking
+ * a rounding delta delta
into account.
+ *
+ * @param expected the expected value
+ * @param value the actual value to check
+ * @param delta the rounding delta
+ */
+ public static void assertEquals(double expected, double value, double delta)
+ {
+ assertEquals(null, expected, value, delta);
+ }
+
+ /**
+ * Checks if value
is equal to expected
, taking
+ * a rounding delta delta
into account.
+ *
+ * @param message the error message in the case of failure
+ * @param expected the expected value
+ * @param value the actual value to check
+ * @param delta the rounding delta
+ */
+ public static void assertEquals(String message, float expected, float value,
+ float delta)
+ {
+ if (harness != null)
+ harness.check(expected, value, delta);
+ else
+ {
+ if (Float.isInfinite(expected))
+ {
+ if (value != expected)
+ failNotEquals(message, new Float(expected), new Float(value));
+ }
+ else if (! (Math.abs(expected - value) <= delta))
+ failNotEquals(message, new Float(expected), new Float(value));
+ }
+ }
+
+ /**
+ * Checks if value
is equal to expected
, taking
+ * a rounding delta delta
into account.
+ *
+ * @param expected the expected value
+ * @param value the actual value to check
+ * @param delta the rounding delta
+ */
+ public static void assertEquals(float expected, float value, float delta)
+ {
+ assertEquals(null, expected, value, delta);
+ }
+
+ /**
+ * Checks if value
is equal to expected
.
+ *
+ * @param message the error message in the case of failure
+ * @param expected the expected value
+ * @param value the actual value
+ */
+ public static void assertEquals(String message, long expected, long value)
+ {
+ if (harness != null)
+ harness.check(expected, value);
+ else
+ failNotEquals(message, new Long(expected), new Long(value));
+ }
+
+ /**
+ * Checks if value
is equal to expected
.
+ *
+ * @param expected the expected value
+ * @param value the actual value
+ */
+ public static void assertEquals(long expected, long value)
+ {
+ assertEquals(null, expected, value);
+ }
+
+ /**
+ * Checks if value
is equal to expected
.
+ *
+ * @param message the error message in the case of failure
+ * @param expected the expected value
+ * @param value the actual value
+ */
+ public static void assertEquals(String message, boolean expected,
+ boolean value)
+ {
+ if (harness != null)
+ harness.check(expected, value);
+ else
+ failNotEquals(message, new Boolean(expected), new Boolean(value));
+ }
+
+ /**
+ * Checks if value
is equal to expected
.
+ *
+ * @param expected the expected value
+ * @param value the actual value
+ */
+ public static void assertEquals(boolean expected, boolean value)
+ {
+ assertEquals(null, expected, value);
+ }
+
+ /**
+ * Checks if value
is equal to expected
.
+ *
+ * @param message the error message in the case of failure
+ * @param expected the expected value
+ * @param value the actual value
+ */
+ public static void assertEquals(String message, byte expected, byte value)
+ {
+ if (harness != null)
+ harness.check(expected, value);
+ else
+ failNotEquals(message, new Byte(expected), new Byte(value));
+ }
+
+ /**
+ * Checks if value
is equal to expected
.
+ *
+ * @param expected the expected value
+ * @param value the actual value
+ */
+ public static void assertEquals(byte expected, byte value)
+ {
+ assertEquals(null, expected, value);
+ }
+
+ /**
+ * Checks if value
is equal to expected
.
+ *
+ * @param message the error message in the case of failure
+ * @param expected the expected value
+ * @param value the actual value
+ */
+ public static void assertEquals(String message, char expected, char value)
+ {
+ if (harness != null)
+ harness.check(expected, value);
+ else
+ failNotEquals(message, new Character(expected), new Character(value));
+ }
+
+ /**
+ * Checks if value
is equal to expected
.
+ *
+ * @param expected the expected value
+ * @param value the actual value
+ */
+ public static void assertEquals(char expected, char value)
+ {
+ assertEquals(null, expected, value);
+ }
+
+ /**
+ * Checks if value
is equal to expected
.
+ *
+ * @param message the error message in the case of failure
+ * @param expected the expected value
+ * @param value the actual value
+ */
+ public static void assertEquals(String message, short expected, short value)
+ {
+ if (harness != null)
+ harness.check(expected, value);
+ else
+ failNotEquals(message, new Short(expected), new Short(value));
+ }
+
+ /**
+ * Checks if value
is equal to expected
.
+ *
+ * @param expected the expected value
+ * @param value the actual value
+ */
+ public static void assertEquals(short expected, short value)
+ {
+ assertEquals(null, expected, value);
+ }
+
+ /**
+ * Checks if value
is equal to expected
.
+ *
+ * @param message the error message in the case of failure
+ * @param expected the expected value
+ * @param value the actual value
+ */
+ public static void assertEquals(String message, int expected, int value)
+ {
+ if (harness != null)
+ harness.check(expected, value);
+ else
+ failNotEquals(message, new Integer(expected), new Integer(value));
+ }
+
+ /**
+ * Checks if value
is equal to expected
.
+ *
+ * @param expected the expected value
+ * @param value the actual value
+ */
+ public static void assertEquals(int expected, int value)
+ {
+ assertEquals(null, expected, value);
+ }
+
+ /**
+ * Checks that the value
is not null.
+ *
+ * @param message the error message in the case of failure
+ * @param value the value to check
+ */
+ public static void assertNotNull(String message, Object value)
+ {
+ assertTrue(message, value != null);
+ }
+
+ /**
+ * Checks that the value
is not null.
+ *
+ * @param value the value to check
+ */
+ public static void assertNotNull(Object value)
+ {
+ assertNotNull(null, value);
+ }
+
+ /**
+ * Checks that the value
is null.
+ *
+ * @param message the error message in the case of failure
+ * @param value the value to check
+ */
+ public static void assertNull(String message, Object value)
+ {
+ assertTrue(message, value == null);
+ }
+
+ /**
+ * Checks that the value
is null.
+ *
+ * @param value the value to check
+ */
+ public static void assertNull(Object value)
+ {
+ assertNull(null, value);
+ }
+
+ /**
+ * Checks that the value
is the same object instance as
+ * expected
.
+ *
+ * @param message the error message in case of failure
+ * @param expected the expected value
+ * @param value the actual value to check
+ */
+ public static void assertSame(String message, Object expected, Object value)
+ {
+ if (harness != null)
+ harness.check(expected == value);
+ else if (value != expected)
+ {
+ StringBuffer str = new StringBuffer();
+ if (message != null)
+ {
+ str.append(message);
+ str.append(' ');
+ str.append("expected to be same");
+ }
+ fail(format(str, expected, value));
+ }
+ }
+
+ /**
+ * Checks that the value
is the same object instance as
+ * expected
.
+ *
+ * @param expected the expected value
+ * @param value the actual value to check
+ */
+ public static void assertSame(Object expected, Object value)
+ {
+ assertSame(null, expected, value);
+ }
+
+ /**
+ * Checks that the value
is not the same object instance as
+ * expected
.
+ *
+ * @param message the error message in case of failure
+ * @param expected the expected value
+ * @param value the actual value to check
+ */
+ public static void assertNotSame(String message, Object expected,
+ Object value)
+ {
+ if (harness != null)
+ harness.check(expected != value);
+ else if (value == expected)
+ {
+ StringBuffer str = new StringBuffer();
+ if (message != null)
+ {
+ str.append(message);
+ str.append(' ');
+ str.append("expected to be not the same");
+ }
+ fail(format(str, expected, value));
+ }
+ }
+
+ /**
+ * Checks that the value
is not the same object instance as
+ * expected
.
+ *
+ * @param expected the expected value
+ * @param value the actual value to check
+ */
+ public static void assertNotSame(Object expected, Object value)
+ {
+ assertNotSame(null, expected, value);
+ }
+
+ /**
+ * Called when a test failed because two objects are not equal.
+ *
+ * @param message the error message
+ * @param expected the expected value
+ * @param value the actual value
+ */
+ private static void failNotEquals(String message, Object expected,
+ Object value)
+ {
+ StringBuffer str = new StringBuffer();
+ if (message != null)
+ {
+ str.append(message);
+ str.append(' ');
+ }
+ fail(format(str, expected, value));
+ }
+
+ /**
+ * Formats the error message.
+ *
+ * @param str the string buffer to append to, with the start of the error
+ * message
+ * @param expected the expected value
+ * @param value the actual value
+ *
+ * @return the formatted message
+ */
+ private static String format(StringBuffer str, Object expected,
+ Object value)
+ {
+ str.append(' ');
+ str.append(" expected value: ");
+ str.append(expected);
+ str.append(" actual value: " + value);
+ return str.toString();
+ }
+}
Index: junit/framework/AssertionFailedError.java
===================================================================
RCS file: junit/framework/AssertionFailedError.java
diff -N junit/framework/AssertionFailedError.java
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ junit/framework/AssertionFailedError.java 6 Oct 2006 10:37:44 -0000
@@ -0,0 +1,50 @@
+/* AssertionFailedError.java -- Thrown when a test failed
+ Copyright (C) 2006 Roman Kennke (kennke@aicas.com)
+This file is part of Mauve.
+
+Mauve is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2, or (at your option)
+any later version.
+
+Mauve is distributed in the hope that it will be useful, but
+WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with Mauve; see the file COPYING. If not, write to the
+Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: not-a-test
+
+package junit.framework;
+
+/**
+ * Indicates that a test assertion failed.
+ */
+public class AssertionFailedError
+ extends Error
+{
+
+ /**
+ * Creates an AssertionFailedError without message.
+ */
+ public AssertionFailedError()
+ {
+ // Nothing to do here.
+ }
+
+ /**
+ * Creates an AssertionFailedError with the specified error message.
+ *
+ * @param message the error message.
+ */
+ public AssertionFailedError(String message)
+ {
+ super(message);
+ }
+}
Index: junit/framework/ComparisonFailure.java
===================================================================
RCS file: junit/framework/ComparisonFailure.java
diff -N junit/framework/ComparisonFailure.java
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ junit/framework/ComparisonFailure.java 6 Oct 2006 10:37:44 -0000
@@ -0,0 +1,47 @@
+/* ComparisonFailure.java -- Thrown when a string comparison failed
+ Copyright (C) 2006 Roman Kennke (kennke@aicas.com)
+This file is part of Mauve.
+
+Mauve is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2, or (at your option)
+any later version.
+
+Mauve is distributed in the hope that it will be useful, but
+WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with Mauve; see the file COPYING. If not, write to the
+Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: not-a-test
+
+package junit.framework;
+
+/**
+ * Thrown when a string comparison failed.
+ *
+ * @see Assert#assertEquals(String, String, String)
+ * @see Assert#assertEquals(String, String)
+ */
+public class ComparisonFailure extends AssertionFailedError
+{
+
+ /**
+ * Creates a new ComparisonFailure with an error message.
+ *
+ * @param message the error message
+ * @param expected the expected string
+ * @param the actual string value
+ */
+ public ComparisonFailure(String message, String expected, String value)
+ {
+ super(message);
+ }
+
+}
Index: junit/framework/Protectable.java
===================================================================
RCS file: junit/framework/Protectable.java
diff -N junit/framework/Protectable.java
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ junit/framework/Protectable.java 6 Oct 2006 10:37:44 -0000
@@ -0,0 +1,38 @@
+/* Protectable.java -- The Protectable interface from the JUnit API
+ Copyright (C) 2006 Roman Kennke (kennke@aicas.com)
+This file is part of Mauve.
+
+Mauve is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2, or (at your option)
+any later version.
+
+Mauve is distributed in the hope that it will be useful, but
+WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with Mauve; see the file COPYING. If not, write to the
+Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: not-a-test
+
+package junit.framework;
+
+/**
+ * Runs tests inside a protected environmant. The code to be run is put
+ * in the protect() method.
+ */
+public interface Protectable
+{
+
+ /**
+ * Runs tests inside a protected environmant.
+ */
+ void protect()
+ throws Throwable;
+}
Index: junit/framework/Test.java
===================================================================
RCS file: junit/framework/Test.java
diff -N junit/framework/Test.java
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ junit/framework/Test.java 6 Oct 2006 10:37:44 -0000
@@ -0,0 +1,45 @@
+/* Test.java -- The basic interface for a JUnit test
+ Copyright (C) 2006 Roman Kennke (kennke@aicas.com)
+This file is part of Mauve.
+
+Mauve is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2, or (at your option)
+any later version.
+
+Mauve is distributed in the hope that it will be useful, but
+WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with Mauve; see the file COPYING. If not, write to the
+Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: not-a-test
+
+package junit.framework;
+
+/**
+ * The basic interface for a JUnit test.
+ */
+public interface Test
+{
+
+ /**
+ * Returns the number of test cases that will be run by this test.
+ *
+ * @return the number of test cases that will be run by this test
+ */
+ int countTestCases();
+
+ /**
+ * Runs the test and store the results in result
+ *
+ * @param result the test result object for storing the results into
+ */
+ void run(TestResult result);
+}
Index: junit/framework/TestCase.java
===================================================================
RCS file: junit/framework/TestCase.java
diff -N junit/framework/TestCase.java
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ junit/framework/TestCase.java 6 Oct 2006 10:37:44 -0000
@@ -0,0 +1,313 @@
+/* TestCase.java -- A JUnit test case
+ Copyright (C) 2006 Roman Kennke (kennke@aicas.com)
+This file is part of Mauve.
+
+Mauve is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2, or (at your option)
+any later version.
+
+Mauve is distributed in the hope that it will be useful, but
+WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with Mauve; see the file COPYING. If not, write to the
+Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: not-a-test
+
+package junit.framework;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.reflect.InvocationTargetException;
+import java.lang.reflect.Method;
+import java.lang.reflect.Modifier;
+
+/**
+ * A JUnit test case.
+ */
+public abstract class TestCase
+ extends Assert
+ implements Test, Testlet
+
+{
+
+ /**
+ * The name of the test case.
+ */
+ private String fName;
+
+ /**
+ * Creates a new TestCase.
+ */
+ public TestCase()
+ {
+ fName = null;
+ }
+
+ /**
+ * Creates a test case with a name.
+ *
+ * @param name the name of the test case
+ */
+ public TestCase(String name)
+ {
+ fName = name;
+ }
+
+ /**
+ * Returns the number of test cases executed by this test.
+ *
+ * @return the number of test cases executed by this test
+ */
+ public int countTestCases()
+ {
+ return 1;
+ }
+
+ /**
+ * Creates a default TestResult object.
+ *
+ * @return a default TestResult object
+ */
+ protected TestResult createResult()
+ {
+ return new TestResult();
+ }
+
+ /**
+ * Creates a TestResult and runs a test by calling
+ * {@link #run(TestResult)}.
+ *
+ * @return the test results after running the test
+ */
+ public TestResult run()
+ {
+ TestResult result = createResult();
+ run(result);
+ return result;
+ }
+
+ /**
+ * Runs the test and collects the result in the specified TestResult
+ * object.
+ *
+ * @param result the TestResult object to collect the results in
+ */
+ public void run(TestResult result)
+ {
+ result.run(this);
+ }
+
+ /**
+ * Runs the bare test sequence. This calls {@link #setUp()}, executes
+ * the test by calling {@link #runTest}, and finally finishes with
+ * {@link #tearDown()}.
+ *
+ * @throws Throwable if a failure or error occured
+ */
+ public void runBare()
+ throws Throwable
+ {
+ Throwable t = null;
+ setUp();
+ try
+ {
+ runTest();
+ }
+ catch (Throwable ex)
+ {
+ t = ex;
+ }
+ finally
+ {
+ try
+ {
+ tearDown();
+ }
+ catch (Throwable ex2)
+ {
+ if (t == null)
+ t = ex2;
+ }
+ }
+ if (t != null)
+ throw t;
+ }
+
+ /**
+ * Actually runs the test. The default implementation tries to find
+ * a method with the name specified in the constructor of this class.
+ * If such a method is found, it is invoked.
+ *
+ * @throws Throwable for test errors or failures
+ */
+ protected void runTest()
+ throws Throwable
+ {
+ Method method = null;
+ try
+ {
+ method = getClass().getMethod(fName, (Class[]) null);
+ }
+ catch (NoSuchMethodException ex)
+ {
+ fail("Method " + fName + " not found");
+ }
+ if (! Modifier.isPublic(method.getModifiers()))
+ fail("Method " + fName + " must be public");
+ try
+ {
+ method.invoke(this, new Object[0]);
+ }
+ catch (InvocationTargetException ex)
+ {
+ ex.fillInStackTrace();
+ throw ex.getTargetException();
+ }
+ catch (IllegalAccessException ex)
+ {
+ ex.fillInStackTrace();
+ throw ex;
+ }
+ }
+
+ /**
+ * Prepares the test. This is called before {@link #runTest()}.
+ *
+ * @throws Exception if anything goes wrong
+ */
+ protected void setUp()
+ throws Exception
+ {
+ // This is a hook with nothing to do itself.
+ }
+
+ /**
+ * Finishes the test. This is called after {@link #runTest()}.
+ *
+ * @throws Exception if anything goes wrong
+ */
+ protected void tearDown()
+ throws Exception
+ {
+ // This is a hook with nothing to do itself.
+ }
+
+ /**
+ * Returns the name of the test case.
+ *
+ * @return the name of the test case
+ */
+ public String getName()
+ {
+ return fName;
+ }
+
+ /**
+ * Sets the name of the test case.
+ *
+ * @param name the name to set
+ */
+ public void setName(String name)
+ {
+ fName = name;
+ }
+
+ /**
+ * Returns a string representation of this test case.
+ *
+ * @return a string representation of this TestCase
+ */
+ public String toString()
+ {
+ StringBuffer str = new StringBuffer();
+ str.append(getName());
+ str.append('(');
+ str.append(getClass().getName());
+ str.append(')');
+ return str.toString();
+ }
+
+ /**
+ * Implementation of Mauve's Testlet interface. This makes JUnit TestCases
+ * automatically executable by the Mauve test harness.
+ */
+ public void test(TestHarness harness)
+ {
+ // Fetch the actual JUnit testsuite.
+ Test test = getTest();
+ // This is normally an instance of TestSuite.
+ if (test instanceof TestSuite)
+ {
+ TestSuite suite = (TestSuite) test;
+ suite.test(harness);
+ }
+ }
+
+ /**
+ * Performs a single test.
+ *
+ * @param harness the test harness to use
+ */
+ void testSingle(TestHarness harness)
+ {
+ TestCase.harness = harness;
+ try
+ {
+ runBare();
+ }
+ catch (Throwable ex)
+ {
+ harness.fail(ex.getMessage());
+ harness.debug(ex);
+ }
+ TestCase.harness = null;
+ }
+
+ /**
+ * Fetches the test suite to be run. This tries to call a static
+ * suite() method on this class, and, if that fails, create a new TestSuite
+ * with this class as parameter, which will collect all test*() methods.
+ *
+ * @return the testsuite for this class or null, if no test suite could be
+ * created
+ */
+ private Test getTest()
+ {
+ Class clazz = getClass();
+ Method suiteMethod = null;
+ Test test = null;
+ try
+ {
+ clazz.getMethod("suite", new Class[0]);
+ }
+ catch (Exception ex)
+ {
+ test = new TestSuite(clazz);
+ }
+ if (test == null && suiteMethod != null) // suite() method found.
+ {
+ try
+ {
+ test = (Test) suiteMethod.invoke(null, (Object[]) new Class[0]);
+ }
+ catch (InvocationTargetException ex)
+ {
+ test = null;
+ }
+ catch (IllegalAccessException ex)
+ {
+ test = null;
+ }
+ }
+ return test;
+ }
+}
Index: junit/framework/TestFailure.java
===================================================================
RCS file: junit/framework/TestFailure.java
diff -N junit/framework/TestFailure.java
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ junit/framework/TestFailure.java 6 Oct 2006 10:37:44 -0000
@@ -0,0 +1,116 @@
+/* TestFailure.java -- Wraps a test failure
+ Copyright (C) 2006 Roman Kennke (kennke@aicas.com)
+This file is part of Mauve.
+
+Mauve is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2, or (at your option)
+any later version.
+
+Mauve is distributed in the hope that it will be useful, but
+WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with Mauve; see the file COPYING. If not, write to the
+Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: not-a-test
+
+package junit.framework;
+
+import java.io.PrintWriter;
+import java.io.StringWriter;
+
+/**
+ * Wraps a failed test together with the failure.
+ */
+public class TestFailure
+{
+
+ /**
+ * The test that failed.
+ */
+ protected Test fFailedTest;
+
+ /**
+ * The exception that has been thrown.
+ */
+ protected Throwable fThrownException;
+
+ /**
+ * Creates a new TestFailure.
+ *
+ * @param failedTest the failed test
+ * @param thrownException the thrown exception
+ */
+ public TestFailure(Test failedTest, Throwable thrownException)
+ {
+ fFailedTest = failedTest;
+ fThrownException = thrownException;
+ }
+
+ /**
+ * Returns the message of the thrown exception.
+ *
+ * @return the message of the thrown exception
+ */
+ public String exceptionMessage()
+ {
+ return fThrownException.getMessage();
+ }
+
+ /**
+ * Returns the failed test.
+ *
+ * @return the failed test
+ */
+ public Test failedTest()
+ {
+ return fFailedTest;
+ }
+
+ /**
+ * Returns true
, if this is a failure (that is, the exception is
+ * an instance of {@link AssertionFailedError}, false
+ * otherwise (in case of error for instance).
+ *
+ * @return true
, if this is a failure, false
+ * otherwise
+ */
+ public boolean isFailure()
+ {
+ return fThrownException instanceof AssertionFailedError;
+ }
+
+ /**
+ * Returns a string representation of this TestFailure object.
+ *
+ * @return a string representation of this TestFailure object
+ */
+ public String toString()
+ {
+ StringBuffer str = new StringBuffer();
+ str.append(fFailedTest);
+ str.append(": ");
+ str.append(fThrownException.getMessage());
+ return str.toString();
+ }
+
+ /**
+ * Returns the stacktrace of the exception as string.
+ *
+ * @return the stacktrace of the exception as string
+ */
+ public String trace()
+ {
+ StringWriter w = new StringWriter();
+ PrintWriter p = new PrintWriter(w);
+ fThrownException.printStackTrace(p);
+ return w.getBuffer().toString();
+ }
+}
Index: junit/framework/TestListener.java
===================================================================
RCS file: junit/framework/TestListener.java
diff -N junit/framework/TestListener.java
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ junit/framework/TestListener.java 6 Oct 2006 10:37:44 -0000
@@ -0,0 +1,60 @@
+/* TestListener.java -- Listens for test progress
+ Copyright (C) 2006 Roman Kennke (kennke@aicas.com)
+This file is part of Mauve.
+
+Mauve is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2, or (at your option)
+any later version.
+
+Mauve is distributed in the hope that it will be useful, but
+WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with Mauve; see the file COPYING. If not, write to the
+Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: not-a-test
+
+package junit.framework;
+
+/**
+ * Listens for progress on a test.
+ */
+public interface TestListener
+{
+ /**
+ * Notifies that a test error has occured.
+ *
+ * @param test the test
+ * @param t the error that was thrown
+ */
+ void addError(Test test, Throwable t);
+
+ /**
+ * Notifies that a test failure has occured.
+ *
+ * @param test the test
+ * @param t the failure
+ */
+ void addFailure(Test test, AssertionFailedError t);
+
+ /**
+ * Notifies that a new test has started.
+ *
+ * @param test the test
+ */
+ void startTest(Test test);
+
+ /**
+ * Notifies that a new test has been finished.
+ *
+ * @param test the test
+ */
+ void endTest(Test test);
+}
Index: junit/framework/TestResult.java
===================================================================
RCS file: junit/framework/TestResult.java
diff -N junit/framework/TestResult.java
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ junit/framework/TestResult.java 6 Oct 2006 10:37:44 -0000
@@ -0,0 +1,300 @@
+/* TestResult.java -- Collects test results
+ Copyright (C) 2006 Roman Kennke (kennke@aicas.com)
+This file is part of Mauve.
+
+Mauve is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2, or (at your option)
+any later version.
+
+Mauve is distributed in the hope that it will be useful, but
+WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with Mauve; see the file COPYING. If not, write to the
+Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: not-a-test
+
+package junit.framework;
+
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.Enumeration;
+import java.util.Iterator;
+import java.util.List;
+
+/**
+ * Collects the results of a test run.
+ */
+public class TestResult
+{
+
+ /**
+ * The errors from the test run.
+ */
+ protected List fErrors;
+
+ /**
+ * The failures from the test run.
+ */
+ protected List fFailures;
+
+ /**
+ * The test listeners.
+ */
+ protected List fListeners;
+
+ /**
+ * The number of tests that have been run.
+ */
+ protected int fRunTests;
+
+ /**
+ * Indicates if the test run should stop.
+ */
+ private boolean fStop;
+
+ /**
+ * Creates a new TestResult object.
+ */
+ public TestResult()
+ {
+ fErrors = new ArrayList();
+ fFailures = new ArrayList();
+ fListeners = new ArrayList();
+ fRunTests = 0;
+ fStop = false;
+ }
+
+ /**
+ * Runs the specified TestCase.
+ *
+ * @param test the test case to run
+ */
+ protected void run(final TestCase test)
+ {
+ startTest(test);
+ Protectable protectable = new Protectable()
+ {
+ public void protect()
+ throws Throwable
+ {
+ test.runBare();
+ }
+ };
+ runProtected(test, protectable);
+ endTest(test);
+ }
+
+ /**
+ * Runs a test in a protected environment.
+ *
+ * @param test the test to run
+ * @param p the protectable
+ */
+ public void runProtected(final TestCase test, Protectable p)
+ {
+ try
+ {
+ p.protect();
+ }
+ catch (AssertionFailedError e)
+ {
+ addFailure(test, e);
+ }
+ catch (ThreadDeath e)
+ {
+ throw e;
+ }
+ catch (Throwable e)
+ {
+ addError(test, e);
+ }
+ }
+
+ /**
+ * Starts the specified test. This counts the tests and informs
+ * interested listeners.
+ *
+ * @param test the test to start
+ */
+ public void startTest(Test test)
+ {
+ final int count = test.countTestCases();
+ synchronized (this)
+ {
+ fRunTests += count;
+ }
+ for (Iterator i = cloneListeners().iterator(); i.hasNext();)
+ {
+ TestListener l = (TestListener) i.next();
+ l.startTest(test);
+ }
+ }
+
+ /**
+ * Ends the specified test. This informs interested listeners.
+ *
+ * @param test the test to end
+ */
+ public void endTest(Test test)
+ {
+ for (Iterator i = cloneListeners().iterator(); i.hasNext();)
+ {
+ TestListener l = (TestListener) i.next();
+ l.endTest(test);
+ }
+ }
+
+ /**
+ * Adds a failure to the test result.
+ *
+ * @param test the failed test
+ * @param failure the test failure
+ */
+ public synchronized void addFailure(Test test, AssertionFailedError failure)
+ {
+ fFailures.add(new TestFailure(test, failure));
+ for (Iterator i = cloneListeners().iterator(); i.hasNext();)
+ {
+ TestListener l = (TestListener) i.next();
+ l.addFailure(test, failure);
+ }
+ }
+
+ /**
+ * Adds an error to the test result.
+ *
+ * @param test the err'ed test
+ * @param failure the test error
+ */
+ public synchronized void addError(Test test, Throwable failure)
+ {
+ fErrors.add(new TestFailure(test, failure));
+ for (Iterator i = cloneListeners().iterator(); i.hasNext();)
+ {
+ TestListener l = (TestListener) i.next();
+ l.addError(test, failure);
+ }
+ }
+
+ /**
+ * Adds a test listener.
+ *
+ * @param l the listener to add
+ */
+ public synchronized void addListener(TestListener l)
+ {
+ fListeners.add(l);
+ }
+
+ /**
+ * Removes a test listener.
+ *
+ * @param l the listener to be removed
+ */
+ public synchronized void removeListener(TestListener l)
+ {
+ fListeners.remove(l);
+ }
+
+ /**
+ * Returns the number of errors.
+ *
+ * @return the number of errors
+ */
+ public synchronized int errorCount()
+ {
+ return fErrors.size();
+ }
+
+ /**
+ * Returns the errors in this test result.
+ *
+ * @return the errors in this test result
+ */
+ public synchronized Enumeration errors()
+ {
+ return Collections.enumeration(fErrors);
+ }
+
+ /**
+ * Returns the number of failures.
+ *
+ * @return the number of failures
+ */
+ public synchronized int failureCount()
+ {
+ return fFailures.size();
+ }
+
+ /**
+ * Returns the failures in this test result.
+ *
+ * @return the failures in this test result
+ */
+ public synchronized Enumeration failures()
+ {
+ return Collections.enumeration(fFailures);
+ }
+
+ /**
+ * Returns the number of tests that have been run.
+ *
+ * @return the number of tests that have been run
+ */
+ public synchronized int runCount()
+ {
+ return fRunTests;
+ }
+
+ /**
+ * Returns true
when the test should stop, false
+ * otherwise.
+ *
+ * @return true
when the test should stop, false
+ * otherwise
+ */
+ public synchronized boolean shouldStop()
+ {
+ return fStop;
+ }
+
+ /**
+ * Stops the test.
+ */
+ public synchronized void stop()
+ {
+ fStop = true;
+ }
+
+ /**
+ * Returns true
when the test had no errors and no failures,
+ * false
otherwise.
+ *
+ * @return true
when the test had no errors and no failures,
+ * false
otherwise
+ */
+ public synchronized boolean wasSuccessful()
+ {
+ return failureCount() == 0 && errorCount() == 0;
+ }
+
+ /**
+ * Returns a cloned listener list.
+ *
+ * @return a cloned listener list
+ */
+ private synchronized List cloneListeners()
+ {
+ List copy = new ArrayList();
+ copy.addAll(fListeners);
+ return copy;
+ }
+}
Index: junit/framework/TestSuite.java
===================================================================
RCS file: junit/framework/TestSuite.java
diff -N junit/framework/TestSuite.java
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ junit/framework/TestSuite.java 6 Oct 2006 10:37:44 -0000
@@ -0,0 +1,338 @@
+/* TestSuite.java -- JUnit test suite
+ Copyright (C) 2006 Roman Kennke (kennke@aicas.com)
+This file is part of Mauve.
+
+Mauve is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2, or (at your option)
+any later version.
+
+Mauve is distributed in the hope that it will be useful, but
+WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with Mauve; see the file COPYING. If not, write to the
+Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: not-a-test
+
+package junit.framework;
+
+import java.lang.reflect.Constructor;
+import java.lang.reflect.InvocationTargetException;
+import java.lang.reflect.Method;
+import java.lang.reflect.Modifier;
+import java.util.ArrayList;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Vector;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+
+/**
+ * A collection of JUnit tests.
+ */
+public class TestSuite
+ implements Test, Testlet
+{
+
+ /**
+ * The name of the test.
+ */
+ private String fName;
+
+ /**
+ * The tests in this test suite.
+ */
+ private Vector fTests;
+
+ /**
+ * Creates a new test suite.
+ */
+ public TestSuite()
+ {
+ fTests = new Vector();
+ }
+
+ /**
+ * Creates a new test suite that loads its tests from the specified class.
+ *
+ * @param theClass the class to load the tests from
+ */
+ public TestSuite(Class theClass)
+ {
+ this();
+ fName = theClass.getName();
+ Class clazz = theClass;
+ List names = new ArrayList();
+ while (Test.class.isAssignableFrom(clazz))
+ {
+ Method[] methods = clazz.getDeclaredMethods();
+ for (int i = 0; i < methods.length; i++)
+ {
+ addTestMethod(methods[i], names, theClass);
+ }
+ clazz = clazz.getSuperclass();
+ }
+ }
+
+ /**
+ * Creates a new TestSuite with the specified name.
+ *
+ * @param name the name of the test suite
+ */
+ public TestSuite(String name)
+ {
+ setName(name);
+ }
+
+ /**
+ * Creates a new TestSuite with the specified name that loads the tests from
+ * the specified class.
+ *
+ * @param theClass the class to load the tests from
+ * @param name the name of the test suite
+ */
+ public TestSuite(Class theClass, String name)
+ {
+ this(theClass);
+ setName(name);
+ }
+
+ /**
+ * Adds the specified method to the test suite if appropriate.
+ *
+ * @param method the method to check
+ * @param names the list of names of already added methods
+ * @param theClass the test class
+ */
+ private void addTestMethod(Method method, List names, Class theClass)
+ {
+ String name = method.getName();
+ if (! names.contains(name))
+ {
+ if (isPublicTestMethod(method))
+ {
+ names.add(name);
+ addTest(createTest(theClass, name));
+ }
+ }
+ }
+
+ /**
+ * Checks if the specified method is a test method and is public.
+ *
+ * @param method the method to check
+ *
+ * @return true
if the method is a public test method,
+ * false
otherwise
+ */
+ private boolean isPublicTestMethod(Method method)
+ {
+ return isTestMethod(method) && Modifier.isPublic(method.getModifiers());
+ }
+
+ /**
+ * Checks if the specified method is a test method.
+ *
+ * @param method the method to check
+ *
+ * @return true
if the method is a test method,
+ * false
otherwise
+ */
+ private boolean isTestMethod(Method method)
+ {
+ String name = method.getName();
+ Class[] params = method.getParameterTypes();
+ Class ret = method.getReturnType();
+ return params.length == 0 && name.startsWith("test")
+ && ret.equals(Void.TYPE);
+ }
+
+ /**
+ * Creates a test for the specified test class and with the specified
+ * name.
+ *
+ * @param theClass the test class
+ * @param name the test name
+ *
+ * @return the test instance
+ */
+ public static Test createTest(Class theClass, String name)
+ {
+ Constructor constructor = null;
+ Test test = null;
+ try
+ {
+ constructor = getTestConstructor(theClass);
+ }
+ catch (NoSuchMethodException ex)
+ {
+ test = null;
+ }
+ if (constructor != null)
+ {
+ Object o = null;
+ try
+ {
+ if (constructor.getParameterTypes().length == 0)
+ {
+ o = constructor.newInstance(new Object[0]);
+ if (o instanceof TestCase)
+ ((TestCase) o).setName(name);
+ }
+ else
+ {
+ o = constructor.newInstance(new Object[]{ name });
+ }
+ }
+ catch (InstantiationException ex)
+ {
+ test = null;
+ }
+ catch (InvocationTargetException ex)
+ {
+ test = null;
+ }
+ catch (IllegalAccessException ex)
+ {
+ test = null;
+ }
+ test = (Test) o;
+ }
+ return test;
+ }
+
+ /**
+ * Returns the constructor for the specified test class.
+ *
+ * @param theClass the test class
+ *
+ * @return the constructor for the specified test class
+ *
+ * @throws NoSuchMethodException if no suitable constructor exists
+ */
+ public static Constructor getTestConstructor(Class theClass)
+ throws NoSuchMethodException
+ {
+ Class[] args = { String.class };
+ try
+ {
+ return theClass.getConstructor(args);
+ }
+ catch (NoSuchMethodException ex)
+ {
+ // Search for a no-arg constructor below.
+ }
+ return theClass.getConstructor(new Class[0]);
+ }
+
+ /**
+ * Returns the number of tests in this test suite.
+ *
+ * @return the number of tests in this test suite
+ */
+ public int countTestCases()
+ {
+ int count = 0;
+ for (Iterator i = fTests.iterator(); i.hasNext();)
+ {
+ Test test = (Test) i.next();
+ count += test.countTestCases();
+ }
+ return count;
+ }
+
+ /**
+ * Runs the test cases from this test suite.
+ *
+ * @param result the test results
+ */
+ public void run(TestResult result)
+ {
+ for (Iterator i = fTests.iterator(); i.hasNext();)
+ {
+ if (! result.shouldStop())
+ {
+ Test test = (Test) i.next();
+ runTest(test, result);
+ }
+ }
+ }
+
+ /**
+ * Runs a single test.
+ *
+ * @param test the test to run
+ * @param result the test results
+ */
+ public void runTest(Test test, TestResult result)
+ {
+ test.run(result);
+ }
+
+ /**
+ * Adds a single test to the test suite.
+ *
+ * @param test the test to add
+ */
+ public void addTest(Test test)
+ {
+ fTests.add(test);
+ }
+
+ /**
+ * Adds tests from the specified class to the test suite.
+ *
+ * @param testClass the class from which to load tests to add
+ */
+ public void addTestSuite(Class testClass)
+ {
+ fTests.add(new TestSuite(testClass));
+ }
+
+ /**
+ * Sets the name for this test.
+ *
+ * @param name the name to set
+ */
+ public void setName(String name)
+ {
+ fName = name;
+ }
+
+ /**
+ * Returns the name of this test.
+ *
+ * @return the name of this test
+ */
+ public String getName()
+ {
+ return fName;
+ }
+
+ /**
+ * This implements the Mauve Testlet interface. This implementation
+ * runs all tests in this testsuite that are runnable by Mauve.
+ *
+ * @param harness the Mauve test harness
+ */
+ public void test(TestHarness harness)
+ {
+ for (Iterator i = fTests.iterator(); i.hasNext();)
+ {
+ Test test = (Test) i.next();
+ if (test instanceof TestCase)
+ ((TestCase) test).testSingle(harness);
+ else if (test instanceof Testlet)
+ ((Testlet) test).test(harness);
+ }
+ }
+
+}
Index: junit/framework/package.html
===================================================================
RCS file: junit/framework/package.html
diff -N junit/framework/package.html
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ junit/framework/package.html 6 Oct 2006 10:37:44 -0000
@@ -0,0 +1,36 @@
+
+
+
Allows JUnit tests to be run inside the Mauve Harness. This is a + complete implementation of the JUnit core API, with the additional + functionality to make every JUnit test case automatically runnable + inside Mauve. To achieve this, two changes to the API have been applied: + Both the TestCase and TestSuite class implement gnu.testlet.Testlet, + which makes them a Mauve Testlet. The methods Assert have been prepared + so that they call into the TestHarness check() methods when beeing + run inside a Mauve TestHarness. Otherwise they throw AssertionFailedErrors + like the standard JUnit implementation.
+ + Index: junit/runner/BaseTestRunner.java =================================================================== RCS file: junit/runner/BaseTestRunner.java diff -N junit/runner/BaseTestRunner.java --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ junit/runner/BaseTestRunner.java 6 Oct 2006 10:37:44 -0000 @@ -0,0 +1,30 @@ +/* BaseRunner.java -- Base class for test runners + Copyright (C) 2006 Roman Kennke (kennke@aicas.com) +This file is part of Mauve. + +Mauve is free software; you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation; either version 2, or (at your option) +any later version. + +Mauve is distributed in the hope that it will be useful, but +WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +General Public License for more details. + +You should have received a copy of the GNU General Public License +along with Mauve; see the file COPYING. If not, write to the +Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA +02110-1301 USA. + +*/ + +// Tags: not-a-test + +package junit.runner; + +// TODO: Implement. +public class BaseTestRunner +{ + +} Index: junit/textui/TestRunner.java =================================================================== RCS file: junit/textui/TestRunner.java diff -N junit/textui/TestRunner.java --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ junit/textui/TestRunner.java 6 Oct 2006 10:37:44 -0000 @@ -0,0 +1,44 @@ +/* TestRunner.java -- A text output test runner + Copyright (C) 2006 Roman Kennke (kennke@aicas.com) +This file is part of Mauve. + +Mauve is free software; you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation; either version 2, or (at your option) +any later version. + +Mauve is distributed in the hope that it will be useful, but +WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +General Public License for more details. + +You should have received a copy of the GNU General Public License +along with Mauve; see the file COPYING. If not, write to the +Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA +02110-1301 USA. + +*/ + +// Tags: not-a-test + +package junit.textui; + +import junit.framework.Test; +import junit.framework.TestSuite; +import junit.runner.BaseTestRunner; + +// TODO: Implement. +public class TestRunner + extends BaseTestRunner +{ + + public static void run(Class testClass) + { + run(new TestSuite(testClass)); + } + + public static void run(Test test) + { + + } +}