Revision 45739 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

View differences:

TestCreateFunction.java
1 1
package org.gvsig.expresionevaluator.impl;
2 2

  
3 3
import java.net.URL;
4
import java.text.ParseException;
4 5
import junit.framework.TestCase;
6
import static junit.framework.TestCase.assertEquals;
5 7
import org.gvsig.expressionevaluator.LexicalAnalyzer;
6 8
import org.gvsig.expressionevaluator.Compiler;
7 9
import org.gvsig.expressionevaluator.SymbolTable;
......
95 97
                + "END";
96 98
        
97 99
        Code code = compiler.compileExpression(source);
100
        assertEquals("BLOCK(CREATE_FUNCTION('CAPITALIZE', LIST('s'), NULL, 'org.apache.commons.lang3.StringUtils', 'capitalize', 'java'), CAPITALIZE('hola'))", code.toString());
98 101
        Object v = interpreter.run(code);
99 102
        assertEquals("Hola", v.toString());
100 103
    }
101 104
    
105
    public void testSQRT() {
106
        SymbolTable symbolTable = createSymbolTable();
107
        Compiler compiler = createCompiler();
108
        Interpreter interpreter = createInterpreter(symbolTable);
109
        
110
        String source = "BEGIN "
111
                + "CREATE FUNCTION SQUARE(num) AS BEGIN RETURN num*num; END; "
112
                + "SQUARE(4);"
113
                + "END";
114
        
115
        Code code = compiler.compileExpression(source);
116
        assertEquals("BLOCK(CREATE_FUNCTION('SQUARE', LIST('num'), RETURN((\"num\" * \"num\")), NULL, NULL, NULL), SQUARE(4))", code.toString());
117
        Object v = interpreter.run(code);
118
        assertEquals(16, ((Number)v).intValue());
119
    }
120
    
102 121
    public void testSQRTScriptEngine() {
103 122
        SymbolTable symbolTable = createSymbolTable();
104 123
        Compiler compiler = createCompiler();
......
110 129
                + "END";
111 130
        
112 131
        Code code = compiler.compileExpression(source);
132
        assertEquals("BLOCK(CREATE_FUNCTION('SQUARE', LIST('num'), NULL, 'testlib', 'SQUARE', NULL), SQUARE(4))", code.toString());
113 133
        Object v = interpreter.run(code);
114 134
        assertEquals(16, ((Number)v).intValue());
115 135
    }
116
    
117 136

  
137
    public void testLambda1() throws ParseException {
138
        SymbolTable symbolTable = createSymbolTable();
139
        Compiler compiler = createCompiler();
140
        Interpreter interpreter = createInterpreter(symbolTable);
141
        
142
        String source = "begin set x to 10 ; set fn = lambda : x * 2; fn(); end";
118 143

  
144
        Code code = compiler.compileExpression(source);
145
        assertEquals("BLOCK(LET('x', 10), LET('fn', CREATE_FUNCTION(NULL, (\"x\" * 2))), fn())", code.toString());
146

  
147
        Object v = interpreter.run(code);
148
        assertEquals(20, ((Number)v).intValue());
149
    }
150

  
151
    public void testLambda1WithArgs() throws ParseException {
152
        SymbolTable symbolTable = createSymbolTable();
153
        Compiler compiler = createCompiler();
154
        Interpreter interpreter = createInterpreter(symbolTable);
155
        
156
        String source = "begin set x to 10 ; set fn = lambda n : (x * 2) + n; fn(3); end";
157

  
158
        Code code = compiler.compileExpression(source);
159
        assertEquals("BLOCK(LET('x', 10), LET('fn', CREATE_FUNCTION(LIST('n'), ((\"x\" * 2) + \"n\"))), fn(3))", code.toString());
160

  
161
        Object v = interpreter.run(code);
162
        assertEquals(23, ((Number)v).intValue());
163
    }
164
    
119 165
}

Also available in: Unified diff