1 16 package scriptella.jdbc; 17 18 import scriptella.AbstractTestCase; 19 20 import java.io.StringReader ; 21 import java.util.Set ; 22 import java.util.TreeSet ; 23 24 30 public class SQLParserBaseTest extends AbstractTestCase { 31 public void test() { 32 String s = "-not skipped\n/*+ HintOrComment*/\n" + 33 " \n" + 34 " CREATE TABLE Test (\n" + 35 " ID INT,\n" + 36 " $VALUE VARCHAR(255)\n" + 37 " );\n" + 38 " ${extra}\n" + 39 " insert into test(id, value) values (?1, '?justatext');\n" + 40 " insert into test(id, value) values (?value,'A test?{justatext}');\n" + 41 " insert into test(id, value) values (3,?text);\n" + 42 " //comment$justatext ?{justatext} ?justatext\n"; 43 final String [] expected = { 45 "-not skipped\n/*+ HintOrComment*/\nCREATE TABLE Test (\n" + 46 " ID INT,\n" + 47 " $/VALUE/ VARCHAR(255)\n" + 48 " )", 49 " $/extra/" + 50 " insert into test(id, value) values (?/1/, '?justatext')", 51 " insert into test(id, value) values (?/value/,'A test?{justatext}')", 52 " insert into test(id, value) values (3,?/text/)", 53 " //comment$justatext ?{justatext} ?justatext\n"}; 54 55 56 final Set <String > exprSet = new TreeSet <String >(); 57 exprSet.add("extra"); 58 final Set <String > propSet = new TreeSet <String >(); 59 propSet.add("1"); 60 propSet.add("value"); 61 propSet.add("VALUE"); 62 propSet.add("text"); 63 64 65 SqlParserBase p = new SqlParserBase() { 66 int stInd; 67 68 @Override 69 protected String handleParameter(final String name, final boolean expression, boolean jdbcParam) { 70 if (expression) { 71 assertTrue(exprSet.contains(name)); 72 } else { 73 assertTrue("Unexpected "+name+" property", propSet.contains(name)); 74 } 75 return (jdbcParam ? "?/" : "$/") + name + '/'; 76 } 77 78 protected void statementParsed(final String sql) { 79 assertEquals(removeExtraWhitespaces(expected[stInd]), removeExtraWhitespaces(sql)); 80 stInd++; 81 } 82 }; 83 p.parse(new StringReader (s)); 84 85 } 86 87 88 89 } 90 | Popular Tags |