1 16 package scriptella.driver.csv; 17 18 import au.com.bytecode.opencsv.CSVReader; 19 import scriptella.AbstractTestCase; 20 import scriptella.spi.AbstractConnection; 21 import scriptella.spi.MockParametersCallbacks; 22 import scriptella.spi.ParametersCallback; 23 import scriptella.spi.QueryCallback; 24 25 import java.io.IOException ; 26 import java.io.StringReader ; 27 28 34 public class CsvQueryTest extends AbstractTestCase { 35 private int rows; 36 public void test() throws IOException { 37 String data = "1,2,3\n11,2,3,4\n1"; 39 String query = ".*1.*,2,3,4"; 40 CsvQuery q = new CsvQuery(new CSVReader(new StringReader (data)), false, false); 41 rows=0; 42 AbstractConnection.StatementCounter cnt = new AbstractConnection.StatementCounter(); 43 q.execute(new CSVReader(new StringReader (query)), MockParametersCallbacks.UNSUPPORTED, new QueryCallback() { 45 public void processRow(final ParametersCallback parameters) { 46 rows++; 47 assertEquals("11", parameters.getParameter("1")); 48 assertEquals("2", parameters.getParameter("2")); 49 assertEquals("3", parameters.getParameter("3")); 50 assertEquals("4", parameters.getParameter("4")); 51 } 52 }, cnt); 53 assertEquals(1, rows); 54 assertEquals(1, cnt.statements); 55 } 56 57 61 public void testParametersLookup() throws IOException { 62 String data = "a,b,c\n11,22,33"; 63 String query = "11,22,33"; 64 CsvQuery q = new CsvQuery(new CSVReader(new StringReader (data)), true, true); 65 rows=0; 66 AbstractConnection.StatementCounter cnt = new AbstractConnection.StatementCounter(); 67 q.execute(new CSVReader(new StringReader (query)), MockParametersCallbacks.SIMPLE, new QueryCallback() { 68 public void processRow(final ParametersCallback parameters) { 69 rows++; 70 assertEquals("11", parameters.getParameter("1")); 72 assertEquals("11", parameters.getParameter("a")); 73 assertEquals("22", parameters.getParameter("2")); 74 assertEquals("22", parameters.getParameter("b")); 75 assertEquals("33", parameters.getParameter("3")); 76 assertEquals("33", parameters.getParameter("c")); 77 assertEquals("*4*", parameters.getParameter("4")); assertEquals("*four*", parameters.getParameter("four")); } 80 }, cnt); 81 assertEquals(1, rows); 82 assertEquals(1, cnt.statements); 83 } 84 85 88 public void testInvalidQuery() throws IOException { 89 String data = "a,b,c"; 90 String query = "\\"; CsvQuery q = new CsvQuery(new CSVReader(new StringReader (data)), true, true); 92 try { 93 q.execute(new CSVReader(new StringReader (query)), MockParametersCallbacks.UNSUPPORTED, null, null); 94 fail("Bad query syntax should be recognized"); 95 } catch (CsvProviderException e) { 96 } 98 99 100 } 101 102 } 103 | Popular Tags |