From cb203b94d4a9623c447fd5e2cd0094d72b975131 Mon Sep 17 00:00:00 2001 From: shleh Date: Sat, 7 Aug 2004 15:25:35 +0000 Subject: [PATCH 1/1] Refactored the progressInfoComposite and resultsInfoComposite into their own classes --- .../phpeclipse/phpunit/PHPUnitView.java | 286 ++++++++++++-------- .../phpeclipse/phpunit/ProgressInfoComposite.java | 96 +++++++ .../phpeclipse/phpunit/ResultsInfoComposite.java | 59 ++++ 3 files changed, 323 insertions(+), 118 deletions(-) create mode 100644 net.sourceforge.phpeclipse.phpunit/src/net/sourceforge/phpeclipse/phpunit/ProgressInfoComposite.java create mode 100644 net.sourceforge.phpeclipse.phpunit/src/net/sourceforge/phpeclipse/phpunit/ResultsInfoComposite.java diff --git a/net.sourceforge.phpeclipse.phpunit/src/net/sourceforge/phpeclipse/phpunit/PHPUnitView.java b/net.sourceforge.phpeclipse.phpunit/src/net/sourceforge/phpeclipse/phpunit/PHPUnitView.java index 1d146a3..847d620 100644 --- a/net.sourceforge.phpeclipse.phpunit/src/net/sourceforge/phpeclipse/phpunit/PHPUnitView.java +++ b/net.sourceforge.phpeclipse.phpunit/src/net/sourceforge/phpeclipse/phpunit/PHPUnitView.java @@ -1,18 +1,19 @@ package net.sourceforge.phpeclipse.phpunit; +import java.io.IOException; +import org.eclipse.jface.action.Action; +import org.eclipse.jface.action.IToolBarManager; import org.eclipse.swt.SWT; 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.IActionBars; +import org.eclipse.ui.ISharedImages; +import org.eclipse.ui.PlatformUI; import org.eclipse.ui.part.ViewPart; /** @@ -38,7 +39,6 @@ import org.eclipse.ui.part.ViewPart; * */ - public class PHPUnitView extends ViewPart { /* @@ -49,111 +49,130 @@ public class PHPUnitView extends ViewPart { * leafs: test functions. * hierarchy: package->testsuite1->testcase->test_function */ - - + private int numTests; // total number of tests private int numTestsRun; // number of tests run so far 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; - Label labelFailures, labelFailuresVal; + + + private TestPool testPool; + + private Button startButton; + + private ProgressInfoComposite progressInfoComposite; + private ResultsInfoComposite resultsInfoComposite; + private Group settingsInfoComposite; //TODO: move somewhere else, launcher, wizard or preferences. - Text reportArea; // TODO: replace with Tree display like JUnit - Button startButton; public PHPUnitView() { handler = new XMLReportHandler(); + testPool = new TestPool(); + + } - - public void createPartControl(Composite parent) { + + parent.setLayout(new FillLayout(SWT.VERTICAL)); + + //Launch ToolBar: + setActions(); + + //Build the progress info Composite s + progressInfoComposite = new ProgressInfoComposite(parent); - - //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(labelsComposite, SWT.NONE); - labelRunsVal.setText("0 / 0"); - - labelFailures = new Label(labelsComposite, SWT.NONE); - labelFailures.setText("Failures: "); - labelFailuresVal = new Label(labelsComposite, SWT.NONE); - labelFailuresVal.setText("0"); - - labelErrors = new Label(labelsComposite, SWT.NONE); - labelErrors.setText("Errors: "); - labelErrorsVal = new Label(labelsComposite, SWT.NONE); - labelErrorsVal.setText("0"); //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); + resultsInfoComposite = new ResultsInfoComposite(parent); + //build the settings composite + buildSettingsComposite(parent); + startButton = new Button(parent, SWT.CENTER); startButton.setText("Start Tests"); - startButton.addMouseListener( new MouseListener() { + startButton.addMouseListener(new MouseListener() { public void mouseDoubleClick(MouseEvent arg0) { - // TODO Auto-generated method stub - + } public void mouseDown(MouseEvent arg0) { - // TODO Auto-generated method stub + startTests(); + } public void mouseUp(MouseEvent arg0) { - // TODO Auto-generated method stub - + } + }); // end add action listener. - - - }); // end add action listener. + } + + /** + * @param parent + */ + private void buildSettingsComposite(Composite parent) { + + + settingsInfoComposite = new Group(parent, SWT.NONE); +// settingsInfoComposite.setText("Settings"); +// settingsInfoComposite.setLayout(new GridLayout(2,false)); +// +// +// //the test suite to launch +// Label testSuiteLabel = new Label(settingsInfoComposite, SWT.NONE); +// testSuiteLabel.setText("Test suite to run:"); +// //testSuiteLabel.setLayoutData(new GridData()) +// Text testSuiteText = new Text(settingsInfoComposite, SWT.NONE); +// +// //the path to php +// Label phpPathLabel = new Label(settingsInfoComposite, SWT.NONE); +// phpPathLabel.setText("php Path:"); +// //testSuiteLabel.setLayoutData(new GridData()) +// Text phpPathText = new Text(settingsInfoComposite, SWT.NONE); + + + + } + private void setActions() { + final IActionBars actionBars = getViewSite().getActionBars(); + IToolBarManager toolBarManager = actionBars.getToolBarManager(); + Action action1 = new Action() {}; + action1.setText("Action 1"); + action1.setToolTipText("Start the testing"); + //final URL installUrl = PaintPlugin.getDefault().getDescriptor().getInstallURL(); + //final URL imageUrl = new URL(installUrl, PaintPlugin.getResourceString(id + ".image")); +// URL imageUrl = null; +// try { +// imageUrl = +// new URL("C:\\sample.gif"); +// } catch (MalformedURLException e) { +// // TODO Auto-generated catch block +// e.printStackTrace(); +// } +// action1.setImageDescriptor(ImageDescriptor.createFromURL(imageUrl)); +// + action1.setImageDescriptor(PlatformUI.getWorkbench().getSharedImages(). + getImageDescriptor(ISharedImages.IMG_OBJS_TASK_TSK)); + toolBarManager.add(action1); } + + /* (non-Javadoc) * @see org.eclipse.ui.IWorkbenchPart#setFocus() */ public void setFocus() { - //markTestPass("hello"); + } /** @@ -162,65 +181,78 @@ public class PHPUnitView extends ViewPart { * @param 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... + + testPool.getTest(testID).setVerdict(Test.PASS); - - //for now: - 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"); - + + testPool.addTest(new Test(testName, testID)); } - + public void markTestFail(String testID) { - reportArea.append("test " + testID + " failed \n"); + numFailures++; + testPool.getTest(testID).setVerdict(Test.FAIL); + } - - public void markTestingFinished() { + + public void markTestingStarted(int numTestsToBeRun) { - reportArea.append("end all tests \n"); + this.numTests = numTestsToBeRun; + //reportArea.append("Tests started expecting: " + numTests + " \n"); } - + + public void markTestingFinished() { + + + //reportArea.append("end all tests \n"); + + } + // action to start tests: private void startTests() { - + // preparation: // take the full test suite (could containt other test suites). // create temp php file that starts that suite and uses socketTestReport // as a test result reporter. // add listener: localhost , port 13579 // start listening at port. + - reportArea.append("Tests started \n"); listenForReports(); - - + try { + Runtime.getRuntime().exec("php.exe \"C:/Program Files/Apache Group/Apache2/htdocs/phpUnit/suite.php\""); + } catch (IOException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + } - + /** * */ private void listenForReports() { - - ConnectionListener conListener = new ConnectionListener(); conListener.start(this); } //end of method - + /** * handle this report: test passed, faile, end of all. * @param report @@ -228,34 +260,61 @@ public class PHPUnitView extends ViewPart { public void handleReport(String report) { //delegate to the XML report handler. - //reportArea.append("msg: " + report + "\n"); handler.handle(report, this); - - } - + + /** * @param command * @param testCount * @param testID */ - public void handleCommand(String command, String testCount, String testID) { + public void handleCommand( + String command, + String testCount, + String testID) { + + + if (command.equals("startAll")) { + + markTestingStarted(new Integer(testCount).intValue()); + + + }else if (command.equals("testStarted")) { - if (command.equals("testStarted")) { - createNewTest("testName", testID); markTestStarted(testID); - - } else if (command.equals("testFinished")) { + + } else if (command.equals("testFINISHED")) { + + markTestFinished(); - - // do nothing wait for verdict } else if (command.equals("endAll")) { - + markTestingFinished(); } - + + + progressInfoComposite.updateInfo(numTests, numTestsRun, numFailures, numErrors); + resultsInfoComposite.updateInfo(testPool); + + } + + /** + * + */ + private void markTestFinished() { + + numTestsRun++; + + } + + /** + * + */ + private void updateResultsInfo() { + // TODO Auto-generated method stub } @@ -265,12 +324,11 @@ public class PHPUnitView extends ViewPart { */ public void setTestVerdict(String currentTestID, String verdict) { - if( verdict.equals("passed")) + if (verdict.equals("passed")) markTestPassed(currentTestID); else markTestFail(currentTestID); - } /** @@ -278,18 +336,10 @@ public class PHPUnitView extends ViewPart { * @param exception */ public void addTestException(String currentTestID, String exception) { - + //TODO: decide how to show exceptions. don't show them for now. //reportArea.append(" test " + currentTestID + " exception: " + exception + "\n"); - - } - - + } } //end of class - - - - - diff --git a/net.sourceforge.phpeclipse.phpunit/src/net/sourceforge/phpeclipse/phpunit/ProgressInfoComposite.java b/net.sourceforge.phpeclipse.phpunit/src/net/sourceforge/phpeclipse/phpunit/ProgressInfoComposite.java new file mode 100644 index 0000000..7d779e4 --- /dev/null +++ b/net.sourceforge.phpeclipse.phpunit/src/net/sourceforge/phpeclipse/phpunit/ProgressInfoComposite.java @@ -0,0 +1,96 @@ +/* + * Created on Jul 31, 2004 + * + * To change the template for this generated file go to + * Window>Preferences>Java>Code Generation>Code and Comments + */ +package net.sourceforge.phpeclipse.phpunit; + +import org.eclipse.swt.SWT; +import org.eclipse.swt.layout.FillLayout; +import org.eclipse.swt.layout.GridData; +import org.eclipse.swt.layout.GridLayout; +import org.eclipse.swt.widgets.Composite; +import org.eclipse.swt.widgets.Label; +import org.eclipse.swt.widgets.ProgressBar; + +/** + * @author Ali Echihabi + * + * To change the template for this generated type comment go to + * Window>Preferences>Java>Code Generation>Code and Comments + */ +public class ProgressInfoComposite extends Composite { + + + private Label labelRuns, labelRunsVal; // Runs: 12 + private Label labelErrors, labelErrorsVal; + private Label labelFailures, labelFailuresVal; + + private ProgressBar progressBar; + + /** + * @param arg0 + * @param arg1 + */ + public ProgressInfoComposite(Composite parent) { + + super(parent, SWT.NONE); + + GridLayout gridLayout = new GridLayout(); + gridLayout.numColumns = 1; + + // set title and layout + setLayout(gridLayout); + + + // set the progress bar + progressBar = new ProgressBar(this, SWT.HORIZONTAL); + progressBar.setLayoutData( + new GridData(GridData.GRAB_HORIZONTAL | GridData.FILL_HORIZONTAL)); + progressBar.setMinimum(0); + + + Composite labelsComposite = + new Composite(this, 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(labelsComposite, SWT.NONE); + labelRunsVal.setText("0 / 0"); + + labelFailures = new Label(labelsComposite, SWT.NONE); + labelFailures.setText("Failures: "); + labelFailuresVal = new Label(labelsComposite, SWT.NONE); + labelFailuresVal.setText("0"); + + labelErrors = new Label(labelsComposite, SWT.NONE); + labelErrors.setText("Errors: "); + labelErrorsVal = new Label(labelsComposite, SWT.NONE); + labelErrorsVal.setText("0"); + } + + public void updateInfo(int numTests, int numTestsRun, int numFailures, int numErrors) { + + //update progress bar + progressBar.setMaximum(numTests); + progressBar.setSelection(numTestsRun); + + System.out.println("numTestsRun: " + numTestsRun); + + //update labels + labelRunsVal.setText(numTestsRun + " / " + numTests); + labelFailuresVal.setText("" + numFailures); + labelErrorsVal.setText("" + numErrors); + + //TODO: change Failures label to red if some exist. + + + + } + +} diff --git a/net.sourceforge.phpeclipse.phpunit/src/net/sourceforge/phpeclipse/phpunit/ResultsInfoComposite.java b/net.sourceforge.phpeclipse.phpunit/src/net/sourceforge/phpeclipse/phpunit/ResultsInfoComposite.java new file mode 100644 index 0000000..8f50171 --- /dev/null +++ b/net.sourceforge.phpeclipse.phpunit/src/net/sourceforge/phpeclipse/phpunit/ResultsInfoComposite.java @@ -0,0 +1,59 @@ +/* + * Created on Jul 31, 2004 + * + * To change the template for this generated file go to + * Window>Preferences>Java>Code Generation>Code and Comments + */ +package net.sourceforge.phpeclipse.phpunit; + +import org.eclipse.swt.SWT; +import org.eclipse.swt.layout.FillLayout; +import org.eclipse.swt.widgets.Composite; +import org.eclipse.swt.widgets.Text; + +/** + * @author Ali Echihabi + * + * To change the template for this generated type comment go to + * Window>Preferences>Java>Code Generation>Code and Comments + */ +public class ResultsInfoComposite extends Composite { + + + private Text reportArea; // TODO: replace with Tree display like JUnit + + /** + * @param arg0 + * @param arg1 + */ + public ResultsInfoComposite(Composite parent) { + + super(parent, SWT.NONE); + + setLayout(new FillLayout(SWT.VERTICAL)); + + reportArea = + new Text( + this, + SWT.MULTI + | SWT.BORDER + | SWT.WRAP + | SWT.V_SCROLL + | SWT.READ_ONLY); + + } + + + + public void updateInfo(TestPool testPool) { + + // take care of the TreeView and its content and label providers. + + } + + + + + + +} -- 1.7.1