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