blob: a5c5146147c49029f3ea2809fc8c788ee39dee00 [file] [log] [blame]
package org.eclipse.photran.internal.tests;
import java.io.File;
import java.io.FilenameFilter;
import junit.framework.Test;
import junit.framework.TestCase;
import junit.framework.TestSuite;
/**
* A {@link TestSuite} containing a test for each <i>marker</i> found in the files in a particular
* directory. A <i>marker</i> is an arbitrary string (Photran uses <pre>!&lt;&lt;&lt;&lt;&lt;</pre>),
* since <pre>!</pre> is the comment character in Fortran) followed by arbitrary text which continues
* to the end of the line or the next marker, whichever appears first.
* <p>
* Subclasses must override {@link #createTestFor(List, File, int, String))}.
* <p>
* To run an entire suite of tests for the given file, or to construct an arbitrary TestCase,
* subclass from {@link GeneralTestSuiteFromMarkers} instead.
*
* @author Jeff Overbey
*/
public abstract class TestSuiteFromMarkers extends GeneralTestSuiteFromMarkers
{
public TestSuiteFromMarkers(String description, String marker, File fileOrDirectory, FilenameFilter filenameFilter) throws Exception
{
super(description, marker, fileOrDirectory, filenameFilter);
}
public TestSuiteFromMarkers(String description, String marker, File fileOrDirectory, final String filenameExtension) throws Exception
{
super(description, marker, fileOrDirectory, filenameExtension);
}
@Override
protected final Test createTestFor(File fileContainingMarker, int markerOffset, String markerText)
{
TestSuite suite = new TestSuite(fileContainingMarker.getName() + " - " + markerText); //$NON-NLS-1$
suite.addTest(new SimpleFileTestCase(fileContainingMarker, markerOffset, markerText) {});
return suite;
}
public abstract class SimpleFileTestCase extends TestCase
{
protected final File fileContainingMarker;
protected final int markerOffset;
protected final String markerText;
public SimpleFileTestCase(File fileContainingMarker, int markerOffset, String markerText)
{
super("test"); //$NON-NLS-1$
this.fileContainingMarker = fileContainingMarker;
this.markerOffset = markerOffset;
this.markerText = markerText;
}
public void test() throws Exception
{
TestSuiteFromMarkers.this.test(fileContainingMarker, markerOffset, markerText);
}
}
protected abstract void test(File fileContainingMarker, int markerOffset, String markerText) throws Exception;
}