package junit.tests.framework;
import java.util.Collections;
import junit.framework.Test;
import junit.framework.TestCase;
import junit.framework.TestResult;
import junit.framework.TestSuite;
/**
* A fixture for testing the "auto" test suite feature.
*
*/
public class SuiteTest extends TestCase {
protected TestResult fResult;
public SuiteTest(String name) {
super(name);
}
@Override
protected void setUp() {
fResult= new TestResult();
}
public static Test suite() {
TestSuite suite= new TestSuite("Suite Tests");
// build the suite manually, because some of the suites are testing
// the functionality that automatically builds suites
suite.addTest(new SuiteTest("testNoTestCases"));
suite.addTest(new SuiteTest("testOneTestCase"));
suite.addTest(new SuiteTest("testNotPublicTestCase"));
suite.addTest(new SuiteTest("testNotVoidTestCase"));
suite.addTest(new SuiteTest("testNotExistingTestCase"));
suite.addTest(new SuiteTest("testInheritedTests"));
suite.addTest(new SuiteTest("testOneTestCaseEclipseSeesSameStructureAs381"));
suite.addTest(new SuiteTest("testNoTestCaseClass"));
suite.addTest(new SuiteTest("testShadowedTests"));
suite.addTest(new SuiteTest("testAddTestSuite"));
suite.addTest(new SuiteTest("testCreateSuiteFromArray"));
return suite;
}
public void testInheritedTests() {
TestSuite suite= new TestSuite(InheritedTestCase.class);
suite.run(fResult);
assertTrue(fResult.wasSuccessful());
assertEquals(2, fResult.runCount());
}
public void testNoTestCaseClass() {
Test t= new TestSuite(NoTestCaseClass.class);
t.run(fResult);
assertEquals(1, fResult.runCount()); // warning test
assertTrue(! fResult.wasSuccessful());
}
public void testNoTestCases() {
Test t= new TestSuite(NoTestCases.class);
t.run(fResult);
assertTrue(fResult.runCount() == 1); // warning test
assertTrue(fResult.failureCount() == 1);
assertTrue(! fResult.wasSuccessful());
}
public void testNotExistingTestCase() {
Test t= new SuiteTest("notExistingMethod");
t.run(fResult);
assertTrue(fResult.runCount() == 1);
assertTrue(fResult.failureCount() == 1);
assertTrue(fResult.errorCount() == 0);
}
public void testNotPublicTestCase() {
TestSuite suite= new TestSuite(NotPublicTestCase.class);
// 1 public test case + 1 warning for the non-public test case
assertEquals(2, suite.countTestCases());
}
public void testNotVoidTestCase() {
TestSuite suite= new TestSuite(NotVoidTestCase.class);
assertTrue(suite.countTestCases() == 1);
}
public void testOneTestCase() {
TestSuite t= new TestSuite(OneTestCase.class);
t.run(fResult);
assertTrue(fResult.runCount() == 1);
assertTrue(fResult.failureCount() == 0);
assertTrue(fResult.errorCount() == 0);
assertTrue(fResult.wasSuccessful());
}
public void testOneTestCaseEclipseSeesSameStructureAs381() {
TestSuite t= new TestSuite(ThreeTestCases.class);
assertEquals(3, Collections.list(t.tests()).size());
}
public void testShadowedTests() {
TestSuite suite= new TestSuite(OverrideTestCase.class);
suite.run(fResult);
assertEquals(1, fResult.runCount());
}
public void testAddTestSuite() {
TestSuite suite= new TestSuite();
suite.addTestSuite(OneTestCase.class);
suite.run(fResult);
assertEquals(1, fResult.runCount());
}
public void testCreateSuiteFromArray() {
TestSuite suite = new TestSuite(OneTestCase.class, DoublePrecisionAssertTest.class);
assertEquals(2, suite.testCount());
assertEquals("junit.tests.framework.DoublePrecisionAssertTest" , ((TestSuite)suite.testAt(1)).getName());
assertEquals("junit.tests.framework.OneTestCase" , ((TestSuite)suite.testAt(0)).getName());
}
}