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