Statistics
| Revision:

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 @ 44622

History | View | Annotate | Download (4.11 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
            Resource res = new URLResource(url);
32
            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
}