Revision 44619

View differences:

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/TestExpression.java
1 1
package org.gvsig.expresionevaluator.impl;
2 2

  
3 3
import junit.framework.TestCase;
4
import org.apache.commons.lang3.Range;
4 5
import org.gvsig.expressionevaluator.Expression;
5 6
import org.gvsig.expressionevaluator.ExpressionEvaluatorLocator;
6 7
import org.gvsig.expressionevaluator.ExpressionEvaluatorManager;
8
import org.gvsig.expressionevaluator.Interpreter;
7 9
import org.gvsig.expressionevaluator.MutableSymbolTable;
10
import org.gvsig.expressionevaluator.spi.AbstractFunction;
11
import org.gvsig.expressionevaluator.spi.AbstractSymbolTable;
8 12
import org.gvsig.tools.library.impl.DefaultLibrariesInitializer;
9 13

  
14
public class TestExpression extends TestCase {
10 15

  
11
public class TestExpression extends TestCase {
12
    
16
    private static class MyValueSymbolTable extends AbstractSymbolTable {
17

  
18
        private class MyValueFunction extends AbstractFunction {
19

  
20
            public MyValueFunction() {
21
                super("Numeric", "MyValue", Range.is(0));
22
            }
23

  
24
            @Override
25
            public Object call(Interpreter interpreter, Object[] args) {
26
                return value;
27
            }
28

  
29
            @Override
30
            public boolean allowConstantFolding() {
31
                return false;
32
            }
33
        }
34
        private int value;
35

  
36
        @SuppressWarnings("OverridableMethodCallInConstructor")
37
        public MyValueSymbolTable(String name) {
38
            super(name);
39
            this.addFunction(new MyValueFunction());
40
        }
41

  
42
        public void setValue(int value) {
43
            this.value = value;
44
        }
45
    }
46

  
13 47
    public TestExpression(String testName) {
14 48
        super(testName);
15 49
    }
16
    
50

  
17 51
    @Override
18 52
    protected void setUp() throws Exception {
19 53
        super.setUp();
20 54
        new DefaultLibrariesInitializer().fullInitialize();
21 55
    }
22
    
56

  
23 57
    @Override
24 58
    protected void tearDown() throws Exception {
25 59
        super.tearDown();
......
28 62
    private MutableSymbolTable createMutableSymbolTable() {
29 63
        ExpressionEvaluatorManager manager = ExpressionEvaluatorLocator.getManager();
30 64
        MutableSymbolTable t = manager.createSymbolTable();
31
        return  t;
65
        return t;
32 66
    }
33
    
67

  
34 68
    private Expression createExpression() {
35 69
        ExpressionEvaluatorManager manager = ExpressionEvaluatorLocator.getManager();
36 70
        Expression e = manager.createExpression();
37
        return  e;
71
        return e;
38 72
    }
39
    
40
    
73

  
41 74
    // TODO add test methods here. The name must begin with 'test'. For example:
42 75
    // public void testHello() {}
43

  
44 76
    
45 77
    public void testToJSON1() {
46 78
        String source = "precio + 10";
47 79

  
48 80
        Expression expression = createExpression();
49 81
        expression.setPhrase(source);
50
        
82

  
51 83
        assertEquals(
52
                "{\"phrase\":\"precio + 10\"}", 
84
                "{\"phrase\":\"precio + 10\"}",
53 85
                expression.toJSON()
54 86
        );
55 87
    }
56
    
88

  
57 89
    public void testA() {
58
        
90

  
59 91
        Expression expression = createExpression();
60 92
        expression.setPhrase("precio * 10");
61
        
93

  
62 94
        MutableSymbolTable t1 = createMutableSymbolTable();
63 95
        t1.setVar("precio", 2);
64 96
        Object v1 = expression.execute(t1);
65
        assertEquals(20, (int)v1);
66
        
97
        assertEquals(20, (int) v1);
98

  
67 99
        t1.setVar("precio", 3);
68 100
        v1 = expression.execute(t1);
69
        assertEquals(30, (int)v1);
70
        
101
        assertEquals(30, (int) v1);
102

  
71 103
        MutableSymbolTable t2 = createMutableSymbolTable();
72 104
        t2.setVar("precio", 4);
73 105
        v1 = expression.execute(t2);
74
        assertEquals(40, (int)v1);
75
        
106
        assertEquals(40, (int) v1);
107

  
76 108
    }
77
    
109

  
110
    public void testB() {
111

  
112
        Expression expression = createExpression();
113
        expression.setPhrase("MYVALUE()");
114

  
115
        MyValueSymbolTable t1 = new MyValueSymbolTable("MyValueSymbolTable1");
116
        t1.setValue(2);
117
        Object v1 = expression.execute(t1);
118
        assertEquals(2, (int) v1);
119

  
120
        t1.setValue(3);
121
        v1 = expression.execute(t1);
122
        assertEquals(3, (int) v1);
123

  
124
        MyValueSymbolTable t2 = new MyValueSymbolTable("MyValueSymbolTable2");
125
        expression.link(t2);
126
        t2.setValue(4);
127
        v1 = expression.execute(t2);
128
        assertEquals(4, (int) v1);
129

  
130
    }
131

  
132

  
78 133
}

Also available in: Unified diff