| 1 16 package scriptella.driver.text; 17 18 import scriptella.AbstractTestCase; 19 import scriptella.spi.AbstractConnection; 20 import scriptella.spi.MockParametersCallbacks; 21 import scriptella.spi.ParametersCallback; 22 import scriptella.spi.QueryCallback; 23 24 import java.io.StringReader ; 25 import java.util.Arrays ; 26 import java.util.HashSet ; 27 import java.util.Set ; 28 29 35 public class TextQueryExecutorTest extends AbstractTestCase { 36 39 public void test() { 40 StringReader in = new StringReader ( 41 "---file\n" + 42 "ERROR: msg1 error: msg2\n" + 43 "text\r\n" + 44 "ERROR: msg3"); 45 TextQueryExecutor tq = new TextQueryExecutor(new StringReader ("$severity: (\\w+).*"), true, in, new ParametersCallback() { 46 public Object getParameter(final String name) { 47 if ("severity".equals(name)) { 48 return "ERROR"; 49 } else { 50 throw new IllegalArgumentException (name); 51 } 52 } 53 }); 54 final Set <String > expected = new HashSet <String >(); 55 expected.add("msg1"); 56 expected.add("msg3"); 57 AbstractConnection.StatementCounter cnt = new AbstractConnection.StatementCounter(); 58 tq.execute(new QueryCallback() { 59 public void processRow(final ParametersCallback parameters) { 60 String p = (String ) parameters.getParameter("1"); 61 assertTrue("Unexpected element " + p, expected.remove(p)); 62 } 63 }, cnt); 64 assertEquals(1, cnt.statements); 65 assertTrue("The following elements were skipped "+expected, expected.isEmpty()); 66 } 67 68 public void testEmptyQuery() { 69 StringReader in = new StringReader ("line1\nline2"); 70 TextQueryExecutor tq = new TextQueryExecutor(new StringReader (""), false, in, MockParametersCallbacks.UNSUPPORTED); 71 final Set <String > expected = new HashSet <String >(); 72 expected.add("line1"); 73 expected.add("line2"); 74 AbstractConnection.StatementCounter cnt = new AbstractConnection.StatementCounter(); 75 tq.execute(new QueryCallback() { 76 public void processRow(final ParametersCallback parameters) { 77 String p = (String ) parameters.getParameter("0"); 78 assertTrue("Unexpected element " + p, expected.remove(p)); 79 } 80 }, cnt); 81 assertEquals(1, cnt.statements); 82 assertTrue("The following elements were skipped "+expected, expected.isEmpty()); 83 } 84 85 88 public void testQueryMultiline() { 89 StringReader in = new StringReader ("line1\nline2\nline3\nline4"); 90 TextQueryExecutor tq = new TextQueryExecutor(new StringReader ("line2\nline4"), false, in, MockParametersCallbacks.UNSUPPORTED); 91 final Set <String > expected = new HashSet <String >(); 92 expected.add("line2"); 93 expected.add("line4"); 94 AbstractConnection.StatementCounter cnt = new AbstractConnection.StatementCounter(); 95 tq.execute(new QueryCallback() { 96 public void processRow(final ParametersCallback parameters) { 97 String p = (String ) parameters.getParameter("0"); 98 assertTrue("Unexpected element " + p, expected.remove(p)); 99 } 100 }, cnt); 101 assertEquals(2, cnt.statements); 102 assertTrue("The following elements were skipped "+expected, expected.isEmpty()); 103 } 104 105 106 109 public void testLongContent() { 110 char[] b = new char[64000]; 111 Arrays.fill(b, 'a'); 112 113 StringReader in = new StringReader (new String (b)+"match111111"); 114 TextQueryExecutor tq = new TextQueryExecutor(new StringReader (".*(match).*"), true, in, MockParametersCallbacks.SIMPLE); 115 final Set <String > expected = new HashSet <String >(); 116 expected.add("match"); 117 AbstractConnection.StatementCounter cnt = new AbstractConnection.StatementCounter(); 118 tq.execute(new QueryCallback() { 119 public void processRow(final ParametersCallback parameters) { 120 String p = (String ) parameters.getParameter("1"); 121 String p2 = (String ) parameters.getParameter("column1"); 122 assertEquals(p, p2); 123 assertTrue("Unexpected element " + p, expected.remove(p)); 124 } 125 }, cnt); 126 assertEquals(1, cnt.statements); 127 assertTrue("The following elements were skipped "+expected, expected.isEmpty()); 128 129 } 130 } 131 | Popular Tags |