1 package junit.tests.framework;
2
3 import junit.framework.*;
4 import junit.tests.WasRun;
5
6 /***
7 * A test case testing the testing framework.
8 *
9 */
10 public class TestCaseTest extends TestCase {
11
12 static class TornDown extends TestCase {
13 boolean fTornDown= false;
14
15 protected void tearDown() {
16 fTornDown= true;
17 }
18 protected void runTest() {
19 throw new Error();
20 }
21 }
22
23 public void testCaseToString() {
24
25
26
27 assertEquals("testCaseToString(junit.tests.framework.TestCaseTest)", toString());
28 }
29 public void testError() {
30 TestCase error= new TestCase("error") {
31 protected void runTest() {
32 throw new Error();
33 }
34 };
35 verifyError(error);
36 }
37 public void testRunAndTearDownFails() {
38 TornDown fails= new TornDown() {
39 protected void tearDown() {
40 super.tearDown();
41 throw new Error();
42 }
43 protected void runTest() {
44 throw new Error();
45 }
46 };
47 verifyError(fails);
48 assertTrue(fails.fTornDown);
49 }
50 public void testSetupFails() {
51 TestCase fails= new TestCase("success") {
52 protected void setUp() {
53 throw new Error();
54 }
55 protected void runTest() {
56 }
57 };
58 verifyError(fails);
59 }
60 public void testSuccess() {
61 TestCase success= new TestCase("success") {
62 protected void runTest() {
63 }
64 };
65 verifySuccess(success);
66 }
67 public void testFailure() {
68 TestCase failure= new TestCase("failure") {
69 protected void runTest() {
70 fail();
71 }
72 };
73 verifyFailure(failure);
74 }
75
76 public void testTearDownAfterError() {
77 TornDown fails= new TornDown();
78 verifyError(fails);
79 assertTrue(fails.fTornDown);
80 }
81
82 public void testTearDownFails() {
83 TestCase fails= new TestCase("success") {
84 protected void tearDown() {
85 throw new Error();
86 }
87 protected void runTest() {
88 }
89 };
90 verifyError(fails);
91 }
92 public void testTearDownSetupFails() {
93 TornDown fails= new TornDown() {
94 protected void setUp() {
95 throw new Error();
96 }
97 };
98 verifyError(fails);
99 assertTrue(!fails.fTornDown);
100 }
101 public void testWasRun() {
102 WasRun test= new WasRun();
103 test.run();
104 assertTrue(test.fWasRun);
105 }
106 public void testExceptionRunningAndTearDown() {
107
108
109
110 Test t= new TornDown() {
111 public void tearDown() {
112 throw new Error("tearDown");
113 }
114 };
115 TestResult result= new TestResult();
116 t.run(result);
117 TestFailure failure= (TestFailure) result.errors().nextElement();
118 assertEquals("tearDown", failure.thrownException().getMessage());
119 }
120
121 public void testNoArgTestCasePasses() {
122 Test t= new TestSuite(NoArgTestCaseTest.class);
123 TestResult result= new TestResult();
124 t.run(result);
125 assertTrue(result.runCount() == 1);
126 assertTrue(result.failureCount() == 0);
127 assertTrue(result.errorCount() == 0);
128 }
129
130 public void testNamelessTestCase() {
131 TestCase t= new TestCase() {};
132 try {
133 t.run();
134 fail();
135 } catch (AssertionFailedError e) {
136 }
137 }
138
139 void verifyError(TestCase test) {
140 TestResult result= test.run();
141 assertTrue(result.runCount() == 1);
142 assertTrue(result.failureCount() == 0);
143 assertTrue(result.errorCount() == 1);
144 }
145 void verifyFailure(TestCase test) {
146 TestResult result= test.run();
147 assertTrue(result.runCount() == 1);
148 assertTrue(result.failureCount() == 1);
149 assertTrue(result.errorCount() == 0);
150 }
151 void verifySuccess(TestCase test) {
152 TestResult result= test.run();
153 assertTrue(result.runCount() == 1);
154 assertTrue(result.failureCount() == 0);
155 assertTrue(result.errorCount() == 0);
156 }
157 }