158a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabotpackage junit.extensions;
258a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot
358a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabotimport junit.framework.Assert;
458a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabotimport junit.framework.Test;
558a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabotimport junit.framework.TestResult;
658a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot
758a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot/**
8b3823db9f1192d8c81345740b3e65bd6738ba55bBrett Chabot * A Decorator for Tests. Use TestDecorator as the base class for defining new
9b3823db9f1192d8c81345740b3e65bd6738ba55bBrett Chabot * test decorators. Test decorator subclasses can be introduced to add behaviour
10b3823db9f1192d8c81345740b3e65bd6738ba55bBrett Chabot * before or after a test is run.
11b3823db9f1192d8c81345740b3e65bd6738ba55bBrett Chabot *
1258a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot */
1358a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabotpublic class TestDecorator extends Assert implements Test {
1458a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot	protected Test fTest;
1558a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot
1658a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot	public TestDecorator(Test test) {
1758a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot		fTest= test;
1858a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot	}
19b3823db9f1192d8c81345740b3e65bd6738ba55bBrett Chabot
2058a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot	/**
2158a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot	 * The basic run behaviour.
2258a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot	 */
2358a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot	public void basicRun(TestResult result) {
2458a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot		fTest.run(result);
2558a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot	}
26b3823db9f1192d8c81345740b3e65bd6738ba55bBrett Chabot
2758a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot	public int countTestCases() {
2858a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot		return fTest.countTestCases();
2958a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot	}
30b3823db9f1192d8c81345740b3e65bd6738ba55bBrett Chabot
3158a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot	public void run(TestResult result) {
3258a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot		basicRun(result);
3358a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot	}
3458a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot
35b3823db9f1192d8c81345740b3e65bd6738ba55bBrett Chabot	@Override
3658a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot	public String toString() {
3758a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot		return fTest.toString();
3858a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot	}
3958a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot
4058a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot	public Test getTest() {
4158a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot		return fTest;
4258a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot	}
4358a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot}