package junit.extensions;

import junit.framework.* ;

/**
 * A Decorator that runs a test repeatedly.
 *
 */
public class RepeatedTest extends  TestDecorator {
        private int fTimesRepeat;

        public RepeatedTest(Test test, int repeat) {
                super(test);
                if (repeat < 0)
                        throw new IllegalArgumentException("Repetition count must be > 0");
                fTimesRepeat = repeat;
        }

        public int countTestCases() {
                return super.countTestCases() * fTimesRepeat;
        }

        public void run(TestResult result) {
                for (int i = 0; i < fTimesRepeat; i++) {
                        if (result.shouldStop())
                                break;
                        super.run(result);
                }
        }

        public String toString() {
                return super.toString() + "(repeated)";
        }
}