svn-gvsig-desktop / trunk / org.gvsig.desktop / org.gvsig.desktop.library / org.gvsig.expressionevaluator / org.gvsig.expressionevaluator.lib / org.gvsig.expressionevaluator.lib.impl / src / test / java / org / gvsig / expresionevaluator / impl / TestCreateFunction.java @ 45213
History | View | Annotate | Download (4.13 KB)
1 | 43512 | jjdelcerro | package org.gvsig.expresionevaluator.impl; |
---|---|---|---|
2 | |||
3 | 44592 | jjdelcerro | import java.net.URL; |
4 | 43512 | jjdelcerro | import junit.framework.TestCase; |
5 | import org.gvsig.expressionevaluator.LexicalAnalyzer; |
||
6 | import org.gvsig.expressionevaluator.Compiler; |
||
7 | import org.gvsig.expressionevaluator.SymbolTable; |
||
8 | import org.gvsig.expressionevaluator.Interpreter; |
||
9 | import org.gvsig.expressionevaluator.Code; |
||
10 | 44139 | jjdelcerro | import org.gvsig.expressionevaluator.ExpressionEvaluatorLocator; |
11 | import org.gvsig.expressionevaluator.ExpressionEvaluatorManager; |
||
12 | import org.gvsig.expressionevaluator.MutableSymbolTable; |
||
13 | 44098 | jjdelcerro | import org.gvsig.tools.library.impl.DefaultLibrariesInitializer; |
14 | 44592 | jjdelcerro | import org.gvsig.tools.resourcesstorage.AbstractResourcesStorage; |
15 | import org.gvsig.tools.resourcesstorage.URLResource; |
||
16 | 43512 | jjdelcerro | |
17 | 44592 | jjdelcerro | public class TestCreateFunction extends TestCase { |
18 | |||
19 | private static class Test1ResourcesStorage extends AbstractResourcesStorage { |
||
20 | |||
21 | public Test1ResourcesStorage() {
|
||
22 | |||
23 | } |
||
24 | |||
25 | @Override
|
||
26 | public Resource getResource(String resourceName) { |
||
27 | URL url = this.getClass().getResource("/org/gvsig/expressionevaluator/impl/"+resourceName+".cosa"); |
||
28 | if( url == null ) { |
||
29 | return null; |
||
30 | } |
||
31 | 44710 | jjdelcerro | Resource res = new URLResource(resourceName+".cosa", url); |
32 | 44592 | jjdelcerro | return res;
|
33 | } |
||
34 | } |
||
35 | 43512 | jjdelcerro | |
36 | 44592 | jjdelcerro | public TestCreateFunction(String testName) { |
37 | 43512 | jjdelcerro | super(testName);
|
38 | } |
||
39 | |||
40 | @Override
|
||
41 | protected void setUp() throws Exception { |
||
42 | super.setUp();
|
||
43 | 44098 | jjdelcerro | new DefaultLibrariesInitializer().fullInitialize();
|
44 | 43512 | jjdelcerro | } |
45 | |||
46 | @Override
|
||
47 | protected void tearDown() throws Exception { |
||
48 | super.tearDown();
|
||
49 | } |
||
50 | |||
51 | // TODO add test methods here. The name must begin with 'test'. For example:
|
||
52 | // public void testHello() {}
|
||
53 | |||
54 | 44139 | jjdelcerro | |
55 | 43512 | jjdelcerro | protected LexicalAnalyzer createLexicalAnalyzer() {
|
56 | 44139 | jjdelcerro | ExpressionEvaluatorManager manager = ExpressionEvaluatorLocator.getManager(); |
57 | LexicalAnalyzer lexer = manager.createLexicalAnalyzer(); |
||
58 | 43512 | jjdelcerro | return lexer;
|
59 | } |
||
60 | 44139 | jjdelcerro | |
61 | protected org.gvsig.expressionevaluator.Compiler createCompiler() {
|
||
62 | ExpressionEvaluatorManager manager = ExpressionEvaluatorLocator.getManager(); |
||
63 | Compiler compiler = manager.createCompiler();
|
||
64 | 43512 | jjdelcerro | compiler.setLexicalAnalyzer(createLexicalAnalyzer()); |
65 | return compiler;
|
||
66 | } |
||
67 | 44139 | jjdelcerro | |
68 | 43512 | jjdelcerro | |
69 | protected SymbolTable createSymbolTable() {
|
||
70 | 44139 | jjdelcerro | ExpressionEvaluatorManager manager = ExpressionEvaluatorLocator.getManager(); |
71 | MutableSymbolTable symbolTable = manager.createSymbolTable(); |
||
72 | 43939 | jjdelcerro | symbolTable.setVar("precio", 200); |
73 | symbolTable.setVar("1990", 0.168873933773767); |
||
74 | 43512 | jjdelcerro | return symbolTable;
|
75 | } |
||
76 | |||
77 | protected Interpreter createInterpreter(SymbolTable symbolTable) {
|
||
78 | 44139 | jjdelcerro | ExpressionEvaluatorManager manager = ExpressionEvaluatorLocator.getManager(); |
79 | 44592 | jjdelcerro | manager.setScriptsResourcesStorage(new Test1ResourcesStorage());
|
80 | 44139 | jjdelcerro | Interpreter interpreter = manager.createInterpreter(); |
81 | 43512 | jjdelcerro | interpreter.setSymbolTable(symbolTable); |
82 | return interpreter;
|
||
83 | } |
||
84 | |||
85 | 44592 | jjdelcerro | public void testStringUtilsCapitalize() { |
86 | 43512 | jjdelcerro | SymbolTable symbolTable = createSymbolTable(); |
87 | Compiler compiler = createCompiler();
|
||
88 | Interpreter interpreter = createInterpreter(symbolTable); |
||
89 | |||
90 | 44592 | jjdelcerro | String source = "BEGIN " |
91 | + "CREATE FUNCTION CAPITALIZE(s) AS "
|
||
92 | + "'org.apache.commons.lang3.StringUtils', 'capitalize' "
|
||
93 | + "LANGUAGE 'java';"
|
||
94 | + "CAPITALIZE('hola');"
|
||
95 | + "END";
|
||
96 | 43512 | jjdelcerro | |
97 | Code code = compiler.compileExpression(source); |
||
98 | Object v = interpreter.run(code);
|
||
99 | 44592 | jjdelcerro | assertEquals("Hola", v.toString());
|
100 | 43512 | jjdelcerro | } |
101 | |||
102 | 44592 | jjdelcerro | public void testSQRTScriptEngine() { |
103 | 44421 | jjdelcerro | SymbolTable symbolTable = createSymbolTable(); |
104 | Compiler compiler = createCompiler();
|
||
105 | Interpreter interpreter = createInterpreter(symbolTable); |
||
106 | |||
107 | 44592 | jjdelcerro | String source = "BEGIN " |
108 | + "CREATE FUNCTION SQUARE(num) AS 'testlib', 'SQUARE';"
|
||
109 | + "SQUARE(4);"
|
||
110 | + "END";
|
||
111 | 43512 | jjdelcerro | |
112 | Code code = compiler.compileExpression(source); |
||
113 | Object v = interpreter.run(code);
|
||
114 | 44592 | jjdelcerro | assertEquals(16, ((Number)v).intValue()); |
115 | 43512 | jjdelcerro | } |
116 | |||
117 | 44139 | jjdelcerro | |
118 | |||
119 | 43939 | jjdelcerro | } |