AMLSim
/
jars_archive
/mysql-connector-java-5.1.10
/src
/testsuite
/simple
/EscapeProcessingTest.java
/* | |
Copyright 2002-2004 MySQL AB, 2008 Sun Microsystems | |
This program is free software; you can redistribute it and/or modify | |
it under the terms of version 2 of the GNU General Public License as | |
published by the Free Software Foundation. | |
There are special exceptions to the terms and conditions of the GPL | |
as it is applied to this software. View the full text of the | |
exception in file EXCEPTIONS-CONNECTOR-J in the directory of this | |
software distribution. | |
This program is distributed in the hope that it will be useful, | |
but WITHOUT ANY WARRANTY; without even the implied warranty of | |
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
GNU General Public License for more details. | |
You should have received a copy of the GNU General Public License | |
along with this program; if not, write to the Free Software | |
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA | |
*/ | |
package testsuite.simple; | |
import java.sql.Connection; | |
import java.util.Properties; | |
import java.util.TimeZone; | |
import testsuite.BaseTestCase; | |
/** | |
* Tests escape processing | |
* | |
* @author Mark Matthews | |
*/ | |
public class EscapeProcessingTest extends BaseTestCase { | |
// ~ Constructors | |
// ----------------------------------------------------------- | |
/** | |
* Constructor for EscapeProcessingTest. | |
* | |
* @param name | |
* the test to run | |
*/ | |
public EscapeProcessingTest(String name) { | |
super(name); | |
} | |
// ~ Methods | |
// ---------------------------------------------------------------- | |
/** | |
* Tests the escape processing functionality | |
* | |
* @throws Exception | |
* if an error occurs | |
*/ | |
public void testEscapeProcessing() throws Exception { | |
String results = "select dayname (abs(now())), -- Today \n" | |
+ " '1997-05-24', -- a date \n" | |
+ " '10:30:29', -- a time \n" | |
+ " '1997-05-24 10:30:29', -- a timestamp \n" | |
+ " '{string data with { or } will not be altered' \n" | |
+ "-- Also note that you can safely include { and } in comments"; | |
String exSql = "select {fn dayname ({fn abs({fn now()})})}, -- Today \n" | |
+ " {d '1997-05-24'}, -- a date \n" | |
+ " {t '10:30:29' }, -- a time \n" | |
+ " {ts '1997-05-24 10:30:29.123'}, -- a timestamp \n" | |
+ " '{string data with { or } will not be altered' \n" | |
+ "-- Also note that you can safely include { and } in comments"; | |
String escapedSql = this.conn.nativeSQL(exSql); | |
assertTrue(results.equals(escapedSql)); | |
} | |
/** | |
* Runs all test cases in this test suite | |
* | |
* @param args | |
*/ | |
public static void main(String[] args) { | |
junit.textui.TestRunner.run(EscapeProcessingTest.class); | |
} | |
/** | |
* JDBC-4.0 spec will allow either SQL_ or not for type in {fn convert ...} | |
* | |
* @throws Exception | |
* if the test fails | |
*/ | |
public void testConvertEscape() throws Exception { | |
assertEquals(conn.nativeSQL("{fn convert(abcd, SQL_INTEGER)}"), conn | |
.nativeSQL("{fn convert(abcd, INTEGER)}")); | |
} | |
/** | |
* Tests that the escape tokenizer converts timestamp values | |
* wrt. timezones when useTimezone=true. | |
* | |
* @throws Exception if the test fails. | |
*/ | |
public void testTimestampConversion() throws Exception { | |
TimeZone currentTimezone = TimeZone.getDefault(); | |
String[] availableIds = TimeZone.getAvailableIDs(currentTimezone.getRawOffset() + (3600 * 1000 * 2)); | |
String newTimezone = null; | |
if (availableIds.length > 0) { | |
newTimezone = availableIds[0]; | |
} else { | |
newTimezone = "UTC"; // punt | |
} | |
Properties props = new Properties(); | |
props.setProperty("useTimezone", "true"); | |
props.setProperty("serverTimezone", newTimezone); | |
Connection tzConn = null; | |
try { | |
String escapeToken = "SELECT {ts '2002-11-12 10:00:00'} {t '05:11:02'}"; | |
tzConn = getConnectionWithProps(props); | |
assertTrue(!tzConn.nativeSQL(escapeToken).equals(this.conn.nativeSQL(escapeToken))); | |
} finally { | |
if (tzConn != null) { | |
tzConn.close(); | |
} | |
} | |
} | |
} | |