1package junit.extensions;
2
3import junit.framework.Test;
4import junit.framework.TestResult;
5
6/**
7 * A Decorator that runs a test repeatedly.
8 *
9 */
10public class RepeatedTest extends TestDecorator {
11	private int fTimesRepeat;
12
13	public RepeatedTest(Test test, int repeat) {
14		super(test);
15		if (repeat < 0)
16			throw new IllegalArgumentException("Repetition count must be >= 0");
17		fTimesRepeat= repeat;
18	}
19
20	@Override
21	public int countTestCases() {
22		return super.countTestCases() * fTimesRepeat;
23	}
24
25	@Override
26	public void run(TestResult result) {
27		for (int i= 0; i < fTimesRepeat; i++) {
28			if (result.shouldStop())
29				break;
30			super.run(result);
31		}
32	}
33
34	@Override
35	public String toString() {
36		return super.toString() + "(repeated)";
37	}
38}