*** empty log message ***
[phpeclipse.git] / net.sourceforge.phpeclipse.phpunit / src / net / sourceforge / phpeclipse / phpunit / PHPUnitView.java
index 6510e34..1d146a3 100644 (file)
@@ -1,19 +1,17 @@
 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;
 
@@ -49,6 +47,7 @@ public class PHPUnitView extends ViewPart {
         * The first level nodes are the test suites.
         * children are nested test suites.
         * leafs: test functions.
+        * hierarchy: package->testsuite1->testcase->test_function
         */
        
        
@@ -57,6 +56,9 @@ public class PHPUnitView extends ViewPart {
        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;
@@ -67,28 +69,58 @@ public class PHPUnitView extends ViewPart {
        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);
@@ -114,8 +146,7 @@ public class PHPUnitView extends ViewPart {
                        
                        
                        }); // end add action listener.
-               
-               // TODO layout!
+
        }
 
        /* (non-Javadoc)
@@ -130,18 +161,36 @@ public class PHPUnitView extends ViewPart {
         * 
         * @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() {
@@ -160,56 +209,87 @@ public class PHPUnitView extends ViewPart {
                
        }
        
+       /**
+        * 
+        */
        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
+       
+
+
+
+