1package org.junit.rules; 2 3import org.junit.runner.Description; 4import org.junit.runners.model.Statement; 5 6/** 7 * Runs a collection of rules on a statement. 8 */ 9public class RunRules extends Statement { 10 private final Statement statement; 11 12 public RunRules(Statement base, Iterable<TestRule> rules, Description description) { 13 statement= applyAll(base, rules, description); 14 } 15 16 @Override 17 public void evaluate() throws Throwable { 18 statement.evaluate(); 19 } 20 21 private static Statement applyAll(Statement result, Iterable<TestRule> rules, 22 Description description) { 23 for (TestRule each : rules) 24 result= each.apply(result, description); 25 return result; 26 } 27} 28