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 / TestInterpreter.java @ 45213

History | View | Annotate | Download (20.7 KB)

1 43512 jjdelcerro
package org.gvsig.expresionevaluator.impl;
2
3 45025 jjdelcerro
import java.util.Map;
4 43512 jjdelcerro
import junit.framework.TestCase;
5 44855 jjdelcerro
import org.apache.commons.lang3.StringUtils;
6
import org.gvsig.expressionevaluator.AttributeHandler;
7 43512 jjdelcerro
import org.gvsig.expressionevaluator.LexicalAnalyzer;
8
import org.gvsig.expressionevaluator.Compiler;
9
import org.gvsig.expressionevaluator.SymbolTable;
10
import org.gvsig.expressionevaluator.Interpreter;
11
import org.gvsig.expressionevaluator.Code;
12 44139 jjdelcerro
import org.gvsig.expressionevaluator.ExpressionEvaluatorLocator;
13
import org.gvsig.expressionevaluator.ExpressionEvaluatorManager;
14
import org.gvsig.expressionevaluator.MutableSymbolTable;
15 44098 jjdelcerro
import org.gvsig.tools.library.impl.DefaultLibrariesInitializer;
16 43512 jjdelcerro
17
public class TestInterpreter extends TestCase {
18
19
    public TestInterpreter(String testName) {
20
        super(testName);
21
    }
22
23
    @Override
24
    protected void setUp() throws Exception {
25
        super.setUp();
26 44098 jjdelcerro
        new DefaultLibrariesInitializer().fullInitialize();
27 43512 jjdelcerro
    }
28
29
    @Override
30
    protected void tearDown() throws Exception {
31
        super.tearDown();
32
    }
33
34
    // TODO add test methods here. The name must begin with 'test'. For example:
35
    // public void testHello() {}
36
37 44139 jjdelcerro
38 43512 jjdelcerro
    protected LexicalAnalyzer createLexicalAnalyzer() {
39 44139 jjdelcerro
        ExpressionEvaluatorManager manager = ExpressionEvaluatorLocator.getManager();
40
        LexicalAnalyzer lexer = manager.createLexicalAnalyzer();
41 43512 jjdelcerro
        return lexer;
42
    }
43 44139 jjdelcerro
44
    protected org.gvsig.expressionevaluator.Compiler createCompiler() {
45
        ExpressionEvaluatorManager manager = ExpressionEvaluatorLocator.getManager();
46
        Compiler compiler = manager.createCompiler();
47 43512 jjdelcerro
        compiler.setLexicalAnalyzer(createLexicalAnalyzer());
48
        return compiler;
49
    }
50 44139 jjdelcerro
51 43512 jjdelcerro
52 44855 jjdelcerro
    protected MutableSymbolTable createSymbolTable() {
53 44139 jjdelcerro
        ExpressionEvaluatorManager manager = ExpressionEvaluatorLocator.getManager();
54
        MutableSymbolTable symbolTable = manager.createSymbolTable();
55 43939 jjdelcerro
        symbolTable.setVar("precio", 200);
56
        symbolTable.setVar("1990", 0.168873933773767);
57 43512 jjdelcerro
        return symbolTable;
58
    }
59
60
    protected Interpreter createInterpreter(SymbolTable symbolTable) {
61 44139 jjdelcerro
        ExpressionEvaluatorManager manager = ExpressionEvaluatorLocator.getManager();
62
        Interpreter interpreter = manager.createInterpreter();
63 43512 jjdelcerro
        interpreter.setSymbolTable(symbolTable);
64
        return interpreter;
65
    }
66
67
    public void testIdentifier1() {
68
        SymbolTable symbolTable = createSymbolTable();
69
        Compiler compiler = createCompiler();
70
        Interpreter interpreter = createInterpreter(symbolTable);
71
72 44139 jjdelcerro
        String source = "precio";
73
74 43512 jjdelcerro
        Code code = compiler.compileExpression(source);
75
        Object v = interpreter.run(code);
76
        assertEquals(200, ((Number)v).intValue());
77
    }
78
79
    public void testInteger() {
80
        SymbolTable symbolTable = createSymbolTable();
81
        Compiler compiler = createCompiler();
82
        Interpreter interpreter = createInterpreter(symbolTable);
83
84 44139 jjdelcerro
        String source = "23";
85
86 43512 jjdelcerro
        Code code = compiler.compileExpression(source);
87
        Object v = interpreter.run(code);
88
        assertEquals(23, ((Number)v).intValue());
89
    }
90
91 44421 jjdelcerro
    public void testNumberDMS() {
92
        SymbolTable symbolTable = createSymbolTable();
93
        Compiler compiler = createCompiler();
94
        Interpreter interpreter = createInterpreter(symbolTable);
95
96
        String source = "@10 30 1.2 N";
97
98
        Code code = compiler.compileExpression(source);
99
        Object v = interpreter.run(code);
100 44430 jjdelcerro
        assertEquals(10.5003, Math.round(((Number)v).doubleValue()*10000d)/10000d);
101
102
        source = "@10 30 0.09 N";
103
104
        code = compiler.compileExpression(source);
105
        v = interpreter.run(code);
106
        assertEquals(10.500025, Math.round(((Number)v).doubleValue()*1000000d)/1000000d);
107
108
        source = "@10 30 0.09 S";
109
110
        code = compiler.compileExpression(source);
111
        v = interpreter.run(code);
112
        assertEquals(-10.500025, Math.round(((Number)v).doubleValue()*1000000d)/1000000d);
113
114
        source = "@+10 30 0.09";
115
116
        code = compiler.compileExpression(source);
117
        v = interpreter.run(code);
118
        assertEquals(10.500025, Math.round(((Number)v).doubleValue()*1000000d)/1000000d);
119
120
        source = "@-10 30 0.09";
121
122
        code = compiler.compileExpression(source);
123
        v = interpreter.run(code);
124
        assertEquals(-10.500025, Math.round(((Number)v).doubleValue()*1000000d)/1000000d);
125
126 44421 jjdelcerro
    }
127
128 43512 jjdelcerro
    public void testTrue() {
129
        SymbolTable symbolTable = createSymbolTable();
130
        Compiler compiler = createCompiler();
131
        Interpreter interpreter = createInterpreter(symbolTable);
132
133 44139 jjdelcerro
        String source = "true";
134
135 43512 jjdelcerro
        Code code = compiler.compileExpression(source);
136
        assertEquals(Boolean.TRUE, interpreter.run(code));
137
    }
138
139
    public void testFalse() {
140
        SymbolTable symbolTable = createSymbolTable();
141
        Compiler compiler = createCompiler();
142
        Interpreter interpreter = createInterpreter(symbolTable);
143
144 44139 jjdelcerro
        String source = "false";
145
146 43512 jjdelcerro
        Code code = compiler.compileExpression(source);
147
        assertEquals(Boolean.FALSE, interpreter.run(code));
148
    }
149
150
    public void testNull() {
151
        SymbolTable symbolTable = createSymbolTable();
152
        Compiler compiler = createCompiler();
153
        Interpreter interpreter = createInterpreter(symbolTable);
154
155 44139 jjdelcerro
        String source = "null";
156
157 43512 jjdelcerro
        Code code = compiler.compileExpression(source);
158
        assertEquals(null, interpreter.run(code));
159
    }
160
161 44384 jjdelcerro
    public void testIsNull() {
162
        SymbolTable symbolTable = createSymbolTable();
163
        Compiler compiler = createCompiler();
164
        Interpreter interpreter = createInterpreter(symbolTable);
165
166
        String source = "10 is null";
167
168
        Code code = compiler.compileExpression(source);
169
        assertEquals(false, interpreter.run(code));
170
    }
171
172
    public void testIsNotNull() {
173
        SymbolTable symbolTable = createSymbolTable();
174
        Compiler compiler = createCompiler();
175
        Interpreter interpreter = createInterpreter(symbolTable);
176
177
        String source = "10 is not null";
178
179
        Code code = compiler.compileExpression(source);
180
        assertEquals(true, interpreter.run(code));
181
    }
182
183 43512 jjdelcerro
    public void testAdd1() {
184
        SymbolTable symbolTable = createSymbolTable();
185
        Compiler compiler = createCompiler();
186
        Interpreter interpreter = createInterpreter(symbolTable);
187
188 44139 jjdelcerro
        String source = "precio + 10";
189
190 43512 jjdelcerro
        Code code = compiler.compileExpression(source);
191
        Object v = interpreter.run(code);
192
        assertEquals(210, ((Number)v).intValue());
193
    }
194
195 44098 jjdelcerro
    public void testSimpleAdd1() {
196
        SymbolTable symbolTable = createSymbolTable();
197
        Compiler compiler = createCompiler();
198
        Interpreter interpreter = createInterpreter(symbolTable);
199
200 44139 jjdelcerro
        String source = "5+10";
201
202 44098 jjdelcerro
        Code code = compiler.compileExpression(source);
203
        Object v = interpreter.run(code);
204
        assertEquals(15, ((Number)v).intValue());
205
    }
206
207
    public void testSimpleAdd2() {
208
        SymbolTable symbolTable = createSymbolTable();
209
        Compiler compiler = createCompiler();
210
        Interpreter interpreter = createInterpreter(symbolTable);
211
212 44139 jjdelcerro
        String source = "5 + 10";
213
214 44098 jjdelcerro
        Code code = compiler.compileExpression(source);
215
        Object v = interpreter.run(code);
216
        assertEquals(15, ((Number)v).intValue());
217
    }
218
219
    public void testSimpleAdd3() {
220
        SymbolTable symbolTable = createSymbolTable();
221
        Compiler compiler = createCompiler();
222
        Interpreter interpreter = createInterpreter(symbolTable);
223
224 44139 jjdelcerro
        String source = "10+-5";
225
226 44098 jjdelcerro
        Code code = compiler.compileExpression(source);
227
        Object v = interpreter.run(code);
228
        assertEquals(5, ((Number)v).intValue());
229
    }
230
231
    public void testSimpleSub1() {
232
        SymbolTable symbolTable = createSymbolTable();
233
        Compiler compiler = createCompiler();
234
        Interpreter interpreter = createInterpreter(symbolTable);
235
236 44139 jjdelcerro
        String source = "10-5";
237
238 44098 jjdelcerro
        Code code = compiler.compileExpression(source);
239
        Object v = interpreter.run(code);
240
        assertEquals(5, ((Number)v).intValue());
241
    }
242
243
    public void testSimpleSub2() {
244
        SymbolTable symbolTable = createSymbolTable();
245
        Compiler compiler = createCompiler();
246
        Interpreter interpreter = createInterpreter(symbolTable);
247
248 44139 jjdelcerro
        String source = "10 - 5";
249
250 44098 jjdelcerro
        Code code = compiler.compileExpression(source);
251
        Object v = interpreter.run(code);
252
        assertEquals(5, ((Number)v).intValue());
253
    }
254
255
    public void testSimpleNumber() {
256
        SymbolTable symbolTable = createSymbolTable();
257
        Compiler compiler = createCompiler();
258
        Interpreter interpreter = createInterpreter(symbolTable);
259
260 44139 jjdelcerro
        String source = "23";
261
262 44098 jjdelcerro
        Code code = compiler.compileExpression(source);
263
        Object v = interpreter.run(code);
264
        assertEquals(23, ((Number)v).intValue());
265
    }
266
267
    public void testSimpleNegativeNumber() {
268
        SymbolTable symbolTable = createSymbolTable();
269
        Compiler compiler = createCompiler();
270
        Interpreter interpreter = createInterpreter(symbolTable);
271
272 44139 jjdelcerro
        String source = "-23";
273
274 44098 jjdelcerro
        Code code = compiler.compileExpression(source);
275
        Object v = interpreter.run(code);
276
        assertEquals(-23, ((Number)v).intValue());
277
    }
278
279
    public void testNegateFunction() {
280
        SymbolTable symbolTable = createSymbolTable();
281
        Compiler compiler = createCompiler();
282
        Interpreter interpreter = createInterpreter(symbolTable);
283
284 44139 jjdelcerro
        String source = "-PI()";
285
286 44098 jjdelcerro
        Code code = compiler.compileExpression(source);
287
        Object v = interpreter.run(code);
288
        assertEquals(-Math.PI, ((Number)v).doubleValue());
289
    }
290
291 43512 jjdelcerro
    public void testSub1() {
292
        SymbolTable symbolTable = createSymbolTable();
293
        Compiler compiler = createCompiler();
294
        Interpreter interpreter = createInterpreter(symbolTable);
295
296 44139 jjdelcerro
        String source = "precio - 10";
297
298 43512 jjdelcerro
        Code code = compiler.compileExpression(source);
299
        Object v = interpreter.run(code);
300
        assertEquals(190, ((Number)v).intValue());
301
    }
302
303
    public void testMul1() {
304
        SymbolTable symbolTable = createSymbolTable();
305
        Compiler compiler = createCompiler();
306
        Interpreter interpreter = createInterpreter(symbolTable);
307
308 44139 jjdelcerro
        String source = "precio * 10";
309
310 43512 jjdelcerro
        Code code = compiler.compileExpression(source);
311
        Object v = interpreter.run(code);
312
        assertEquals(2000, ((Number)v).intValue());
313
    }
314
315
    public void testDiv1() {
316
        SymbolTable symbolTable = createSymbolTable();
317
        Compiler compiler = createCompiler();
318
        Interpreter interpreter = createInterpreter(symbolTable);
319
320 44139 jjdelcerro
        String source = "precio / 10";
321
322 43512 jjdelcerro
        Code code = compiler.compileExpression(source);
323
        Object v = interpreter.run(code);
324
        assertEquals(20, ((Number)v).intValue());
325
    }
326
327 44885 jjdelcerro
    public void testMod1() {
328
        SymbolTable symbolTable = createSymbolTable();
329
        Compiler compiler = createCompiler();
330
        Interpreter interpreter = createInterpreter(symbolTable);
331
332
        String source = "4 % 3";
333
334
        Code code = compiler.compileExpression(source);
335
        Object v = interpreter.run(code);
336
        assertEquals(1, ((Number)v).intValue());
337
    }
338
339
    public void testMod2() {
340
        SymbolTable symbolTable = createSymbolTable();
341
        Compiler compiler = createCompiler();
342
        Interpreter interpreter = createInterpreter(symbolTable);
343
344
        String source = "MOD(4, 3)";
345
346
        Code code = compiler.compileExpression(source);
347
        Object v = interpreter.run(code);
348
        assertEquals(1, ((Number)v).intValue());
349
    }
350
351 43512 jjdelcerro
    public void testAdd2() {
352
        SymbolTable symbolTable = createSymbolTable();
353
        Compiler compiler = createCompiler();
354
        Interpreter interpreter = createInterpreter(symbolTable);
355
356 44139 jjdelcerro
        String source = "precio + 10 + 20 + 30";
357
358 43512 jjdelcerro
        Code code = compiler.compileExpression(source);
359
        Object v = interpreter.run(code);
360
        assertEquals(260, ((Number)v).intValue());
361
    }
362
363
    public void testAddMul() {
364
        SymbolTable symbolTable = createSymbolTable();
365
        Compiler compiler = createCompiler();
366
        Interpreter interpreter = createInterpreter(symbolTable);
367
368 44139 jjdelcerro
        String source = "precio + 10 * 2 + 20 + 30";
369
370 43512 jjdelcerro
        Code code = compiler.compileExpression(source);
371
        Object v = interpreter.run(code);
372
        assertEquals(270, ((Number)v).intValue());
373
    }
374
375 43519 jjdelcerro
    public void testAddMulPar() {
376
        SymbolTable symbolTable = createSymbolTable();
377
        Compiler compiler = createCompiler();
378
        Interpreter interpreter = createInterpreter(symbolTable);
379
380 44139 jjdelcerro
        String source = "(precio + 10) * 2 + 20 + 30";
381
382 43519 jjdelcerro
        Code code = compiler.compileExpression(source);
383
        Object v = interpreter.run(code);
384
        assertEquals(470, ((Number)v).intValue());
385
    }
386
387
    public void testAbs() {
388
        SymbolTable symbolTable = createSymbolTable();
389
        Compiler compiler = createCompiler();
390
        Interpreter interpreter = createInterpreter(symbolTable);
391
392 44139 jjdelcerro
        String source = "precio + abs(10)";
393
394 43519 jjdelcerro
        Code code = compiler.compileExpression(source);
395
        Object v = interpreter.run(code);
396
        assertEquals(210, ((Number)v).intValue());
397
    }
398
399
    public void testAbs2() {
400
        SymbolTable symbolTable = createSymbolTable();
401
        Compiler compiler = createCompiler();
402
        Interpreter interpreter = createInterpreter(symbolTable);
403
404 44139 jjdelcerro
        String source = "precio + abs(-10)";
405
406 43519 jjdelcerro
        Code code = compiler.compileExpression(source);
407
        Object v = interpreter.run(code);
408
        assertEquals(210, ((Number)v).intValue());
409
    }
410
411
    public void testCeil() {
412
        SymbolTable symbolTable = createSymbolTable();
413
        Compiler compiler = createCompiler();
414
        Interpreter interpreter = createInterpreter(symbolTable);
415
416 44139 jjdelcerro
        String source = "precio + CEIL(PI())";
417
418 43519 jjdelcerro
        Code code = compiler.compileExpression(source);
419
        Object v = interpreter.run(code);
420
        assertEquals(204, ((Number)v).intValue());
421
    }
422
423
    public void testConcat() {
424
        SymbolTable symbolTable = createSymbolTable();
425
        Compiler compiler = createCompiler();
426
        Interpreter interpreter = createInterpreter(symbolTable);
427
428 44139 jjdelcerro
        String source = "CONCAT(precio,' euros')";
429
430 43519 jjdelcerro
        Code code = compiler.compileExpression(source);
431
        Object v = interpreter.run(code);
432
        assertEquals("200 euros", (String)v);
433
    }
434 43521 jjdelcerro
435
    public void testAccuracy() {
436
437
        SymbolTable symbolTable = createSymbolTable();
438
        Compiler compiler = createCompiler();
439
        Interpreter interpreter = createInterpreter(symbolTable);
440
        Code code;
441
        Object v;
442
443 44139 jjdelcerro
        compiler.getLexicalAnalyzer().setUseBracketsForIdentifiers(true);
444
445 43521 jjdelcerro
        code = compiler.compileExpression("[1990] = 0.168873933773767");
446
        v = interpreter.run(code);
447
        assertEquals(true, ((Boolean)v).booleanValue());
448
449
        code = compiler.compileExpression("[1990] = 0.1688739");
450
        v = interpreter.run(code);
451
        assertEquals(false, ((Boolean)v).booleanValue());
452
453
        interpreter.setAccuracy(0.0000001);
454
        v = interpreter.run(code);
455
        assertEquals(true, ((Boolean)v).booleanValue());
456 43532 jjdelcerro
    }
457
458
    public void test2fields() {
459
        SymbolTable symbolTable = createSymbolTable();
460
        Compiler compiler = createCompiler();
461
        Interpreter interpreter = createInterpreter(symbolTable);
462
463 44139 jjdelcerro
        compiler.getLexicalAnalyzer().setUseBracketsForIdentifiers(true);
464
465
        String source = "[1990] = [precio]";
466
467
        compiler.getLexicalAnalyzer().setUseBracketsForIdentifiers(true);
468 43532 jjdelcerro
        Code code = compiler.compileExpression(source);
469
        Object v = interpreter.run(code);
470
        assertEquals(false, ((Boolean)v).booleanValue());
471 43939 jjdelcerro
    }
472
473
474
    public void testInvokeMethod1() {
475
        SymbolTable symbolTable = createSymbolTable();
476
        Compiler compiler = createCompiler();
477
        Interpreter interpreter = createInterpreter(symbolTable);
478
479 44139 jjdelcerro
        String source = "'hola'.length()";
480
481 43939 jjdelcerro
        Code code = compiler.compileExpression(source);
482
        Object v = interpreter.run(code);
483
484
        assertEquals(4, ((Number)v).intValue());
485
    }
486
487
488
    public void testInvokeMethod2() {
489 44139 jjdelcerro
        SymbolTable symbolTable = createSymbolTable();
490
        Compiler compiler = createCompiler();
491
        Interpreter interpreter = createInterpreter(symbolTable);
492
493 43939 jjdelcerro
        String source = "'hola'.indexOf('l')";
494
495 44139 jjdelcerro
        Code code = compiler.compileExpression(source);
496
        Object v = interpreter.run(code);
497
498
        assertEquals(2, ((Number)v).intValue());
499
    }
500
501
    public void testAlias() {
502 43939 jjdelcerro
        SymbolTable symbolTable = createSymbolTable();
503
        Compiler compiler = createCompiler();
504
        Interpreter interpreter = createInterpreter(symbolTable);
505
506 44139 jjdelcerro
        String source = "UPPER('hola')";
507 43939 jjdelcerro
        Code code = compiler.compileExpression(source);
508
        Object v = interpreter.run(code);
509 44139 jjdelcerro
        assertEquals("HOLA", (String)v);
510 43939 jjdelcerro
511 44139 jjdelcerro
512
        source = "UCASE('hola')";
513
        code = compiler.compileExpression(source);
514
        v = interpreter.run(code);
515
        assertEquals("HOLA", (String)v);
516 43939 jjdelcerro
    }
517 44139 jjdelcerro
518
    public void testRegexp1() {
519
        SymbolTable symbolTable = createSymbolTable();
520
        Compiler compiler = createCompiler();
521
        Interpreter interpreter = createInterpreter(symbolTable);
522
523
        String source = "'Hola' ~ '[Hh]ola'" ;
524
        Code code = compiler.compileExpression(source);
525
        Object v = interpreter.run(code);
526
        assertTrue((Boolean)v);
527
    }
528 43939 jjdelcerro
529 44139 jjdelcerro
    public void testGetitem1() {
530
        SymbolTable symbolTable = createSymbolTable();
531
        Compiler compiler = createCompiler();
532
        Interpreter interpreter = createInterpreter(symbolTable);
533
        compiler.getLexicalAnalyzer().setUseBracketsForIdentifiers(false);
534
535
        String source = "LIST('uno','dos','tres')[1]" ;
536
537
        Code code = compiler.compileExpression(source);
538
        Object v = interpreter.run(code);
539
        assertEquals("dos", (String)v);
540
    }
541 43939 jjdelcerro
542 44855 jjdelcerro
    public void testGetattr1() {
543
        MutableSymbolTable symbolTable = createSymbolTable();
544
        Compiler compiler = createCompiler();
545
        Interpreter interpreter = createInterpreter(symbolTable);
546
        compiler.getLexicalAnalyzer().setUseBracketsForIdentifiers(false);
547
548
        symbolTable.setVar(
549
          "PARCELA",
550
          (AttributeHandler) (String key) -> StringUtils.equalsIgnoreCase(key, "MASA")? "100":null
551
        );
552
        String source = "PARCELA.MASA" ;
553
554
        Code code = compiler.compileExpression(source);
555
        assertEquals("GETATTR(\"PARCELA\", 'MASA')", code.toString());
556
557
        Object v = interpreter.run(code);
558
        assertEquals("100", (String)v);
559
    }
560 45025 jjdelcerro
561
    public void testDict1() {
562
        MutableSymbolTable symbolTable = createSymbolTable();
563
        Compiler compiler = createCompiler();
564
        Interpreter interpreter = createInterpreter(symbolTable);
565
566
        String source = "dict()" ;
567
568
        Code code = compiler.compileExpression(source);
569
        assertEquals("dict()", code.toString());
570
571
        Object v = interpreter.run(code);
572
        assertTrue("Map expected", v instanceof Map);
573
        assertEquals(0, ((Map)v).size());
574
    }
575
576
    public void testDict2() {
577
        MutableSymbolTable symbolTable = createSymbolTable();
578
        Compiler compiler = createCompiler();
579
        Interpreter interpreter = createInterpreter(symbolTable);
580
581
        String source = "dict(diez=10, veinte:20)" ;
582
583
        Code code = compiler.compileExpression(source);
584
        assertEquals("DICT('diez', 10, 'veinte', 20)", code.toString());
585
586
        Object v = interpreter.run(code);
587
        assertTrue("Map expected", v instanceof Map);
588
        assertEquals(2, ((Map)v).size());
589
        assertEquals(10, ((Number)((Map)v).get("diez")).intValue());
590
        assertEquals(20, ((Number)((Map)v).get("veinte")).intValue());
591
    }
592
593
    public void testDict3() {
594
        MutableSymbolTable symbolTable = createSymbolTable();
595
        Compiler compiler = createCompiler();
596
        Interpreter interpreter = createInterpreter(symbolTable);
597
598
        String source = "dict('diez', 10, 'veinte', 20)" ;
599
600
        Code code = compiler.compileExpression(source);
601
        assertEquals("dict('diez', 10, 'veinte', 20)", code.toString());
602
603
        Object v = interpreter.run(code);
604
        assertTrue("Map expected", v instanceof Map);
605
        assertEquals(2, ((Map)v).size());
606
        assertEquals(10, ((Number)((Map)v).get("diez")).intValue());
607
        assertEquals(20, ((Number)((Map)v).get("veinte")).intValue());
608
    }
609
610 43939 jjdelcerro
}