// Copyright (C) 2003-2009 by Object Mentor, Inc. All rights reserved.
// Released under the terms of the CPL Common Public License version 1.0.
package fitnesse.testutil;
import java.lang.reflect.Method;
import junit.framework.Test;
import junit.framework.TestSuite;
public class TestSuiteMaker {
public static Test makeSuite(String name, Class<?>[] tests) {
TestSuite suite = new TestSuite(name);
for (int i = 0; i < tests.length; i++) {
Class<?> test = tests[i];
try {
if (isSuite(test))
suite.addTest(getSuite(test));
else
suite.addTest(new TestSuite(test));
}
catch (Exception e) {
System.err.println("Problem adding test to suite: " + test.getName());
}
}
return suite;
}
public static boolean isSuite(Class<?> test) {
Method suite = getSuiteMethod(test);
return suite != null;
}
private static Method getSuiteMethod(Class<?> test) {
Method suite = null;
try {
suite = test.getDeclaredMethod("suite", new Class<?>[]{});
}
catch (NoSuchMethodException e) {
}
return suite;
}
public static Test getSuite(Class<?> test) throws Exception {
Method suite = getSuiteMethod(test);
return (Test) suite.invoke(null, new Object[]{});
}
}