1 package org.codehaus.mojo.sql;
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22 import junit.framework.TestCase;
23
24 public class SqlSplitterTest extends TestCase {
25
26 public void testContainsSqlString() throws Exception {
27 containsNot("");
28 containsNot(" ");
29 containsNot(" \t ");
30
31 contains(";", 1);
32 contains("SELECT * from myTable;", 22);
33
34 contains("SELECT * from myTable; -- with sl comment", 22);
35 contains("SELECT * from myTable; /* with part comment */", 22);
36
37 contains("SELECT * from myTable /* with part comment inside*/ ; ", 54);
38
39 contains("SELECT * from myTable /* with ; semicolon*/ ; ", 46);
40
41 contains("INSERT INTO testTable (thevalue) VALUES ('value !'); -- comment at the end", 53);
42
43
44 contains("INSERT INTO testTable (thevalue) VALUES ('value \" !');", 55);
45
46
47 contains("INSERT INTO testTable (thevalue) VALUES (\"value ' !\");", 55);
48
49 contains("INSERT INTO testTable (thevalue) VALUES (\"value -- \");", 55);
50 contains("INSERT INTO testTable (thevalue) VALUES ('value -- ');", 55);
51
52 containsNot("SELECT * from myTable where value = ';' AND -- semicolon is quoted!");
53
54 contains("INSERT INTO testTable (thevalue) VALUES (' text '' other ');", 60);
55
56 }
57
58 public void testMsSQLStrings() throws Exception {
59 String del = "GO";
60
61 containsNot("SELECT COUNT(*) FROM Logs", del);
62 containsNot("SELECT * FROM TPersons", del);
63 contains("GO", del, 2);
64 }
65
66 private void contains(String sql, int expectedIndex) throws Exception {
67 contains(sql, ";", expectedIndex);
68 }
69
70 private void containsNot(String sql) throws Exception {
71 containsNot(sql, ";");
72 }
73
74 private void contains(String sql, String delimiter, int expectedIndex) throws Exception {
75 assertEquals(sql, SqlSplitter.containsSqlEnd(sql, delimiter), expectedIndex);
76 }
77
78 private void containsNot(String sql, String delimiter) throws Exception {
79 assertTrue(sql, SqlSplitter.containsSqlEnd(sql, delimiter) == SqlSplitter.NO_END);
80 }
81 }