-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathAllTests.java
159 lines (138 loc) · 4.53 KB
/
AllTests.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
package BaseXJSR223;
import static org.junit.Assert.*;
import java.io.ByteArrayInputStream;
import java.io.IOException;
import java.io.StringReader;
import java.math.BigInteger;
import javax.script.Bindings;
import javax.script.ScriptEngine;
import javax.script.ScriptEngineManager;
import javax.script.ScriptException;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;
import org.junit.Test;
import org.w3c.dom.Document;
import org.xml.sax.SAXException;
import com.nubisware.jsr223.basex.BaseXScriptEngine;
import com.nubisware.jsr223.basex.BaseXScriptEngineFactory;
public class AllTests {
//short term development tests
protected BaseXScriptEngineFactory factory = new BaseXScriptEngineFactory();
protected ScriptEngineManager manager = new ScriptEngineManager();
protected ScriptEngine engine;
public AllTests() {
for(String ext : factory.getExtensions()) {
manager.registerEngineExtension(ext, factory);
}
for(String mime : factory.getMimeTypes()) {
manager.registerEngineMimeType(mime, factory);
}
manager.registerEngineName(factory.getEngineName(), factory);
engine = manager.getEngineByName("BaseX");
}
@Test
public void testBaseXSEF() {
assertNotNull(factory);
assertEquals("BaseX", factory.getEngineName());
}
@Test
public void testBaseEngineRetrieval() {
ScriptEngine engine = factory.getScriptEngine();
assertNotNull(engine);
engine = manager.getEngineByExtension("xq");
assertNotNull(engine);
engine = manager.getEngineByExtension("xqm");
assertNotNull(engine);
engine = manager.getEngineByExtension("xquery");
assertNotNull(engine);
engine = manager.getEngineByMimeType("application/xquery");
assertNotNull(engine);
engine = manager.getEngineByName("BaseX");
assertNotNull(engine);
}
@Test
public void testStringQuery() {
assertNotNull(engine);
String[] expected = {"a", "b", "c"};
try {
Object res = engine.eval("1+1");
assertEquals(res, new BigInteger("2"));
res = engine.eval("'hello world'");
assertEquals(res, "hello world");
res = engine.eval("1 = 1");
assertEquals(res, true);
res = engine.eval("1 = 11");
assertEquals(res, false);
String[] resarr = (String[])engine.eval("('a','b','c')");
for(int i=0; i < resarr.length; i++) {
assertEquals(resarr[i], expected[i]);
}
} catch (ScriptException e) {
e.printStackTrace();
}
}
@Test
public void testReaderQuery() {
assertNotNull(engine);
try {
Object res = engine.eval(new StringReader("1+1"));
assertEquals(res, new BigInteger("2"));
} catch (ScriptException e) {
e.printStackTrace();
}
}
@Test
public void testQueryWithBindings() {
assertNotNull(engine);
try {
Bindings bindings = engine.createBindings();
bindings.put("in", 1);
Object res = engine.eval("declare variable $in external; 1+$in", bindings);
assertEquals(res, new BigInteger("2"));
} catch (ScriptException e) {
e.printStackTrace();
}
}
@Test
public void testQueryWithContext() {
BaseXScriptEngine bxengine = (BaseXScriptEngine)this.engine;
assertNotNull(engine);
String[] context = {"a", "b", "c"};
try {
Bindings bindings = engine.createBindings();
bindings.put(BaseXScriptEngine.CONTEXT_KEY,context);
Object res = engine.eval("count(.)", bindings);
assertEquals(res, new BigInteger("3"));
bindings = engine.createBindings();
bxengine.bindXQueryContext(bindings, context);
res = engine.eval("count(.)", bindings);
assertEquals(res, new BigInteger("3"));
bindings = bxengine.createBindings(context);
res = engine.eval("count(.)", bindings);
assertEquals(res, new BigInteger("3"));
} catch (ScriptException e) {
e.printStackTrace();
}
}
@Test
public void testQueryWithXMLContext() {
BaseXScriptEngine bxengine = (BaseXScriptEngine)this.engine;
try {
final DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
final DocumentBuilder builder = factory.newDocumentBuilder();
final Document doc = builder.parse(new ByteArrayInputStream("<collection><item>1</item><item>2</item></collection>".getBytes()));
Bindings bindings = bxengine.createBindings(doc);
Object res = engine.eval("xs:int(sum(./collection/item/data()))", bindings);
assertEquals(res, 3);
} catch (ScriptException e) {
e.printStackTrace();
} catch (ParserConfigurationException e) {
e.printStackTrace();
} catch (SAXException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
}