1 /***
2 * ExpressionCompilerTest.java
3 *
4 * $Author: mballesteros $
5 * $Date: 2003/11/28 19:18:03 $
6 * $Revision: 1.1 $
7 */
8 package net.sf.jec;
9
10 import java.util.HashMap;
11
12 import junit.framework.Test;
13 import junit.framework.TestCase;
14 import junit.framework.TestSuite;
15
16 /***
17 *
18 * @author mballesteros
19 */
20 public class ExpressionCompilerTest extends TestCase {
21
22 public ExpressionCompilerTest(java.lang.String testName) {
23 super(testName);
24 }
25
26 public static void main(java.lang.String[] args) {
27 junit.textui.TestRunner.run(suite());
28 }
29
30 public static Test suite() {
31 TestSuite suite = new TestSuite(ExpressionCompilerTest.class);
32 return suite;
33 }
34
35 //-------------------------------------------------------------------------
36 // Prueba de operadores
37 //-------------------------------------------------------------------------
38 private HashMap ctx;
39 private Book book;
40 private ExpressionCompiler expcomp;
41 Operator op;
42 InvertibleOperator iop;
43
44 public void setUp() throws Exception {
45 //Operator.showFunctionString = true;
46 book = Book.getExample();
47 ctx = new HashMap();
48 ctx.put("book", book);
49 ctx.put("intIndex", "0");
50 ctx.put("strIndex", "1");
51 ctx.put("_view", new HashMap());
52
53 expcomp = new ExpressionCompiler(false);
54 }
55
56 public void testAccessorExpression() throws Exception {
57 // Probamos que obtenemos el libro que hemos almacenado en la HashMap
58 op = expcomp.compileOperator("book");
59 assertEquals(op.apply(ctx, ctx), book);
60
61 // Probamos que obtenermos las páginas del libro...
62 op = expcomp.compileOperator("book.pages");
63 assertEquals(op.apply(ctx, ctx), book.getPages());
64 }
65
66 public void testMapAccessorExpression() throws Exception {
67 // Inicialmente la variable está a null
68 iop = (InvertibleOperator) expcomp.compileOperator("_view._activeTab");
69 assertNull(iop.apply(ctx, ctx));
70
71 // Ahora le fijamos un valor
72 String value = "test_value";
73 iop.applyInverse(ctx, ctx, value);
74 assertEquals(value, iop.apply(ctx, ctx));
75 }
76
77 public void testIndexerExpression() throws Exception {
78 // Probamos que obtenemos la primera página del libro
79 op = expcomp.compileOperator("book.pages[0]");
80 assertEquals(op.apply(ctx, ctx), book.getPages().get(0));
81
82 // Probamos que podemos anidar más allá del operador de indexación
83 op = expcomp.compileOperator("book.pages[0].text");
84 assertEquals(op.apply(ctx, ctx), ((Page)book.getPages().get(0)).getText());
85 }
86
87 public void testBooleanExpression() throws Exception {
88 // Probando '=='
89 op = expcomp.compileOperator("10==10");
90 assertEquals(op.apply(ctx, ctx), Boolean.TRUE);
91 op = expcomp.compileOperator("10==1");
92 assertEquals(op.apply(ctx, ctx), Boolean.FALSE);
93
94 // Probando '!='
95 op = expcomp.compileOperator("10!=1");
96 assertEquals(op.apply(ctx, ctx), Boolean.TRUE);
97 op = expcomp.compileOperator("10!=10");
98 assertEquals(op.apply(ctx, ctx), Boolean.FALSE);
99
100 // Probando '<'
101 op = expcomp.compileOperator("1<10");
102 assertEquals(op.apply(ctx, ctx), Boolean.TRUE);
103 op = expcomp.compileOperator("10<10");
104 assertEquals(op.apply(ctx, ctx), Boolean.FALSE);
105 op = expcomp.compileOperator("'aaa'<'aaaa'");
106 assertEquals(op.apply(ctx, ctx), Boolean.TRUE);
107 op = expcomp.compileOperator("'aaab'<'aaaa'");
108 assertEquals(op.apply(ctx, ctx), Boolean.FALSE);
109
110 // Probando '>'
111 op = expcomp.compileOperator("10>1");
112 assertEquals(op.apply(ctx, ctx), Boolean.TRUE);
113 op = expcomp.compileOperator("10>10");
114 assertEquals(op.apply(ctx, ctx), Boolean.FALSE);
115 }
116
117 public void testArithmeticExpression() throws Exception {
118 op = expcomp.compileOperator("50+25");
119 assertEquals(new Double(50+25), op.apply(ctx, ctx));
120
121 op = expcomp.compileOperator("50+25*2");
122 assertEquals(new Double(50+25*2), op.apply(ctx, ctx));
123
124 op = expcomp.compileOperator("(50+25)*2");
125 assertEquals(new Double((50+25)*2), op.apply(ctx, ctx));
126
127 op = expcomp.compileOperator("(50+25*2)/100");
128 assertEquals(new Double((50+25*2)/100), op.apply(ctx, ctx));
129
130 op = expcomp.compileOperator("(50+25*2)/100==1");
131 assertEquals(Boolean.TRUE, op.apply(ctx, ctx));
132 }
133
134 public void testAssignExpression() throws Exception {
135 op = expcomp.compileOperator("book.pages[0].paragraphs[0].text");
136 assertEquals( ((Paragraph)((Page)book.getPages().get(0)).getParagraphs().get(0)).getText(), op.apply(ctx, ctx));
137
138 String testText = "Test String";
139 op = expcomp.compileOperator("book.pages[0].paragraphs[0].text='"+testText+"'");
140 assertEquals(Boolean.TRUE, op.apply(ctx, ctx));
141 assertEquals(testText, ((Paragraph)((Page)book.getPages().get(0)).getParagraphs().get(0)).getText());
142 }
143 }
This page was automatically generated by Maven