aboutsummaryrefslogtreecommitdiff
path: root/src/org/junit/rules/RunRules.java
blob: d5905b94df0c4f974e9c5a12a02ebc229b5a10aa (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
package org.junit.rules;

import org.junit.runner.Description;
import org.junit.runners.model.Statement;

/**
 * Runs a collection of rules on a statement.
 */
public class RunRules extends Statement {
	private final Statement statement;

	public RunRules(Statement base, Iterable<TestRule> rules, Description description) {
		statement= applyAll(base, rules, description);
	}
	
	@Override
	public void evaluate() throws Throwable {
		statement.evaluate();
	}

	private static Statement applyAll(Statement result, Iterable<TestRule> rules,
			Description description) {
		for (TestRule each : rules)
			result= each.apply(result, description);
		return result;
	}
}