1 21 package db4ounit.extensions; 22 23 import java.lang.reflect.Method ; 24 25 import com.db4o.foundation.ArgumentNullException; 26 27 import db4ounit.*; 28 29 public class Db4oTestSuiteBuilder extends ReflectionTestSuiteBuilder { 30 31 private static final class Db4oLabelProvider implements TestMethod.LabelProvider { 32 33 public static final TestMethod.LabelProvider DEFAULT = new Db4oLabelProvider(); 34 35 public String getLabel(TestMethod method) { 36 return "[" + fixtureLabel(method) + "] " + TestMethod.DEFAULT_LABEL_PROVIDER.getLabel(method); 37 } 38 39 private String fixtureLabel(TestMethod method) { 40 return ((AbstractDb4oTestCase)method.getSubject()).fixture().getLabel(); 41 } 42 } 43 44 private Db4oFixture _fixture; 45 46 public Db4oTestSuiteBuilder(Db4oFixture fixture, Class clazz) { 47 super(clazz); 48 setFixture(fixture); 49 } 50 51 public Db4oTestSuiteBuilder(Db4oFixture fixture, Class [] classes) { 52 super(classes); 53 setFixture(fixture); 54 } 55 56 private void setFixture(Db4oFixture fixture){ 57 if (null == fixture) throw new ArgumentNullException("fixture"); 58 _fixture = fixture; 59 } 60 61 protected boolean isApplicable(Class clazz) { 62 return _fixture.accept(clazz); 63 } 64 65 protected Object newInstance(Class clazz) { 66 Object instance = super.newInstance(clazz); 67 if (instance instanceof AbstractDb4oTestCase) { 68 ((AbstractDb4oTestCase)instance).fixture(_fixture); 69 } 70 return instance; 71 } 72 73 protected Test createTest(Object instance, Method method) { 74 if (instance instanceof AbstractDb4oTestCase) { 75 return new TestMethod(instance, method, Db4oLabelProvider.DEFAULT); 76 } 77 return super.createTest(instance, method); 78 } 79 } | Popular Tags |