/* * Copyright 2006 Edward Kuns * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * * $Id: OnlySourceGenerationTestCase.java 0000 2006-10-05 22:00:00Z ekuns $ */ package org.castor.xmlctf; import junit.framework.Test; import junit.framework.TestSuite; import org.exolab.castor.tests.framework.testDescriptor.OnlySourceGenerationTest; import org.exolab.castor.tests.framework.testDescriptor.UnitTestCase; import org.exolab.castor.xml.XMLContext; /** * This class encapsulate all the logic to run the tests patterns for the source * generator. It is able to run the source generator by itself and then compile * the file that have been generated. This class does not do anything additional. * It only runs the source generator and ensures that the generated source will * compile without error. * * @author <a href="mailto:edward.kuns@aspect.com">Edward Kuns</a> * @version $Revision: 0000 $ $Date: $ */ public class OnlySourceGenerationTestCase extends XMLTestCase { /** We add this fixed string to the end of our testcase name. */ private static final String ONLY_GENERATION = "_OnlySourceGeneration"; /** Generates and compiles source in a test harness, but does nothing else. */ private final TestSourceGenerator _sourceGenerator; /** * Creates a new test case for the given setup. * * @param test the reference to the jar/directory * @param unit the UnitTestCase that wraps the configuration for this XML * Test case. * @param sourceGen the Source Generator test to be executed * @param outputRoot the directory that contains the files needed for the * test */ public OnlySourceGenerationTestCase(final CastorTestCase test, final UnitTestCase unit, final OnlySourceGenerationTest sourceGen) { super(test, unit); _sourceGenerator = new TestSourceGenerator(test, unit, sourceGen); } /** * Create a new SourceGeneratorTestCase with the given name. * @param name name for the test case */ public OnlySourceGenerationTestCase(final String name) { super(name); _sourceGenerator = null; } /** * Returns the test suite for this given test setup. * @return the test suite for this given test setup. */ public Test suite() { TestSuite suite = new TestSuite(_name); String name = getTestSuiteName(); name = (name != null) ? name + "#" + _name : _name; this.setName(name + ONLY_GENERATION); suite.addTest(this); return suite; } /** * Sets up this test suite. * @throws java.lang.Exception if anything goes wrong */ protected void setUp() throws java.lang.Exception { verbose("\n================================================"); verbose("Test suite '"+_test.getName()+"': setting up test '" + _name+"'"); verbose("================================================\n"); if (getXMLContext() == null) { // not wrapped inside a TestWithXy test! setXMLContext(new XMLContext()); } _sourceGenerator.setXMLContext(getXMLContext()); _sourceGenerator.setUp(); } public void runTest() { _sourceGenerator.runTest(); verbose("-->Done"); } /** * Cleans up after this unit test (nothing to do except provide output). * @throws java.lang.Exception never */ protected void tearDown() throws java.lang.Exception { verbose("\n================================================"); verbose("Test suite '"+_test.getName()+"': test '" + _name+"' complete."); verbose("================================================\n"); _sourceGenerator.tearDown(); } }