158a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabotpackage junit.awtui; 258a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot 358a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabotimport java.awt.BorderLayout; 458a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabotimport java.awt.Button; 558a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabotimport java.awt.Checkbox; 658a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabotimport java.awt.Color; 758a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabotimport java.awt.Component; 858a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabotimport java.awt.Font; 958a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabotimport java.awt.Frame; 1058a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabotimport java.awt.GridBagConstraints; 1158a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabotimport java.awt.GridBagLayout; 1258a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabotimport java.awt.GridLayout; 1358a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabotimport java.awt.Image; 1458a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabotimport java.awt.Insets; 1558a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabotimport java.awt.Label; 1658a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabotimport java.awt.List; 1758a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabotimport java.awt.Menu; 1858a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabotimport java.awt.MenuBar; 1958a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabotimport java.awt.MenuItem; 2058a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabotimport java.awt.Panel; 2158a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabotimport java.awt.SystemColor; 2258a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabotimport java.awt.TextArea; 2358a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabotimport java.awt.TextField; 2458a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabotimport java.awt.Toolkit; 2558a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabotimport java.awt.event.ActionEvent; 2658a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabotimport java.awt.event.ActionListener; 2758a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabotimport java.awt.event.ItemEvent; 2858a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabotimport java.awt.event.ItemListener; 2958a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabotimport java.awt.event.TextEvent; 3058a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabotimport java.awt.event.TextListener; 3158a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabotimport java.awt.event.WindowAdapter; 3258a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabotimport java.awt.event.WindowEvent; 3358a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabotimport java.awt.image.ImageProducer; 3458a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabotimport java.util.Vector; 3558a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot 3658a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabotimport junit.framework.Test; 3758a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabotimport junit.framework.TestCase; 3858a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabotimport junit.framework.TestResult; 3958a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabotimport junit.framework.TestSuite; 4058a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabotimport junit.runner.BaseTestRunner; 4158a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabotimport junit.runner.TestRunListener; 4258a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot 4358a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot/** 4458a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot * An AWT based user interface to run tests. 4558a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot * Enter the name of a class which either provides a static 4658a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot * suite method or is a subclass of TestCase. 4758a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot * <pre> 4858a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot * Synopsis: java junit.awtui.TestRunner [-noloading] [TestCase] 4958a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot * </pre> 5058a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot * TestRunner takes as an optional argument the name of the testcase class to be run. 5158a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot */ 5258a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot public class TestRunner extends BaseTestRunner { 5358a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot protected Frame fFrame; 5458a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot protected Vector fExceptions; 5558a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot protected Vector fFailedTests; 5658a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot protected Thread fRunner; 5758a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot protected TestResult fTestResult; 5858a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot 5958a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot protected TextArea fTraceArea; 6058a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot protected TextField fSuiteField; 6158a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot protected Button fRun; 6258a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot protected ProgressBar fProgressIndicator; 6358a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot protected List fFailureList; 6458a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot protected Logo fLogo; 6558a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot protected Label fNumberOfErrors; 6658a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot protected Label fNumberOfFailures; 6758a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot protected Label fNumberOfRuns; 6858a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot protected Button fQuitButton; 6958a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot protected Button fRerunButton; 7058a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot protected TextField fStatusLine; 7158a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot protected Checkbox fUseLoadingRunner; 7258a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot 7358a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot protected static final Font PLAIN_FONT= new Font("dialog", Font.PLAIN, 12); 7458a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot private static final int GAP= 4; 7558a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot 7658a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot public TestRunner() { 7758a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot } 7858a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot 7958a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot private void about() { 8058a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot AboutDialog about= new AboutDialog(fFrame); 8158a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot about.setModal(true); 8258a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot about.setLocation(300, 300); 8358a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot about.setVisible(true); 8458a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot } 8558a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot 8658a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot public void testStarted(String testName) { 8758a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot showInfo("Running: "+testName); 8858a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot } 8958a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot 9058a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot public void testEnded(String testName) { 9158a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot setLabelValue(fNumberOfRuns, fTestResult.runCount()); 9258a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot synchronized(this) { 9358a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot fProgressIndicator.step(fTestResult.wasSuccessful()); 9458a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot } 9558a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot } 9658a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot 9758a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot public void testFailed(int status, Test test, Throwable t) { 9858a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot switch (status) { 9958a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot case TestRunListener.STATUS_ERROR: 10058a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot fNumberOfErrors.setText(Integer.toString(fTestResult.errorCount())); 10158a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot appendFailure("Error", test, t); 10258a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot break; 10358a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot case TestRunListener.STATUS_FAILURE: 10458a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot fNumberOfFailures.setText(Integer.toString(fTestResult.failureCount())); 10558a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot appendFailure("Failure", test, t); 10658a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot break; 10758a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot } 10858a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot } 10958a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot 11058a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot protected void addGrid(Panel p, Component co, int x, int y, int w, int fill, double wx, int anchor) { 11158a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot GridBagConstraints c= new GridBagConstraints(); 11258a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot c.gridx= x; c.gridy= y; 11358a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot c.gridwidth= w; 11458a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot c.anchor= anchor; 11558a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot c.weightx= wx; 11658a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot c.fill= fill; 11758a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot if (fill == GridBagConstraints.BOTH || fill == GridBagConstraints.VERTICAL) 11858a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot c.weighty= 1.0; 11958a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot c.insets= new Insets(y == 0 ? GAP : 0, x == 0 ? GAP : 0, GAP, GAP); 12058a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot p.add(co, c); 12158a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot } 12258a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot 12358a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot private void appendFailure(String kind, Test test, Throwable t) { 12458a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot kind+= ": " + test; 12558a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot String msg= t.getMessage(); 12658a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot if (msg != null) { 12758a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot kind+= ":" + truncate(msg); 12858a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot } 12958a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot fFailureList.add(kind); 13058a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot fExceptions.addElement(t); 13158a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot fFailedTests.addElement(test); 13258a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot if (fFailureList.getItemCount() == 1) { 13358a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot fFailureList.select(0); 13458a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot failureSelected(); 13558a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot } 13658a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot } 13758a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot /** 13858a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot * Creates the JUnit menu. Clients override this 13958a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot * method to add additional menu items. 14058a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot */ 14158a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot protected Menu createJUnitMenu() { 14258a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot Menu menu= new Menu("JUnit"); 14358a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot MenuItem mi= new MenuItem("About..."); 14458a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot mi.addActionListener( 14558a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot new ActionListener() { 14658a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot public void actionPerformed(ActionEvent event) { 14758a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot about(); 14858a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot } 14958a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot } 15058a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot ); 15158a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot menu.add(mi); 15258a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot 15358a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot menu.addSeparator(); 15458a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot mi= new MenuItem("Exit"); 15558a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot mi.addActionListener( 15658a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot new ActionListener() { 15758a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot public void actionPerformed(ActionEvent event) { 15858a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot System.exit(0); 15958a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot } 16058a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot } 16158a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot ); 16258a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot menu.add(mi); 16358a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot return menu; 16458a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot } 16558a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot 16658a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot protected void createMenus(MenuBar mb) { 16758a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot mb.add(createJUnitMenu()); 16858a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot } 16958a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot protected TestResult createTestResult() { 17058a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot return new TestResult(); 17158a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot } 17258a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot 17358a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot protected Frame createUI(String suiteName) { 17458a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot Frame frame= new Frame("JUnit"); 17558a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot Image icon= loadFrameIcon(); 17658a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot if (icon != null) 17758a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot frame.setIconImage(icon); 17858a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot 17958a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot frame.setLayout(new BorderLayout(0, 0)); 18058a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot frame.setBackground(SystemColor.control); 18158a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot final Frame finalFrame= frame; 18258a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot 18358a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot frame.addWindowListener( 18458a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot new WindowAdapter() { 18558a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot public void windowClosing(WindowEvent e) { 18658a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot finalFrame.dispose(); 18758a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot System.exit(0); 18858a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot } 18958a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot } 19058a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot ); 19158a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot 19258a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot MenuBar mb = new MenuBar(); 19358a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot createMenus(mb); 19458a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot frame.setMenuBar(mb); 19558a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot 19658a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot //---- first section 19758a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot Label suiteLabel= new Label("Test class name:"); 19858a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot 19958a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot fSuiteField= new TextField(suiteName != null ? suiteName : ""); 20058a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot fSuiteField.selectAll(); 20158a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot fSuiteField.requestFocus(); 20258a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot fSuiteField.setFont(PLAIN_FONT); 20358a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot fSuiteField.setColumns(40); 20458a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot fSuiteField.addActionListener( 20558a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot new ActionListener() { 20658a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot public void actionPerformed(ActionEvent e) { 20758a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot runSuite(); 20858a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot } 20958a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot } 21058a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot ); 21158a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot fSuiteField.addTextListener( 21258a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot new TextListener() { 21358a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot public void textValueChanged(TextEvent e) { 21458a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot fRun.setEnabled(fSuiteField.getText().length() > 0); 21558a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot fStatusLine.setText(""); 21658a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot } 21758a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot } 21858a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot ); 21958a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot fRun= new Button("Run"); 22058a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot fRun.setEnabled(false); 22158a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot fRun.addActionListener( 22258a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot new ActionListener() { 22358a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot public void actionPerformed(ActionEvent e) { 22458a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot runSuite(); 22558a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot } 22658a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot } 22758a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot ); 22858a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot boolean useLoader= useReloadingTestSuiteLoader(); 22958a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot fUseLoadingRunner= new Checkbox("Reload classes every run", useLoader); 23058a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot if (inVAJava()) 23158a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot fUseLoadingRunner.setVisible(false); 23258a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot 23358a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot //---- second section 23458a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot fProgressIndicator= new ProgressBar(); 23558a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot 23658a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot //---- third section 23758a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot fNumberOfErrors= new Label("0000", Label.RIGHT); 23858a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot fNumberOfErrors.setText("0"); 23958a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot fNumberOfErrors.setFont(PLAIN_FONT); 24058a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot 24158a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot fNumberOfFailures= new Label("0000", Label.RIGHT); 24258a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot fNumberOfFailures.setText("0"); 24358a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot fNumberOfFailures.setFont(PLAIN_FONT); 24458a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot 24558a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot fNumberOfRuns= new Label("0000", Label.RIGHT); 24658a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot fNumberOfRuns.setText("0"); 24758a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot fNumberOfRuns.setFont(PLAIN_FONT); 24858a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot 24958a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot Panel numbersPanel= createCounterPanel(); 25058a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot 25158a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot //---- fourth section 25258a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot Label failureLabel= new Label("Errors and Failures:"); 25358a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot 25458a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot fFailureList= new List(5); 25558a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot fFailureList.addItemListener( 25658a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot new ItemListener() { 25758a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot public void itemStateChanged(ItemEvent e) { 25858a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot failureSelected(); 25958a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot } 26058a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot } 26158a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot ); 26258a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot fRerunButton= new Button("Run"); 26358a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot fRerunButton.setEnabled(false); 26458a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot fRerunButton.addActionListener( 26558a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot new ActionListener() { 26658a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot public void actionPerformed(ActionEvent e) { 26758a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot rerun(); 26858a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot } 26958a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot } 27058a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot ); 27158a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot 27258a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot Panel failedPanel= new Panel(new GridLayout(0, 1, 0, 2)); 27358a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot failedPanel.add(fRerunButton); 27458a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot 27558a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot fTraceArea= new TextArea(); 27658a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot fTraceArea.setRows(5); 27758a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot fTraceArea.setColumns(60); 27858a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot 27958a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot //---- fifth section 28058a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot fStatusLine= new TextField(); 28158a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot fStatusLine.setFont(PLAIN_FONT); 28258a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot fStatusLine.setEditable(false); 28358a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot fStatusLine.setForeground(Color.red); 28458a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot 28558a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot fQuitButton= new Button("Exit"); 28658a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot fQuitButton.addActionListener( 28758a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot new ActionListener() { 28858a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot public void actionPerformed(ActionEvent e) { 28958a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot System.exit(0); 29058a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot } 29158a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot } 29258a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot ); 29358a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot 29458a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot // --------- 29558a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot fLogo= new Logo(); 29658a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot 29758a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot //---- overall layout 29858a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot Panel panel= new Panel(new GridBagLayout()); 29958a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot 30058a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot addGrid(panel, suiteLabel, 0, 0, 2, GridBagConstraints.HORIZONTAL, 1.0, GridBagConstraints.WEST); 30158a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot 30258a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot addGrid(panel, fSuiteField, 0, 1, 2, GridBagConstraints.HORIZONTAL, 1.0, GridBagConstraints.WEST); 30358a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot addGrid(panel, fRun, 2, 1, 1, GridBagConstraints.HORIZONTAL, 0.0, GridBagConstraints.CENTER); 30458a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot addGrid(panel, fUseLoadingRunner, 0, 2, 2, GridBagConstraints.NONE, 1.0, GridBagConstraints.WEST); 30558a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot addGrid(panel, fProgressIndicator, 0, 3, 2, GridBagConstraints.HORIZONTAL, 1.0, GridBagConstraints.WEST); 30658a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot addGrid(panel, fLogo, 2, 3, 1, GridBagConstraints.NONE, 0.0, GridBagConstraints.NORTH); 30758a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot 30858a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot addGrid(panel, numbersPanel, 0, 4, 2, GridBagConstraints.NONE, 0.0, GridBagConstraints.WEST); 30958a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot 31058a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot addGrid(panel, failureLabel, 0, 5, 2, GridBagConstraints.HORIZONTAL, 1.0, GridBagConstraints.WEST); 31158a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot addGrid(panel, fFailureList, 0, 6, 2, GridBagConstraints.BOTH, 1.0, GridBagConstraints.WEST); 31258a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot addGrid(panel, failedPanel, 2, 6, 1, GridBagConstraints.HORIZONTAL, 0.0, GridBagConstraints.CENTER); 31358a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot addGrid(panel, fTraceArea, 0, 7, 2, GridBagConstraints.BOTH, 1.0, GridBagConstraints.WEST); 31458a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot 31558a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot addGrid(panel, fStatusLine, 0, 8, 2, GridBagConstraints.HORIZONTAL, 1.0, GridBagConstraints.CENTER); 31658a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot addGrid(panel, fQuitButton, 2, 8, 1, GridBagConstraints.HORIZONTAL, 0.0, GridBagConstraints.CENTER); 31758a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot 31858a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot frame.add(panel, BorderLayout.CENTER); 31958a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot frame.pack(); 32058a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot return frame; 32158a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot } 32258a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot 32358a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot protected Panel createCounterPanel() { 32458a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot Panel numbersPanel= new Panel(new GridBagLayout()); 32558a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot addToCounterPanel( 32658a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot numbersPanel, 32758a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot new Label("Runs:"), 32858a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot 0, 0, 1, 1, 0.0, 0.0, 32958a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot GridBagConstraints.CENTER, GridBagConstraints.NONE, 33058a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot new Insets(0, 0, 0, 0) 33158a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot ); 33258a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot addToCounterPanel( 33358a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot numbersPanel, 33458a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot fNumberOfRuns, 33558a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot 1, 0, 1, 1, 0.33, 0.0, 33658a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot GridBagConstraints.CENTER, GridBagConstraints.HORIZONTAL, 33758a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot new Insets(0, 8, 0, 40) 33858a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot ); 33958a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot addToCounterPanel( 34058a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot numbersPanel, 34158a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot new Label("Errors:"), 34258a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot 2, 0, 1, 1, 0.0, 0.0, 34358a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot GridBagConstraints.CENTER, GridBagConstraints.NONE, 34458a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot new Insets(0, 8, 0, 0) 34558a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot ); 34658a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot addToCounterPanel( 34758a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot numbersPanel, 34858a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot fNumberOfErrors, 34958a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot 3, 0, 1, 1, 0.33, 0.0, 35058a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot GridBagConstraints.CENTER, GridBagConstraints.HORIZONTAL, 35158a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot new Insets(0, 8, 0, 40) 35258a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot ); 35358a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot addToCounterPanel( 35458a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot numbersPanel, 35558a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot new Label("Failures:"), 35658a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot 4, 0, 1, 1, 0.0, 0.0, 35758a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot GridBagConstraints.CENTER, GridBagConstraints.NONE, 35858a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot new Insets(0, 8, 0, 0) 35958a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot ); 36058a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot addToCounterPanel( 36158a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot numbersPanel, 36258a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot fNumberOfFailures, 36358a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot 5, 0, 1, 1, 0.33, 0.0, 36458a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot GridBagConstraints.CENTER, GridBagConstraints.HORIZONTAL, 36558a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot new Insets(0, 8, 0, 0) 36658a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot ); 36758a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot return numbersPanel; 36858a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot } 36958a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot 37058a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot private void addToCounterPanel(Panel counter, Component comp, 37158a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot int gridx, int gridy, int gridwidth, int gridheight, 37258a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot double weightx, double weighty, 37358a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot int anchor, int fill, 37458a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot Insets insets) { 37558a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot 37658a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot GridBagConstraints constraints= new GridBagConstraints(); 37758a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot constraints.gridx= gridx; 37858a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot constraints.gridy= gridy; 37958a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot constraints.gridwidth= gridwidth; 38058a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot constraints.gridheight= gridheight; 38158a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot constraints.weightx= weightx; 38258a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot constraints.weighty= weighty; 38358a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot constraints.anchor= anchor; 38458a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot constraints.fill= fill; 38558a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot constraints.insets= insets; 38658a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot counter.add(comp, constraints); 38758a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot } 38858a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot 38958a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot 39058a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot public void failureSelected() { 39158a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot fRerunButton.setEnabled(isErrorSelected()); 39258a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot showErrorTrace(); 39358a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot } 39458a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot 39558a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot private boolean isErrorSelected() { 39658a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot return fFailureList.getSelectedIndex() != -1; 39758a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot } 39858a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot 39958a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot private Image loadFrameIcon() { 40058a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot Toolkit toolkit= Toolkit.getDefaultToolkit(); 40158a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot try { 40258a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot java.net.URL url= BaseTestRunner.class.getResource("smalllogo.gif"); 40358a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot return toolkit.createImage((ImageProducer) url.getContent()); 40458a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot } catch (Exception ex) { 40558a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot } 40658a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot return null; 40758a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot } 40858a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot 40958a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot public Thread getRunner() { 41058a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot return fRunner; 41158a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot } 41258a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot 41358a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot public static void main(String[] args) { 41458a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot new TestRunner().start(args); 41558a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot } 41658a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot 41758a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot public static void run(Class test) { 41858a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot String args[]= { test.getName() }; 41958a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot main(args); 42058a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot } 42158a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot 42258a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot public void rerun() { 42358a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot int index= fFailureList.getSelectedIndex(); 42458a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot if (index == -1) 42558a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot return; 42658a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot 42758a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot Test test= (Test)fFailedTests.elementAt(index); 42858a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot rerunTest(test); 42958a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot } 43058a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot 43158a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot private void rerunTest(Test test) { 43258a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot if (!(test instanceof TestCase)) { 43358a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot showInfo("Could not reload "+ test.toString()); 43458a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot return; 43558a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot } 43658a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot Test reloadedTest= null; 43758a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot TestCase rerunTest= (TestCase)test; 43858a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot try { 43958a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot Class reloadedTestClass= getLoader().reload(test.getClass()); 44058a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot reloadedTest= TestSuite.createTest(reloadedTestClass, rerunTest.getName()); 44158a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot } catch(Exception e) { 44258a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot showInfo("Could not reload "+ test.toString()); 44358a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot return; 44458a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot } 44558a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot TestResult result= new TestResult(); 44658a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot reloadedTest.run(result); 44758a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot 44858a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot String message= reloadedTest.toString(); 44958a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot if(result.wasSuccessful()) 45058a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot showInfo(message+" was successful"); 45158a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot else if (result.errorCount() == 1) 45258a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot showStatus(message+" had an error"); 45358a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot else 45458a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot showStatus(message+" had a failure"); 45558a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot } 45658a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot 45758a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot protected void reset() { 45858a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot setLabelValue(fNumberOfErrors, 0); 45958a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot setLabelValue(fNumberOfFailures, 0); 46058a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot setLabelValue(fNumberOfRuns, 0); 46158a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot fProgressIndicator.reset(); 46258a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot fRerunButton.setEnabled(false); 46358a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot fFailureList.removeAll(); 46458a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot fExceptions= new Vector(10); 46558a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot fFailedTests= new Vector(10); 46658a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot fTraceArea.setText(""); 46758a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot 46858a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot } 46958a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot 47058a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot protected void runFailed(String message) { 47158a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot showStatus(message); 47258a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot fRun.setLabel("Run"); 47358a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot fRunner= null; 47458a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot } 47558a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot 47658a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot synchronized public void runSuite() { 47758a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot if (fRunner != null && fTestResult != null) { 47858a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot fTestResult.stop(); 47958a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot } else { 48058a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot setLoading(shouldReload()); 48158a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot fRun.setLabel("Stop"); 48258a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot showInfo("Initializing..."); 48358a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot reset(); 48458a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot 48558a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot showInfo("Load Test Case..."); 48658a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot 48758a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot final Test testSuite= getTest(fSuiteField.getText()); 48858a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot if (testSuite != null) { 48958a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot fRunner= new Thread() { 49058a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot public void run() { 49158a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot fTestResult= createTestResult(); 49258a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot fTestResult.addListener(TestRunner.this); 49358a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot fProgressIndicator.start(testSuite.countTestCases()); 49458a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot showInfo("Running..."); 49558a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot 49658a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot long startTime= System.currentTimeMillis(); 49758a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot testSuite.run(fTestResult); 49858a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot 49958a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot if (fTestResult.shouldStop()) { 50058a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot showStatus("Stopped"); 50158a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot } else { 50258a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot long endTime= System.currentTimeMillis(); 50358a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot long runTime= endTime-startTime; 50458a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot showInfo("Finished: " + elapsedTimeAsString(runTime) + " seconds"); 50558a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot } 50658a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot fTestResult= null; 50758a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot fRun.setLabel("Run"); 50858a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot fRunner= null; 50958a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot System.gc(); 51058a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot } 51158a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot }; 51258a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot fRunner.start(); 51358a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot } 51458a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot } 51558a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot } 51658a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot 51758a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot private boolean shouldReload() { 51858a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot return !inVAJava() && fUseLoadingRunner.getState(); 51958a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot } 52058a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot 52158a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot private void setLabelValue(Label label, int value) { 52258a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot label.setText(Integer.toString(value)); 52358a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot label.invalidate(); 52458a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot label.getParent().validate(); 52558a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot 52658a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot } 52758a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot 52858a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot public void setSuiteName(String suite) { 52958a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot fSuiteField.setText(suite); 53058a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot } 53158a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot 53258a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot private void showErrorTrace() { 53358a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot int index= fFailureList.getSelectedIndex(); 53458a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot if (index == -1) 53558a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot return; 53658a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot 53758a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot Throwable t= (Throwable) fExceptions.elementAt(index); 53858a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot fTraceArea.setText(getFilteredTrace(t)); 53958a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot } 54058a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot 54158a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot 54258a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot private void showInfo(String message) { 54358a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot fStatusLine.setFont(PLAIN_FONT); 54458a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot fStatusLine.setForeground(Color.black); 54558a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot fStatusLine.setText(message); 54658a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot } 54758a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot 54858a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot protected void clearStatus() { 54958a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot showStatus(""); 55058a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot } 55158a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot 55258a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot private void showStatus(String status) { 55358a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot fStatusLine.setFont(PLAIN_FONT); 55458a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot fStatusLine.setForeground(Color.red); 55558a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot fStatusLine.setText(status); 55658a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot } 55758a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot /** 55858a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot * Starts the TestRunner 55958a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot */ 56058a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot public void start(String[] args) { 56158a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot String suiteName= processArguments(args); 56258a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot fFrame= createUI(suiteName); 56358a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot fFrame.setLocation(200, 200); 56458a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot fFrame.setVisible(true); 56558a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot 56658a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot if (suiteName != null) { 56758a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot setSuiteName(suiteName); 56858a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot runSuite(); 56958a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot } 57058a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot } 57158a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot}