1b3823db9f1192d8c81345740b3e65bd6738ba55bBrett Chabot/**
2b3823db9f1192d8c81345740b3e65bd6738ba55bBrett Chabot *
3b3823db9f1192d8c81345740b3e65bd6738ba55bBrett Chabot */
4b3823db9f1192d8c81345740b3e65bd6738ba55bBrett Chabotpackage org.junit.internal.runners.statements;
5b3823db9f1192d8c81345740b3e65bd6738ba55bBrett Chabot
6b3823db9f1192d8c81345740b3e65bd6738ba55bBrett Chabotimport java.util.List;
7b3823db9f1192d8c81345740b3e65bd6738ba55bBrett Chabot
8b3823db9f1192d8c81345740b3e65bd6738ba55bBrett Chabotimport org.junit.runners.model.FrameworkMethod;
9b3823db9f1192d8c81345740b3e65bd6738ba55bBrett Chabotimport org.junit.runners.model.Statement;
10b3823db9f1192d8c81345740b3e65bd6738ba55bBrett Chabot
11b3823db9f1192d8c81345740b3e65bd6738ba55bBrett Chabotpublic class RunBefores extends Statement {
12b3823db9f1192d8c81345740b3e65bd6738ba55bBrett Chabot	private final Statement fNext;
13b3823db9f1192d8c81345740b3e65bd6738ba55bBrett Chabot
14b3823db9f1192d8c81345740b3e65bd6738ba55bBrett Chabot	private final Object fTarget;
15b3823db9f1192d8c81345740b3e65bd6738ba55bBrett Chabot
16b3823db9f1192d8c81345740b3e65bd6738ba55bBrett Chabot	private final List<FrameworkMethod> fBefores;
17b3823db9f1192d8c81345740b3e65bd6738ba55bBrett Chabot
18b3823db9f1192d8c81345740b3e65bd6738ba55bBrett Chabot	public RunBefores(Statement next, List<FrameworkMethod> befores, Object target) {
19b3823db9f1192d8c81345740b3e65bd6738ba55bBrett Chabot		fNext= next;
20b3823db9f1192d8c81345740b3e65bd6738ba55bBrett Chabot		fBefores= befores;
21b3823db9f1192d8c81345740b3e65bd6738ba55bBrett Chabot		fTarget= target;
22b3823db9f1192d8c81345740b3e65bd6738ba55bBrett Chabot	}
23b3823db9f1192d8c81345740b3e65bd6738ba55bBrett Chabot
24b3823db9f1192d8c81345740b3e65bd6738ba55bBrett Chabot	@Override
25b3823db9f1192d8c81345740b3e65bd6738ba55bBrett Chabot	public void evaluate() throws Throwable {
26b3823db9f1192d8c81345740b3e65bd6738ba55bBrett Chabot		for (FrameworkMethod before : fBefores)
27b3823db9f1192d8c81345740b3e65bd6738ba55bBrett Chabot			before.invokeExplosively(fTarget);
28b3823db9f1192d8c81345740b3e65bd6738ba55bBrett Chabot		fNext.evaluate();
29b3823db9f1192d8c81345740b3e65bd6738ba55bBrett Chabot	}
30b3823db9f1192d8c81345740b3e65bd6738ba55bBrett Chabot}