View Javadoc
1 /* 2 * $Header: /home/cvs/jakarta-commons-sandbox/jelly/src/test/org/apache/commons/jelly/TestCoreTags.java,v 1.8 2002/05/28 07:20:06 jstrachan Exp $ 3 * $Revision: 1.8 $ 4 * $Date: 2002/05/28 07:20:06 $ 5 * 6 * ==================================================================== 7 * 8 * The Apache Software License, Version 1.1 9 * 10 * Copyright (c) 1999-2002 The Apache Software Foundation. All rights 11 * reserved. 12 * 13 * Redistribution and use in source and binary forms, with or without 14 * modification, are permitted provided that the following conditions 15 * are met: 16 * 17 * 1. Redistributions of source code must retain the above copyright 18 * notice, this list of conditions and the following disclaimer. 19 * 20 * 2. Redistributions in binary form must reproduce the above copyright 21 * notice, this list of conditions and the following disclaimer in 22 * the documentation and/or other materials provided with the 23 * distribution. 24 * 25 * 3. The end-user documentation included with the redistribution, if 26 * any, must include the following acknowlegement: 27 * "This product includes software developed by the 28 * Apache Software Foundation (http://www.apache.org/)." 29 * Alternately, this acknowlegement may appear in the software itself, 30 * if and wherever such third-party acknowlegements normally appear. 31 * 32 * 4. The names "The Jakarta Project", "Commons", and "Apache Software 33 * Foundation" must not be used to endorse or promote products derived 34 * from this software without prior written permission. For written 35 * permission, please contact apache@apache.org. 36 * 37 * 5. Products derived from this software may not be called "Apache" 38 * nor may "Apache" appear in their names without prior written 39 * permission of the Apache Group. 40 * 41 * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED 42 * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES 43 * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 44 * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR 45 * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 46 * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 47 * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF 48 * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND 49 * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, 50 * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT 51 * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 52 * SUCH DAMAGE. 53 * ==================================================================== 54 * 55 * This software consists of voluntary contributions made by many 56 * individuals on behalf of the Apache Software Foundation. For more 57 * information on the Apache Software Foundation, please see 58 * <http://www.apache.org/>;. 59 * 60 * $Id: TestCoreTags.java,v 1.8 2002/05/28 07:20:06 jstrachan Exp $ 61 */ 62 package org.apache.commons.jelly.expression; 63 64 import junit.framework.Test; 65 import junit.framework.TestCase; 66 import junit.framework.TestSuite; 67 import junit.textui.TestRunner; 68 69 import org.apache.commons.jelly.JellyContext; 70 import org.apache.commons.jelly.expression.jexl.JexlExpressionFactory; 71 72 import org.apache.commons.logging.Log; 73 import org.apache.commons.logging.LogFactory; 74 75 /*** 76 * Tests the use of Expression parsing 77 * 78 * @author <a href="mailto:jstrachan@apache.org">James Strachan</a> 79 * @version $Revision: 1.8 $ 80 */ 81 public class TestExpressions extends TestCase { 82 83 /*** The Log to which logging calls will be made. */ 84 private static final Log log = LogFactory.getLog(TestExpressions.class); 85 86 protected JellyContext context = new JellyContext(); 87 protected ExpressionFactory factory = new JexlExpressionFactory(); 88 89 public static void main(String[] args) { 90 TestRunner.run(suite()); 91 } 92 93 public static Test suite() { 94 return new TestSuite(TestExpressions.class); 95 } 96 97 public TestExpressions(String testName) { 98 super(testName); 99 } 100 101 public void testExpresssions() throws Exception { 102 context.setVariable("topping", "cheese"); 103 context.setVariable("type", "deepPan"); 104 105 106 assertExpression("foo", "foo"); 107 assertExpression("${topping}", "cheese"); 108 assertExpression("some${topping}", "somecheese"); 109 assertExpression(" some ${topping} ", " some cheese "); 110 assertExpression("${topping}y", "cheesey"); 111 assertExpression("A ${topping} ${type} pizza", "A cheese deepPan pizza"); 112 assertExpression("${topping}-${type}", "cheese-deepPan"); 113 } 114 115 public void testAntExpresssions() throws Exception { 116 context.setVariable("maven.home.foo", "cheese"); 117 118 assertExpression("${maven.home.foo}", "cheese"); 119 assertExpression("${maven.some.madeup.name}", null); 120 assertExpression("cheese ${maven.some.madeup.name}pizza", "cheese pizza"); 121 assertExpression("ham and ${maven.home.foo} pizza", "ham and cheese pizza"); 122 } 123 124 public void testNotConditions() throws Exception { 125 context.setVariable("a", Boolean.TRUE); 126 context.setVariable("b", Boolean.FALSE); 127 context.setVariable("c", "true"); 128 context.setVariable("d", "false"); 129 130 assertExpression("${a}", Boolean.TRUE); 131 assertExpression("${!a}", Boolean.FALSE); 132 assertExpression("${b}", Boolean.FALSE); 133 assertExpression("${!b}", Boolean.TRUE); 134 135 assertExpression("${c}", "true"); 136 assertExpression("${!c}", Boolean.FALSE); 137 assertExpression("${d}", "false"); 138 assertExpression("${!d}", Boolean.TRUE); 139 } 140 141 // ##### re-enable this line once the Jexl sub-resolver work is complete! 142 public void DISABLED_testNotConditionsWithDot() throws Exception { 143 context.setVariable("x.a", Boolean.TRUE); 144 context.setVariable("x.b", Boolean.FALSE); 145 context.setVariable("x.c", "true"); 146 context.setVariable("x.d", "false"); 147 148 assertExpression("${x.a}", Boolean.TRUE); 149 assertExpression("${!x.a}", Boolean.FALSE); 150 assertExpression("${x.b}", Boolean.FALSE); 151 assertExpression("${!x.b}", Boolean.TRUE); 152 153 assertExpression("${x.c}", "true"); 154 assertExpression("${!x.c}", Boolean.FALSE); 155 assertExpression("${x.d}", "false"); 156 assertExpression("${!x.d}", Boolean.TRUE); 157 } 158 159 // ##### re-enable this line once the Jexl sub-resolver work is complete! 160 public void DISABLED_testNull() throws Exception { 161 context.setVariable("something.blank", ""); 162 context.setVariable("something.ok", "cheese"); 163 164 165 assertExpression("${something.blank.length() == 0}", Boolean.TRUE); 166 assertExpression("${something.blank == ''}", Boolean.TRUE); 167 assertExpression("${something.ok != null}", Boolean.TRUE); 168 assertExpression("${something.ok != ''}", Boolean.TRUE); 169 assertExpression("${something.null != ''}", Boolean.FALSE); 170 assertExpression("${unknown == null}", Boolean.TRUE); 171 } 172 173 protected void assertExpression(String expressionText, Object expectedValue) throws Exception { 174 Expression expression = CompositeExpression.parse(expressionText, factory); 175 assertTrue( "Created a valid expression for: " + expressionText, expression != null ); 176 Object value = expression.evaluate(context); 177 //assertEquals( "Expression for: " + expressionText + " is: " + expression, expectedValue, value ); 178 assertEquals( "Wrong result for expression: " + expressionText, expectedValue, value ); 179 } 180 }

This page was automatically generated by Maven