1 | /* |
2 | * JTiger Unit Testing Framework for J2SE 1.5 |
3 | * Copyright (C) 2005 Tony Morris |
4 | * |
5 | * This software is licenced under the |
6 | * Common Public Licence version 1.0 |
7 | * http://www.opensource.org/licenses/cpl1.0.php |
8 | * |
9 | * You received a copy of this licence with this software. |
10 | */ |
11 | package org.jtiger.framework; |
12 | |
13 | import java.util.ArrayList; |
14 | import java.util.LinkedList; |
15 | import java.util.List; |
16 | import static org.jtiger.framework.FixtureRunnerFactory.newFixtureRunner; |
17 | import static org.jtiger.framework.FixtureResultsFactory.newFixtureResults; |
18 | |
19 | /** |
20 | * Returns instances of {@link FixturesRunner}. |
21 | * |
22 | * @see FixturesRunner |
23 | * @author %javadoc.author.tag% |
24 | * @version %version%<br/> |
25 | * <i>Build Number %build.number%</i><br/> |
26 | * <i>Build Time %build.time% CET (GMT + 1)</i> |
27 | */ |
28 | public final class FixturesRunnerFactory |
29 | { |
30 | private FixturesRunnerFactory() |
31 | { |
32 | |
33 | } |
34 | |
35 | /** |
36 | * Returns a new instance of {@link FixturesRunner}. |
37 | * |
38 | * @return A new instance of {@link FixturesRunner}. |
39 | */ |
40 | public static FixturesRunner newFixturesRunner() |
41 | { |
42 | return new FixturesRunnerImpl(); |
43 | } |
44 | |
45 | private static final class FixturesRunnerImpl implements FixturesRunner |
46 | { |
47 | FixturesRunnerImpl() |
48 | { |
49 | |
50 | } |
51 | |
52 | public FixtureResults run(final FixturesRunnerConfig config) |
53 | throws RunnerException, NullPointerException |
54 | { |
55 | if(config == null) |
56 | { |
57 | throw new NullPointerException(); |
58 | } |
59 | |
60 | final ReadOnlyArray<Class<?>> fixtureClasses = config.getFixtureClasses(); |
61 | final Class<? extends TestDefinition> definitionClass = config.getDefinitionClass(); |
62 | final Class<? extends SetUpTearDown> sutdClass = config.getSutdClass(); |
63 | final boolean haltOnFailure = config.isHaltOnFailure(); |
64 | final ReadOnlyArray<String> categories = config.getCategories(); |
65 | |
66 | if(fixtureClasses == null) |
67 | { |
68 | return newFixtureResults(new ArrayList<FixtureResult>(0)); |
69 | } |
70 | |
71 | final List<FixtureResult> results = new LinkedList<FixtureResult>(); |
72 | |
73 | final FixtureRunner runner = newFixtureRunner(); |
74 | |
75 | for(final Class<?> fixtureClass : fixtureClasses) |
76 | { |
77 | final FixtureResult result = runner.run(fixtureClass, definitionClass, sutdClass, haltOnFailure, categories); |
78 | results.add(result); |
79 | } |
80 | |
81 | return newFixtureResults(results); |
82 | } |
83 | } |
84 | } |
85 | |