package net.sourceforge.phpeclipse.phpunit;
-import java.io.BufferedReader;
-import java.io.InputStreamReader;
-import java.net.ServerSocket;
-import java.net.Socket;
-
import org.eclipse.swt.SWT;
-import org.eclipse.swt.events.ControlEvent;
-import org.eclipse.swt.events.ControlListener;
import org.eclipse.swt.events.MouseEvent;
import org.eclipse.swt.events.MouseListener;
+import org.eclipse.swt.layout.FillLayout;
+import org.eclipse.swt.layout.GridData;
+import org.eclipse.swt.layout.GridLayout;
import org.eclipse.swt.widgets.Button;
import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Group;
import org.eclipse.swt.widgets.Label;
+import org.eclipse.swt.widgets.ProgressBar;
import org.eclipse.swt.widgets.Text;
import org.eclipse.ui.part.ViewPart;
* The first level nodes are the test suites.
* children are nested test suites.
* leafs: test functions.
+ * hierarchy: package->testsuite1->testcase->test_function
*/
private int numFailures; // number of failures so far
private int numErrors; // number of errors so far
private int numPasses; // number of passes so far (they should add up)
+
+
+ private XMLReportHandler handler;
Label labelRuns, labelRunsVal; // Runs: 12
Label labelErrors, labelErrorsVal;
Button startButton;
public PHPUnitView() {
-
+ handler = new XMLReportHandler();
}
+
+
public void createPartControl(Composite parent) {
- //viewer = new TreeViewer(parent);
- labelRuns = new Label(parent, SWT.WRAP);
+
+ //layout:
+ FillLayout fillLayout = new FillLayout(SWT.VERTICAL);
+ parent.setLayout(fillLayout);
+
+ Group progressInfoComposite = new Group(parent, SWT.SHADOW_ETCHED_IN);
+ Group resultsInfoComposite = new Group(parent, SWT.NONE);
+
+
+ //Build the progress info Composite
+ progressInfoComposite.setText("Progress:");
+ GridLayout gridLayout = new GridLayout();
+ gridLayout.numColumns = 1;
+
+ progressInfoComposite.setLayout(gridLayout);
+
+
+ ProgressBar progressBar = new ProgressBar(progressInfoComposite, SWT.HORIZONTAL);
+ progressBar.setLayoutData(new GridData(GridData.GRAB_HORIZONTAL|GridData.FILL_HORIZONTAL));
+
+ Composite labelsComposite = new Composite(progressInfoComposite, SWT.NONE);
+ labelsComposite.setLayoutData(new GridData(GridData.GRAB_HORIZONTAL|GridData.FILL_HORIZONTAL));
+
+ labelsComposite.setLayout(new FillLayout(SWT.HORIZONTAL));
+
+ labelRuns = new Label(labelsComposite, SWT.NONE);
labelRuns.setText("Runs: ");
- labelRunsVal = new Label(parent, SWT.WRAP);
+ labelRunsVal = new Label(labelsComposite, SWT.NONE);
labelRunsVal.setText("0 / 0");
- labelFailures = new Label(parent, SWT.WRAP);
+ labelFailures = new Label(labelsComposite, SWT.NONE);
labelFailures.setText("Failures: ");
- labelFailuresVal = new Label(parent, SWT.WRAP);
+ labelFailuresVal = new Label(labelsComposite, SWT.NONE);
labelFailuresVal.setText("0");
- labelErrors = new Label(parent, SWT.WRAP);
+ labelErrors = new Label(labelsComposite, SWT.NONE);
labelErrors.setText("Errors: ");
- labelErrorsVal = new Label(parent, SWT.WRAP);
+ labelErrorsVal = new Label(labelsComposite, SWT.NONE);
labelErrorsVal.setText("0");
- reportArea = new Text(parent, SWT.MULTI | SWT.BORDER |
+ //Build the result info composite
+ resultsInfoComposite.setText("Results:");
+ resultsInfoComposite.setLayout(fillLayout);
+
+ reportArea = new Text(resultsInfoComposite, SWT.MULTI | SWT.BORDER |
SWT.WRAP | SWT.V_SCROLL | SWT.READ_ONLY);
startButton = new Button(parent, SWT.CENTER);
}); // end add action listener.
-
- // TODO layout!
+
}
/* (non-Javadoc)
*
* @param testID
*/
- private void markTestPass(String testID) {
+ public void markTestPassed(String testID) {
// testid, use it in hashmap to retrieve tree item of test and
// change icon color, increment pass counter, etc...
//for now:
- reportArea.append("test passed");
+ reportArea.append("test : " + testID + " passed \n");
}
+ public void markTestStarted(String testID) {
+
+ reportArea.append("test started: " + testID + " \n");
+ }
+
+ public void createNewTest(String testName, String testID) {
+
+ reportArea.append("new test: " + testName + " - testID " + testID + " \n");
+ }
+ public void markTestFail(String testID) {
+ reportArea.append("test " + testID + " failed \n");
+ }
+
+ public void markTestingFinished() {
+
+ reportArea.append("end all tests \n");
+
+ }
// action to start tests:
private void startTests() {
}
+ /**
+ *
+ */
private void listenForReports() {
-
- ServerSocket sSocket = null;
- Socket serviceSocket = null;
-
- try {
-
- reportArea.append("listening at port 12345");
-
- sSocket = new ServerSocket(12345);
-
- // accept connection from test reporter.
- serviceSocket = sSocket.accept();
+
+
+
+ ConnectionListener conListener = new ConnectionListener();
+ conListener.start(this);
+
+ } //end of method
+
+ /**
+ * handle this report: test passed, faile, end of all.
+ * @param report
+ */
+ public void handleReport(String report) {
+
+ //delegate to the XML report handler.
+ //reportArea.append("msg: " + report + "\n");
+ handler.handle(report, this);
+
- InputStreamReader reader = new InputStreamReader(serviceSocket.getInputStream());
- BufferedReader in = new BufferedReader(reader);
- String report = null;
-
- // keep listening until the
- while ( (report = in.readLine()) != null && (report != "end_all_tests") ) {
+ }
+
+ /**
+ * @param command
+ * @param testCount
+ * @param testID
+ */
+ public void handleCommand(String command, String testCount, String testID) {
+
+ if (command.equals("testStarted")) {
- handleReport(report);
- }
-
- reportArea.append("Finished!");
-
- sSocket.close();
- serviceSocket.close();
-
- } catch (Exception e) {
-
- e.printStackTrace();
+ createNewTest("testName", testID);
+ markTestStarted(testID);
+
+ } else if (command.equals("testFinished")) {
- }
-
-
+ // do nothing wait for verdict
+ } else if (command.equals("endAll")) {
+
+ markTestingFinished();
+ }
+
}
-
+
/**
- * handle this report: test passed, faile, end of all.
- * @param report
+ * @param currentTestID
+ * @param verdict
*/
- private void handleReport(String report) {
+ public void setTestVerdict(String currentTestID, String verdict) {
+
+ if( verdict.equals("passed"))
+ markTestPassed(currentTestID);
+ else
+ markTestFail(currentTestID);
+
+
+ }
+
+ /**
+ * @param currentTestID
+ * @param exception
+ */
+ public void addTestException(String currentTestID, String exception) {
- reportArea.append("msg: " + report + "\n");
+ //TODO: decide how to show exceptions. don't show them for now.
+ //reportArea.append(" test " + currentTestID + " exception: " + exception + "\n");
}
-}
+
+
+} //end of class
+
+
+
+
+