001: /*
002: *
003: * Derby - Class org.apache.derbyTesting.functionTests.tests.lang.LangScripts
004: *
005: * Licensed to the Apache Software Foundation (ASF) under one or more
006: * contributor license agreements. See the NOTICE file distributed with
007: * this work for additional information regarding copyright ownership.
008: * The ASF licenses this file to You under the Apache License, Version 2.0
009: * (the "License"); you may not use this file except in compliance with
010: * the License. You may obtain a copy of the License at
011: *
012: * http://www.apache.org/licenses/LICENSE-2.0
013: *
014: * Unless required by applicable law or agreed to in writing,
015: * software distributed under the License is distributed on an
016: * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND,
017: * either express or implied. See the License for the specific
018: * language governing permissions and limitations under the License.
019: */
020: package org.apache.derbyTesting.functionTests.tests.lang;
021:
022: import junit.framework.Test;
023: import junit.framework.TestSuite;
024:
025: import org.apache.derbyTesting.functionTests.util.ScriptTestCase;
026: import org.apache.derbyTesting.junit.CleanDatabaseTestSetup;
027:
028: /**
029: * LangScripts runs SQL scripts (.sql files) in the lang package
030: * and compares the output to a canon file in the
031: * standard master package.
032: * <BR>
033: * Its suite() method returns a set of tests where each test is an instance of
034: * this class for an individual script wrapped in a clean database decorator.
035: * <BR>
036: * It can also be used as a command line program to run one or more
037: * language based SQL scripts as tests.
038: *
039: */
040: public final class LangScripts extends ScriptTestCase {
041:
042: /**
043: * Language SQL scripts (.sql files) that run under all configurations.
044: */
045: private static final String[] SQL_LANGUAGE_TESTS = { "case",
046: "constantExpression", };
047:
048: /**
049: * Language SQL scripts (.sql files) that run under Derby's client configurations.
050: */
051: private static final String[] DERBY_TESTS = { "bit2", "derived", };
052:
053: /**
054: * Language SQL scripts (.sql files) that only run in embedded.
055: */
056: private static final String[] EMBEDDED_TESTS = { "arithmetic",
057: "depend", "union", };
058:
059: /**
060: * Run a set of language SQL scripts (.sql files) passed in on the
061: * command line. Note the .sql suffix must not be provided as
062: * part of the script name.
063: * <code>
064: * example
065: * java org.apache.derbyTesting.functionTests.tests.lang.LangScripts case union
066: * </code>
067: */
068: public static void main(String[] args) {
069: junit.textui.TestRunner.run(getSuite(args));
070: }
071:
072: /**
073: * Return the suite that runs all the langauge SQL scripts.
074: */
075: public static Test suite() {
076: TestSuite suite = new TestSuite();
077: suite.addTest(getSuite(SQL_LANGUAGE_TESTS));
078:
079: if (usingEmbedded() || usingDerbyNetClient())
080: suite.addTest(getSuite(DERBY_TESTS));
081:
082: if (usingEmbedded())
083: suite.addTest(getSuite(EMBEDDED_TESTS));
084:
085: return suite;
086: }
087:
088: /*
089: * A single JUnit test that runs a single language SQL script.
090: */
091: private LangScripts(String langTest) {
092: super (langTest);
093: }
094:
095: /**
096: * Return a suite of language SQL tests from the list of
097: * script names. Each test is surrounded in a decorator
098: * that cleans the database.
099: */
100: private static Test getSuite(String[] list) {
101: TestSuite suite = new TestSuite();
102: for (int i = 0; i < list.length; i++)
103: suite.addTest(new CleanDatabaseTestSetup(new LangScripts(
104: list[i])));
105:
106: return getIJConfig(suite);
107: }
108: }
|