01: /*
02: Copyright (C) 2005-2007 MySQL AB
03:
04: This program is free software; you can redistribute it and/or modify
05: it under the terms of version 2 of the GNU General Public License as
06: published by the Free Software Foundation.
07:
08: There are special exceptions to the terms and conditions of the GPL
09: as it is applied to this software. View the full text of the
10: exception in file EXCEPTIONS-CONNECTOR-J in the directory of this
11: software distribution.
12:
13: This program is distributed in the hope that it will be useful,
14: but WITHOUT ANY WARRANTY; without even the implied warranty of
15: MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16: GNU General Public License for more details.
17:
18: You should have received a copy of the GNU General Public License
19: along with this program; if not, write to the Free Software
20: Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
21:
22: */
23: package testsuite.regression;
24:
25: import testsuite.BaseTestCase;
26:
27: /**
28: * Tests regressions w/ the Escape Processor code.
29: *
30: * @version $Id:$
31: *
32: */
33: public class EscapeProcessorRegressionTest extends BaseTestCase {
34:
35: public EscapeProcessorRegressionTest(String name) {
36: super (name);
37: // TODO Auto-generated constructor stub
38: }
39:
40: /**
41: * @param args
42: */
43: public static void main(String[] args) {
44: // TODO Auto-generated method stub
45:
46: }
47:
48: /**
49: * Tests fix for BUG#11797 - Escape tokenizer doesn't respect stacked single
50: * quotes for escapes.
51: *
52: * @throws Exception
53: * if the test fails.
54: */
55: public void testBug11797() throws Exception {
56: assertEquals(
57: "select 'ESCAPED BY ''\\'' ON {tbl_name | * | *.* | db_name.*}'",
58: this .conn
59: .nativeSQL("select 'ESCAPED BY ''\\'' ON {tbl_name | * | *.* | db_name.*}'"));
60: }
61:
62: /**
63: * Tests fix for BUG#11498 - Escape processor didn't honor strings
64: * demarcated with double quotes.
65: *
66: * @throws Exception
67: * if the test fails.
68: */
69: public void testBug11498() throws Exception {
70: assertEquals(
71: "replace into t1 (id, f1, f4) VALUES(1,\"\",\"tko { zna gdje se sakrio\"),(2,\"a\",\"sedmi { kontinentio\"),(3,\"a\",\"a } cigov si ti?\")",
72: this .conn
73: .nativeSQL("replace into t1 (id, f1, f4) VALUES(1,\"\",\"tko { zna gdje se sakrio\"),(2,\"a\",\"sedmi { kontinentio\"),(3,\"a\",\"a } cigov si ti?\")"));
74:
75: }
76:
77: /**
78: * Tests fix for BUG#14909 - escape processor replaces quote character in
79: * quoted string with string delimiter.
80: *
81: * @throws Exception
82: */
83: public void testBug14909() throws Exception {
84: assertEquals("select '{\"','}'", this .conn
85: .nativeSQL("select '{\"','}'"));
86: }
87:
88: /**
89: * Tests fix for BUG#25399 - EscapeProcessor gets confused by multiple backslashes
90: *
91: * @throws Exception if the test fails.
92: */
93: public void testBug25399() throws Exception {
94: assertEquals("\\' {d}",
95: getSingleValueWithQuery("SELECT '\\\\\\' {d}'"));
96: }
97: }
|