KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > scriptella > driver > text > TextQueryExecutorTest


1 /*
2  * Copyright 2006-2007 The Scriptella Project Team.
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  * http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */

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 JavaDoc;
25 import java.util.Arrays JavaDoc;
26 import java.util.HashSet JavaDoc;
27 import java.util.Set JavaDoc;
28
29 /**
30  * Tests for {@link TextQueryExecutor}.
31  *
32  * @author Fyodor Kupolov
33  * @version 1.0
34  */

35 public class TextQueryExecutorTest extends AbstractTestCase {
36     /**
37      * Tests general functionality.
38      */

39     public void test() {
40         StringReader JavaDoc in = new StringReader JavaDoc(
41                 "---file\n" +
42                         "ERROR: msg1 error: msg2\n" +
43                         "text\r\n" +
44                         "ERROR: msg3");
45         TextQueryExecutor tq = new TextQueryExecutor(new StringReader JavaDoc("$severity: (\\w+).*"), true, in, new ParametersCallback() {
46             public Object JavaDoc getParameter(final String JavaDoc name) {
47                 if ("severity".equals(name)) {
48                     return "ERROR";
49                 } else {
50                     throw new IllegalArgumentException JavaDoc(name);
51                 }
52             }
53         });
54         final Set JavaDoc<String JavaDoc> expected = new HashSet JavaDoc<String JavaDoc>();
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 JavaDoc p = (String JavaDoc) 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 JavaDoc in = new StringReader JavaDoc("line1\nline2");
70         TextQueryExecutor tq = new TextQueryExecutor(new StringReader JavaDoc(""), false, in, MockParametersCallbacks.UNSUPPORTED);
71         final Set JavaDoc<String JavaDoc> expected = new HashSet JavaDoc<String JavaDoc>();
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 JavaDoc p = (String JavaDoc) 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     /**
86      * Tests if multiline queries are processed correctly.
87      */

88     public void testQueryMultiline() {
89         StringReader JavaDoc in = new StringReader JavaDoc("line1\nline2\nline3\nline4");
90         TextQueryExecutor tq = new TextQueryExecutor(new StringReader JavaDoc("line2\nline4"), false, in, MockParametersCallbacks.UNSUPPORTED);
91         final Set JavaDoc<String JavaDoc> expected = new HashSet JavaDoc<String JavaDoc>();
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 JavaDoc p = (String JavaDoc) 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     /**
107      * Tests long content querying.
108      */

109     public void testLongContent() {
110         char[] b = new char[64000];
111         Arrays.fill(b, 'a');
112
113         StringReader JavaDoc in = new StringReader JavaDoc(new String JavaDoc(b)+"match111111");
114         TextQueryExecutor tq = new TextQueryExecutor(new StringReader JavaDoc(".*(match).*"), true, in, MockParametersCallbacks.SIMPLE);
115         final Set JavaDoc<String JavaDoc> expected = new HashSet JavaDoc<String JavaDoc>();
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 JavaDoc p = (String JavaDoc) parameters.getParameter("1");
121                 String JavaDoc p2 = (String JavaDoc) 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