KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > scriptella > driver > xpath > XPathQueryExecutorTest


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.xpath;
17
18 import org.w3c.dom.Document JavaDoc;
19 import org.xml.sax.SAXException JavaDoc;
20 import scriptella.AbstractTestCase;
21 import scriptella.configuration.StringResource;
22 import scriptella.spi.AbstractConnection;
23 import scriptella.spi.IndexedQueryCallback;
24 import scriptella.spi.MockParametersCallbacks;
25 import scriptella.spi.ParametersCallback;
26 import scriptella.spi.Resource;
27
28 import javax.xml.parsers.DocumentBuilder JavaDoc;
29 import javax.xml.parsers.DocumentBuilderFactory JavaDoc;
30 import javax.xml.parsers.ParserConfigurationException JavaDoc;
31 import java.io.IOException JavaDoc;
32
33 /**
34  * Tests for {@link XPathQueryExecutor}.
35  *
36  * @author Fyodor Kupolov
37  * @version 1.0
38  */

39 public class XPathQueryExecutorTest extends AbstractTestCase {
40     private DocumentBuilder JavaDoc documentBuilder;
41
42     protected void setUp() throws Exception JavaDoc {
43         documentBuilder = DocumentBuilderFactory.newInstance().newDocumentBuilder();
44     }
45
46     public void test() throws ParserConfigurationException JavaDoc, IOException JavaDoc, SAXException JavaDoc {
47         Document JavaDoc doc = documentBuilder.parse(getClass().getResourceAsStream("xml1.xml"));
48         Resource res = new StringResource("/html/body/table/tr");
49         XPathQueryExecutor exec = new XPathQueryExecutor(doc, res, new XPathExpressionCompiler(), new AbstractConnection.StatementCounter());
50         IndexedQueryCallback callback = new IndexedQueryCallback() {
51
52             protected void processRow(final ParametersCallback parameters, final int rowNumber) {
53                 if (rowNumber == 0) {
54                     assertEquals("red", parameters.getParameter("bgcolor"));
55                     assertEquals("Column1", ((String JavaDoc[]) parameters.getParameter("th"))[0]);
56                     assertEquals("Column2", ((String JavaDoc[]) parameters.getParameter("th"))[1]);
57                 } else {
58                     assertEquals(String.valueOf(rowNumber * 2 - 1), ((String JavaDoc[]) parameters.getParameter("td"))[0]);
59                     assertEquals(String.valueOf(rowNumber * 2), ((String JavaDoc[]) parameters.getParameter("td"))[1]);
60                 }
61             }
62         };
63         exec.execute(callback, MockParametersCallbacks.NULL);
64         assertEquals(3,callback.getRowsNumber());
65     }
66
67     public void test2() throws ParserConfigurationException JavaDoc, IOException JavaDoc, SAXException JavaDoc {
68         Document JavaDoc doc = documentBuilder.parse(getClass().getResourceAsStream("xml2.xml"));
69         Resource res = new StringResource(" /xml/element[@attribute=1] | /xml/element[not(@attribute)]");
70         XPathQueryExecutor exec = new XPathQueryExecutor(doc, res, new XPathExpressionCompiler(), new AbstractConnection.StatementCounter());
71         IndexedQueryCallback callback = new IndexedQueryCallback() {
72
73             protected void processRow(final ParametersCallback parameters, final int rowNumber) {
74                 if (rowNumber == 0) {
75                     assertEquals("1", parameters.getParameter("attribute"));
76                 } else {
77                     assertEquals("", parameters.getParameter("element"));
78                 }
79             }
80         };
81         exec.execute(callback, MockParametersCallbacks.NULL);
82         assertEquals(2,callback.getRowsNumber());
83         //Now select element2, also test substitution
84
res = new StringResource(" /xml/$element2 ");
85         exec = new XPathQueryExecutor(doc, res, new XPathExpressionCompiler(), new AbstractConnection.StatementCounter());
86         callback = new IndexedQueryCallback() {
87
88             protected void processRow(final ParametersCallback parameters, final int rowNumber) {
89                 if (rowNumber == 0) {
90                     assertEquals("1", parameters.getParameter("attribute"));
91                 } else {
92                     assertEquals("el2", parameters.getParameter("element2"));
93                 }
94             }
95         };
96         exec.execute(callback, MockParametersCallbacks.NAME);
97         assertEquals(2,callback.getRowsNumber());
98     }
99
100 }
101
Popular Tags