Update of /cvsroot/jmri/test/jmri/util In directory fdv4jf1.ch3.sourceforge.com:/tmp/cvs-serv31685/test/jmri/util Modified Files: UtilTest.java Added Files: JUnitUtil.java SwingTestCase.java SwingTestCaseTest.java Removed Files: InitializingTestCase.java ThreadedTestCase.java Log Message: refactor to a single JUnitUtil class --- InitializingTestCase.java DELETED --- --- NEW FILE: SwingTestCase.java --- package jmri.util; import junit.framework.*; import junit.extensions.jfcunit.*; import junit.extensions.jfcunit.finder.*; import junit.extensions.jfcunit.eventdata.*; /** * Provide Swing context for JUnit test classes. *<p> * By default, JFCUnit closes all windows at the end * of each test. JMRI tests leave windows open, so that's * been bypassed for now. * * @author Bob Jacobsen - Copyright 2009 * @version $Revision: 1.1 $ * @since 2.5.3 */ public class SwingTestCase extends JFCTestCase { public SwingTestCase(String s) { super(s); } protected void setUp() throws Exception { super.setUp(); // Choose the test Helper setHelper( new JFCTestHelper( ) ); // Uses the AWT Event Queue. // setHelper( new RobotTestHelper( ) ); // Uses the OS Event Queue. } protected void leaveAllWindowsOpen() { getHelper().addSystemWindow("."); // all windows left open } protected void tearDown() throws Exception { leaveAllWindowsOpen(); getHelper().cleanUp( this ); super.tearDown( ); } } Index: UtilTest.java =================================================================== RCS file: /cvsroot/jmri/test/jmri/util/UtilTest.java,v retrieving revision 1.7 retrieving revision 1.8 diff -C2 -d -r1.7 -r1.8 *** UtilTest.java 25 Dec 2008 21:11:28 -0000 1.7 --- UtilTest.java 20 Apr 2009 05:45:26 -0000 1.8 *************** *** 27,34 **** public static Test suite() { TestSuite suite = new TestSuite("jmri.util.UtilTest"); // no tests in this class itself - suite.addTest(jmri.util.OrderedHashtableTest.suite()); suite.addTest(jmri.util.FileUtilTest.suite()); suite.addTest(jmri.util.JUnitAppenderTest.suite()); suite.addTest(jmri.util.StringUtilTest.suite()); return suite; --- 27,35 ---- public static Test suite() { TestSuite suite = new TestSuite("jmri.util.UtilTest"); // no tests in this class itself suite.addTest(jmri.util.FileUtilTest.suite()); suite.addTest(jmri.util.JUnitAppenderTest.suite()); + suite.addTest(jmri.util.OrderedHashtableTest.suite()); suite.addTest(jmri.util.StringUtilTest.suite()); + suite.addTest(jmri.util.SwingTestCaseTest.suite()); return suite; --- NEW FILE: JUnitUtil.java --- package jmri.util; import junit.framework.Assert; import jmri.InstanceManager; import jmri.managers.InternalLightManager; import jmri.managers.InternalSensorManager; import jmri.managers.InternalTurnoutManager; /** * Common utility methods for working with JUnit. *<p> * To release the current thread and allow other listeners to execute: <code><pre> JUnitUtil.releaseThread(this); super.tearDown(); </pre></code> * Note that this is not appropriate for Swing objects; * you need to use JFCUnit for that. *<p> * If you're using the InstanceManager, setUp() implementation should start with: <code><pre> super.setUp(); JUnitUtil.resetInstanceManager(); JUnitUtil.initInternalTurnoutManager(); JUnitUtil.initInternalLightManager(); JUnitUtil.initInternalSensorManager(); </pre></code> *<p> * Your tearDown() should end with: <code><pre> JUnitUtil.resetInstanceManager(); super.tearDown(); </pre></code> * @author Bob Jacobsen Copyright 2009 * @version $Revision: 1.1 $ * @since 2.5.3 */ public class JUnitUtil { static int DEFAULTDELAY = 200; /** * Release the current thread, allowing other * threads to process */ public static void releaseThread(Object self, int delay) { if (javax.swing.SwingUtilities.isEventDispatchThread()) { System.err.println("ERROR: Cannot use releaseThread on Swing thread"); new Exception().printStackTrace(); return; } synchronized (self) { try { int priority = Thread.currentThread().getPriority(); Thread.currentThread().setPriority(Thread.MIN_PRIORITY); Thread.yield(); Thread.sleep(delay); Thread.currentThread().setPriority(priority); self.wait(delay); } catch (InterruptedException e) { Assert.fail("failed due to InterruptedException"); } } } public static void releaseThread(Object self) { releaseThread(self, DEFAULTDELAY); } public static void resetInstanceManager() { // create a new instance manager InstanceManager i = new InstanceManager(){ protected void init() { root = null; super.init(); root = this; } }; } public static void initInternalTurnoutManager() { InstanceManager.setTurnoutManager(new InternalTurnoutManager()); } public static void initInternalLightManager() { InstanceManager.setLightManager(new InternalLightManager()); } public static void initInternalSensorManager() { InstanceManager.setSensorManager(new InternalSensorManager()); } } --- NEW FILE: SwingTestCaseTest.java --- // SwingTestCaseTest.java package jmri.util; import javax.swing.*; import junit.framework.*; import junit.extensions.jfcunit.*; import junit.extensions.jfcunit.finder.*; import junit.extensions.jfcunit.eventdata.*; /** * Tests for the jmri.util.SwingTestCase class. * @author Bob Jacobsen Copyright 2009 * @version $Revision: 1.1 $ */ public class SwingTestCaseTest extends SwingTestCase { public void testCheckBoxClosing() { // create a little GUI JFrame f = new JFrame("testCheckBoxClosing"); JCheckBox b = new JCheckBox("Check"); b.setName("Check"); f.add(b); f.setVisible(true); // find the check box NamedComponentFinder finder = new NamedComponentFinder(JCheckBox.class, "Check" ); JCheckBox testBox = ( JCheckBox ) finder.find( f, 0); Assert.assertNotNull(testBox); Assert.assertTrue(!testBox.isSelected()); // check it getHelper().enterClickAndLeave( new MouseEventData( this, testBox ) ); // test for selected Assert.assertTrue(testBox.isSelected()); } public void testCheckBoxOpen() { // create a little GUI JFrame f = new JFrame("testCheckBoxOpen"); JCheckBox b = new JCheckBox("Check"); b.setName("Check"); f.add(b); f.setVisible(true); // find the check box NamedComponentFinder finder = new NamedComponentFinder(JCheckBox.class, "Check" ); JCheckBox testBox = ( JCheckBox ) finder.find( f, 0); Assert.assertNotNull(testBox); Assert.assertTrue(!testBox.isSelected()); // check it getHelper().enterClickAndLeave( new MouseEventData( this, testBox ) ); // test for selected Assert.assertTrue(testBox.isSelected()); // request this window be left open getHelper().addSystemWindow("testCheckBoxOpen"); } // from here down is testing infrastructure public SwingTestCaseTest(String s) { super(s); } // Main entry point static public void main(String[] args) { String[] testCaseName = {SwingTestCaseTest.class.getName()}; junit.swingui.TestRunner.main(testCaseName); } // test suite from all defined tests public static Test suite() { Test suite = new TestSuite(SwingTestCaseTest.class); return suite; } // The minimal setup for log4J protected void setUp() throws Exception { //apps.tests.Log4JFixture.setUp(); super.setUp(); } protected void tearDown() throws Exception { super.tearDown(); //apps.tests.Log4JFixture.tearDown(); } //static org.apache.log4j.Logger log = org.apache.log4j.Logger.getLogger(SwingTestCaseTest.class.getName()); } --- ThreadedTestCase.java DELETED --- |