158a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabotpackage junit.extensions;
258a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot
358a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabotimport junit.framework.Protectable;
458a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabotimport junit.framework.Test;
558a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabotimport junit.framework.TestResult;
658a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot
758a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot/**
858a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot * A Decorator to set up and tear down additional fixture state.
958a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot * Subclass TestSetup and insert it into your tests when you want
1058a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot * to set up additional state once before the tests are run.
1158a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot */
1258a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabotpublic class TestSetup extends TestDecorator {
1358a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot
1458a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot	public TestSetup(Test test) {
1558a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot		super(test);
1658a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot	}
1758a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot	public void run(final TestResult result) {
1858a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot		Protectable p= new Protectable() {
1958a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot			public void protect() throws Exception {
2058a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot				setUp();
2158a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot				basicRun(result);
2258a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot				tearDown();
2358a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot			}
2458a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot		};
2558a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot		result.runProtected(this, p);
2658a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot	}
2758a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot	/**
2858a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot	 * Sets up the fixture. Override to set up additional fixture
2958a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot	 * state.
3058a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot	 */
3158a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot	protected void setUp() throws Exception {
3258a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot	}
3358a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot	/**
3458a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot	 * Tears down the fixture. Override to tear down the additional
3558a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot	 * fixture state.
3658a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot	 */
3758a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot	protected void tearDown() throws Exception {
3858a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot	}
3958a8b0aba2dec5695628a2bf25a3fae42c2c3533Brett Chabot}