001: /*
002: * @(#)TestRunnableUTest.java
003: *
004: * Copyright (C) 2002-2003 Matt Albrecht
005: * groboclown@users.sourceforge.net
006: * http://groboutils.sourceforge.net
007: *
008: * Permission is hereby granted, free of charge, to any person obtaining a
009: * copy of this software and associated documentation files (the "Software"),
010: * to deal in the Software without restriction, including without limitation
011: * the rights to use, copy, modify, merge, publish, distribute, sublicense,
012: * and/or sell copies of the Software, and to permit persons to whom the
013: * Software is furnished to do so, subject to the following conditions:
014: *
015: * The above copyright notice and this permission notice shall be included in
016: * all copies or substantial portions of the Software.
017: *
018: * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
019: * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
020: * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
021: * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
022: * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
023: * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
024: * DEALINGS IN THE SOFTWARE.
025: */
026:
027: package net.sourceforge.groboutils.junit.v1;
028:
029: import junit.framework.Test;
030: import junit.framework.TestCase;
031: import junit.framework.TestSuite;
032:
033: import java.io.IOException;
034: import java.lang.reflect.Method;
035:
036: /**
037: * Tests the TestRunnable class.
038: *
039: * @author Matt Albrecht <a href="mailto:groboclown@users.sourceforge.net">groboclown@users.sourceforge.net</a>
040: * @since March 1, 2002
041: * @version $Date: 2003/07/14 22:26:27 $
042: */
043: public class TestRunnableUTest extends TestCase {
044: //-------------------------------------------------------------------------
045: // Standard JUnit Class-specific declarations
046:
047: private static final Class THIS_CLASS = TestRunnableUTest.class;
048:
049: public TestRunnableUTest(String name) {
050: super (name);
051: }
052:
053: //-------------------------------------------------------------------------
054: // Tests
055:
056: private static class MyTestRunnable extends TestRunnable {
057: Throwable t;
058:
059: public MyTestRunnable(Throwable t) {
060: this .t = t;
061: }
062:
063: public void runTest() throws Throwable {
064: if (this .t != null) {
065: throw this .t;
066: }
067: }
068: }
069:
070: public void testDelay1() throws InterruptedException {
071: // JVMs do not have to delay exactly the amount listed, hence the
072: // error.
073: long delay = 100L;
074: long error = 10L;
075: long minDelay = delay - error;
076: TestRunnable tr = createTestRunnable(null);
077: long start = System.currentTimeMillis();
078: tr.delay(delay);
079: long end = System.currentTimeMillis();
080: assertTrue("Did not delay for long enough (delayed "
081: + (end - start) + " ms, should have delayed at least "
082: + delay + " ms).", (end - start) >= minDelay);
083: }
084:
085: public void testRun1() {
086: TestRunnable tr = createTestRunnable(null);
087: try {
088: tr.run();
089: fail("Did not throw IllegalStateException.");
090: } catch (IllegalStateException e) {
091: // test exception ???
092: }
093: }
094:
095: public void testRun2() throws Throwable {
096: TestRunnable tr = createTestRunnable(null);
097: MultiThreadedTestRunner mttr = new MultiThreadedTestRunner(
098: new TestRunnable[] { tr });
099: try {
100: tr.run();
101: fail("Did not throw IllegalStateException.");
102: } catch (IllegalStateException e) {
103: // test exception ???
104: }
105: }
106:
107: public void testRun3() throws Throwable {
108: TestRunnable tr = createTestRunnable(null);
109: MultiThreadedTestRunner mttr = new MultiThreadedTestRunner(
110: new TestRunnable[] { tr });
111: mttr.runTestRunnables(1000);
112: }
113:
114: public void testRun4() {
115: Throwable t = new Throwable("Ignore");
116: TestRunnable tr = createTestRunnable(t);
117: MultiThreadedTestRunner mttr = new MultiThreadedTestRunner(
118: new TestRunnable[] { tr });
119: try {
120: mttr.runTestRunnables(1000);
121: fail("Did not throw an exception.");
122: } catch (Throwable actualT) {
123: assertEquals("Did not throw the intended exception.",
124: actualT, t);
125: }
126: }
127:
128: //-------------------------------------------------------------------------
129: // Helpers
130:
131: protected TestRunnable createTestRunnable(Throwable throwThis) {
132: return new MyTestRunnable(throwThis);
133: }
134:
135: //-------------------------------------------------------------------------
136: // Standard JUnit declarations
137:
138: public static Test suite() {
139: TestSuite suite = new TestSuite(THIS_CLASS);
140:
141: return suite;
142: }
143:
144: public static void main(String[] args) {
145: String[] name = { THIS_CLASS.getName() };
146:
147: // junit.textui.TestRunner.main( name );
148: // junit.swingui.TestRunner.main( name );
149:
150: junit.textui.TestRunner.main(name);
151: }
152:
153: /**
154: *
155: * @exception Exception thrown under any exceptional condition.
156: */
157: protected void setUp() throws Exception {
158: super .setUp();
159:
160: // set ourself up
161: }
162:
163: /**
164: *
165: * @exception Exception thrown under any exceptional condition.
166: */
167: protected void tearDown() throws Exception {
168: // tear ourself down
169:
170: super.tearDown();
171: }
172: }
|