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