001: package net.sourceforge.squirrel_sql.plugins.oracle.tokenizer;
002:
003: /*
004: * Copyright (C) 2007 Rob Manning
005: * manningr@users.sourceforge.net
006: *
007: * This library is free software; you can redistribute it and/or
008: * modify it under the terms of the GNU Lesser General Public
009: * License as published by the Free Software Foundation; either
010: * version 2.1 of the License, or (at your option) any later version.
011: *
012: * This library is distributed in the hope that it will be useful,
013: * but WITHOUT ANY WARRANTY; without even the implied warranty of
014: * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
015: * Lesser General Public License for more details.
016: *
017: * You should have received a copy of the GNU Lesser General Public
018: * License along with this library; if not, write to the Free Software
019: * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
020: */
021: import static net.sourceforge.squirrel_sql.fw.sql.OracleSQL.ANON_PROC_EXEC;
022: import static net.sourceforge.squirrel_sql.fw.sql.OracleSQL.ANON_PROC_EXEC_2;
023: import static net.sourceforge.squirrel_sql.fw.sql.OracleSQL.CREATE_FUNCTION_SQL;
024: import static net.sourceforge.squirrel_sql.fw.sql.OracleSQL.CREATE_OR_REPLACE_PACKAGE_BODY_SQL;
025: import static net.sourceforge.squirrel_sql.fw.sql.OracleSQL.CREATE_OR_REPLACE_PACKAGE_SQL;
026: import static net.sourceforge.squirrel_sql.fw.sql.OracleSQL.CREATE_OR_REPLACE_STORED_PROC;
027: import static net.sourceforge.squirrel_sql.fw.sql.OracleSQL.CREATE_STORED_PROC;
028: import static net.sourceforge.squirrel_sql.fw.sql.OracleSQL.NO_SEP_SLASH_SQL;
029: import static net.sourceforge.squirrel_sql.fw.sql.OracleSQL.SELECT_DUAL;
030: import static net.sourceforge.squirrel_sql.fw.sql.OracleSQL.SELECT_DUAL_2;
031: import static net.sourceforge.squirrel_sql.fw.sql.OracleSQL.STUDENTS_NOT_TAKING_CS112;
032: import static net.sourceforge.squirrel_sql.fw.sql.OracleSQL.UPDATE_TEST;
033:
034: import java.io.IOException;
035: import java.util.Arrays;
036:
037: import junit.framework.TestCase;
038: import net.sourceforge.squirrel_sql.client.ApplicationManager;
039: import net.sourceforge.squirrel_sql.client.plugin.PluginQueryTokenizerPreferencesManager;
040: import net.sourceforge.squirrel_sql.fw.preferences.IQueryTokenizerPreferenceBean;
041: import net.sourceforge.squirrel_sql.fw.sql.QueryTokenizer;
042: import net.sourceforge.squirrel_sql.fw.sql.SQLUtil;
043: import net.sourceforge.squirrel_sql.plugins.oracle.gui.DummyPlugin;
044: import net.sourceforge.squirrel_sql.plugins.oracle.prefs.OraclePreferenceBean;
045:
046: public class OracleQueryTokenizerTest extends TestCase {
047:
048: static String nullSQL = null;
049: static String tmpFilename = null;
050: static boolean removeMultilineComment = true;
051: static {
052: ApplicationManager.initApplication();
053: }
054:
055: QueryTokenizer qt = null;
056: static int sqlFileStmtCount = 0;
057:
058: static IQueryTokenizerPreferenceBean _prefs;
059:
060: public void setUp() throws Exception {
061: createSQLFile();
062: DummyPlugin plugin = new DummyPlugin();
063: PluginQueryTokenizerPreferencesManager prefsManager = new PluginQueryTokenizerPreferencesManager();
064: prefsManager.initialize(plugin, new OraclePreferenceBean());
065: _prefs = prefsManager.getPreferences();
066: }
067:
068: public void tearDown() {
069:
070: }
071:
072: public void testHasQuery() {
073: qt = new OracleQueryTokenizer(_prefs);
074: qt.setScriptToTokenize(SELECT_DUAL);
075: SQLUtil.checkQueryTokenizer(qt, 1);
076:
077: qt = new OracleQueryTokenizer(_prefs);
078: qt.setScriptToTokenize(SELECT_DUAL_2);
079: SQLUtil.checkQueryTokenizer(qt, 1);
080: }
081:
082: public void testGenericSQL() {
083: String script = SQLUtil.getGenericSQLScript();
084: qt = new OracleQueryTokenizer(_prefs);
085: qt.setScriptToTokenize(script);
086: SQLUtil.checkQueryTokenizer(qt, SQLUtil.getGenericSQLCount());
087: }
088:
089: public void testCreateStoredProcedure() {
090: qt = new OracleQueryTokenizer(_prefs);
091: qt.setScriptToTokenize(CREATE_STORED_PROC);
092: SQLUtil.checkQueryTokenizer(qt, 1);
093: }
094:
095: public void testCreateOrReplaceStoredProcedure() {
096: qt = new OracleQueryTokenizer(_prefs);
097: qt.setScriptToTokenize(CREATE_OR_REPLACE_STORED_PROC);
098: SQLUtil.checkQueryTokenizer(qt, 1);
099: }
100:
101: public void testCreatePackage() {
102: qt = new OracleQueryTokenizer(_prefs);
103: qt.setScriptToTokenize(CREATE_OR_REPLACE_PACKAGE_SQL);
104: SQLUtil.checkQueryTokenizer(qt, 1);
105: }
106:
107: public void testCreatePackageBody() {
108: qt = new OracleQueryTokenizer(_prefs);
109: qt.setScriptToTokenize(CREATE_OR_REPLACE_PACKAGE_BODY_SQL);
110: SQLUtil.checkQueryTokenizer(qt, 1);
111: }
112:
113: public void testHasQueryFromFile() {
114: String fileSQL = "@" + tmpFilename + ";\n";
115: qt = new OracleQueryTokenizer(_prefs);
116: qt.setScriptToTokenize(fileSQL);
117: SQLUtil.checkQueryTokenizer(qt, sqlFileStmtCount);
118: }
119:
120: public void testExecAnonProcedure() {
121: qt = new OracleQueryTokenizer(_prefs);
122: qt.setScriptToTokenize(ANON_PROC_EXEC);
123: SQLUtil.checkQueryTokenizer(qt, 1);
124: }
125:
126: public void testExecAnonProcedure2() {
127: qt = new OracleQueryTokenizer(_prefs);
128: qt.setScriptToTokenize(ANON_PROC_EXEC_2);
129: SQLUtil.checkQueryTokenizer(qt, 1);
130: }
131:
132: public void testNoSepSlash() {
133: qt = new OracleQueryTokenizer(_prefs);
134: qt.setScriptToTokenize(NO_SEP_SLASH_SQL);
135: SQLUtil.checkQueryTokenizer(qt, 2);
136: }
137:
138: private static void createSQLFile() throws IOException {
139: if (tmpFilename != null) {
140: return;
141: }
142: String[] sqls = new String[] { SELECT_DUAL, UPDATE_TEST,
143: CREATE_FUNCTION_SQL, CREATE_STORED_PROC,
144: CREATE_OR_REPLACE_STORED_PROC, ANON_PROC_EXEC,
145: SELECT_DUAL, STUDENTS_NOT_TAKING_CS112,
146: NO_SEP_SLASH_SQL, };
147:
148: tmpFilename = SQLUtil.createSQLFile(Arrays.asList(sqls), true);
149: sqlFileStmtCount = sqls.length;
150: }
151:
152: }
|