Added: velocity/engine/branches/2.0_Exp/src/test/org/apache/velocity/test/MacroDefaultArgTestCase.java URL: http://svn.apache.org/viewvc/velocity/engine/branches/2.0_Exp/src/test/org/apache/velocity/test/MacroDefaultArgTestCase.java?rev=745007&view=auto ============================================================================== --- velocity/engine/branches/2.0_Exp/src/test/org/apache/velocity/test/MacroDefaultArgTestCase.java (added) +++ velocity/engine/branches/2.0_Exp/src/test/org/apache/velocity/test/MacroDefaultArgTestCase.java Tue Feb 17 12:30:05 2009 @@ -0,0 +1,76 @@ +package org.apache.velocity.test; + +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +import org.apache.velocity.exception.MethodInvocationException; +import org.apache.velocity.exception.VelocityException; +import org.apache.velocity.exception.ParseErrorException; +import org.apache.velocity.runtime.RuntimeConstants; + +/** + * Test macro default parameters. + */ +public class MacroDefaultArgTestCase extends BaseTestCase +{ + public MacroDefaultArgTestCase(String name) + { + super(name); + } + + public void setUp() throws Exception + { + super.setUp(); + engine.setProperty(RuntimeConstants.RUNTIME_REFERENCES_STRICT, Boolean.TRUE); + engine.setProperty(RuntimeConstants.VM_ARGUMENTS_STRICT, Boolean.TRUE); + engine.setProperty(RuntimeConstants.VM_PERM_INLINE_LOCAL, Boolean.TRUE); + engine.setProperty(RuntimeConstants.RUNTIME_REFERENCES_STRICT_ESCAPE, Boolean.TRUE); + } + + public void testCompare() + { + assertEvalEquals("121", "#macro(foo $a=1)$a#end#foo()#foo(2)#foo"); + assertEvalEquals("12", "#macro(foo $a = 1)$a#end#foo()#foo(2)"); + assertEvalEquals("12", "#macro(foo $a= 1 )$a#end#foo()#foo(2)"); + assertEvalEquals("1x2x", "#macro(foo $a= 1 $b = \"x\")$a$b#end#foo()#foo(2)"); + assertEvalEquals("1 2 5 2 5 [1, 2] ", "#macro(foo $a=1 $b=2)$a $b #end#foo()#foo(5)#foo(5 [1,2])"); + assertEvalEquals("1 2 5 2 5 [1, 2] ", "#macro(foo $a=1 , $b=2)$a $b #end#foo()#foo(5)#foo(5 [1,2])"); + assertEvalEquals("1 2 5 2 5 [1, 2] ", "#macro(foo, $a=1\n $b =2 )$a $b #end#foo()#foo(5)#foo(5 [1,2])"); + + assertEvalEquals("3 2 5 2 5 [1, 2] ", "#macro(foo, $a=$x $b =2 )$a $b #end#set($x=3)#foo()#foo(5)#foo(5 [1,2])"); + assertEvalEquals("{a=3} 2 5 2 5 [1, 2] ", "#macro(foo, $a = {\"a\":$x} $b =2 )$a $b #end#set($x=3)#foo()#foo(5)#foo(5 [1,2])"); + + assertEvalEquals("3 2 5 2 5 [1, 2] ", "#macro(foo, $a = \"$x\" $b =2 )$a $b #end#set($x=3)#foo()#foo(5)#foo(5 [1,2])"); + assertEvalEquals("3$y 2 5 2 5 [1, 2] ", "#macro(foo, $a = \"$x\\$y\" $b =2 )$a $b #end#set($x=3)#foo()#foo(5)#foo(5 [1,2])"); + assertEvalEquals("5 3 2 5 [1, 2] 2 ", "#macro(foo, $c $a = \"$x\" $b =2 )$c $a $b #end#set($x=3)#foo(5)#foo(5 [1,2])"); + + assertEvalEquals("1xno2xyes", "#macro(foo $a= 1 $b = \"x\")$a$b$bodycontent#e...@foo()no#e...@foo(2)yes#end"); + + assertEvalEquals("xy", "#macro(foo $a=\"$b$c\"##\n)$a#end#set($b=\"x\")#set($c=\"y\")#foo()"); + } + + public void testErrors() + { + assertEvalException("#macro(foo $a = 1 $b)#end"); + assertEvalException("#macro(foo $c $a = 3 $b)#end"); + assertEvalException("#macro(foo $a $b = 1)#end#foo()"); // Too few arguments + assertEvalException("#macro(foo $a $b $c = 4)#end#foo(1)"); // Too few arguments + assertEvalException("#macro(foo $a = 3)#end#foo(2 3)"); // Too many arguments + } +}
Modified: velocity/engine/branches/2.0_Exp/src/test/org/apache/velocity/test/ParseExceptionTestCase.java URL: http://svn.apache.org/viewvc/velocity/engine/branches/2.0_Exp/src/test/org/apache/velocity/test/ParseExceptionTestCase.java?rev=745007&r1=745006&r2=745007&view=diff ============================================================================== --- velocity/engine/branches/2.0_Exp/src/test/org/apache/velocity/test/ParseExceptionTestCase.java (original) +++ velocity/engine/branches/2.0_Exp/src/test/org/apache/velocity/test/ParseExceptionTestCase.java Tue Feb 17 12:30:05 2009 @@ -29,6 +29,8 @@ import org.apache.velocity.VelocityContext; import org.apache.velocity.app.VelocityEngine; import org.apache.velocity.exception.ParseErrorException; +import org.apache.velocity.exception.VelocityException; +import org.apache.velocity.runtime.RuntimeConstants; /** * Test parser exception is generated with appropriate info. @@ -54,15 +56,9 @@ super(name); } - public void setUp() - throws Exception - { - - } - - public static Test suite () + public void setUp() throws Exception { - return new TestSuite(ParseExceptionTestCase.class); + super.setUp(); } /** @@ -112,32 +108,7 @@ public void testParseExceptionFromEval () throws Exception { - - VelocityEngine ve = new VelocityEngine(); - ve.init(); - - VelocityContext context = new VelocityContext(); - - Writer writer = new StringWriter(); - - try - { - ve.evaluate(context,writer,"test"," #set($abc) "); - fail("Should have thown a ParseErrorException"); - } - catch (ParseErrorException e) - { - assertEquals("test",e.getTemplateName()); - assertEquals(1,e.getLineNumber()); - assertEquals(13,e.getColumnNumber()); - } - finally - { - if (writer != null) - { - writer.close(); - } - } + assertEvalExceptionAt(" #set($abc) ", 1, 13); } /** @@ -148,31 +119,7 @@ public void testParseExceptionFromMacroDef () throws Exception { - VelocityEngine ve = new VelocityEngine(); - ve.init(); - - VelocityContext context = new VelocityContext(); - - Writer writer = new StringWriter(); - - try - { - ve.evaluate(context,writer,"testMacro","#macro($blarg) foo #end"); - fail("Should have thown a ParseErrorException"); - } - catch (ParseErrorException e) - { - assertEquals("testMacro",e.getTemplateName()); - assertEquals(1,e.getLineNumber()); - assertEquals(7,e.getColumnNumber()); - } - finally - { - if (writer != null) - { - writer.close(); - } - } + assertEvalExceptionAt("#macro($blarg) foo #end", 1, 7); } /** @@ -183,31 +130,7 @@ public void testParseExceptionFromMacroDefBody () throws Exception { - VelocityEngine ve = new VelocityEngine(); - ve.init(); - - VelocityContext context = new VelocityContext(); - - Writer writer = new StringWriter(); - - try - { - ve.evaluate(context,writer,"testMacro","#macro(aa $blarg) #set(!! = bb) #end #aa('aa')"); - fail("Should have thown a ParseErrorException"); - } - catch (ParseErrorException e) - { - assertEquals("testMacro",e.getTemplateName()); - assertEquals(1,e.getLineNumber()); - assertEquals(24,e.getColumnNumber()); - } - finally - { - if (writer != null) - { - writer.close(); - } - } + assertEvalExceptionAt("#macro(aa $blarg) #set(!! = bb) #end #aa('aa')", 1, 24); } /** @@ -216,33 +139,8 @@ * @throws Exception */ public void testParseExceptionFromMacroInvoke () - throws Exception { - VelocityEngine ve = new VelocityEngine(); - ve.init(); - - VelocityContext context = new VelocityContext(); - - Writer writer = new StringWriter(); - - try - { - ve.evaluate(context,writer,"testMacroInvoke", "#macro( foo $a) $a #end #foo(woogie)"); - fail("Should have thown a ParseErrorException"); - } - catch (org.apache.velocity.exception.TemplateInitException e) - { - assertEquals("testMacroInvoke",e.getTemplateName()); - assertEquals(1,e.getLineNumber()); - assertEquals(27,e.getColumnNumber()); - } - finally - { - if (writer != null) - { - writer.close(); - } - } + assertEvalExceptionAt("#macro( foo $a) $a #end #foo(woogie)", 1, 32); } @@ -254,32 +152,8 @@ public void testParseExceptionMacroInvalidArgumentCount () throws Exception { - VelocityEngine ve = new VelocityEngine(); - ve.setProperty("velocimacro.arguments.strict","true"); - ve.init(); - - VelocityContext context = new VelocityContext(); - - Writer writer = new StringWriter(); - - try - { - ve.evaluate(context,writer,"testMacroInvoke", "#macro(foo $a) $a #end #foo('test1' 'test2')"); - fail("Should have thown a ParseErrorException"); - } - catch (ParseErrorException e) - { - assertEquals("testMacroInvoke",e.getTemplateName()); - assertEquals(1,e.getLineNumber()); - assertEquals(24,e.getColumnNumber()); - } - finally - { - if (writer != null) - { - writer.close(); - } - } + engine.setProperty(RuntimeConstants.VM_ARGUMENTS_STRICT,"true"); + assertEvalExceptionAt("#macro(foo $a) $a #end #foo('test1' 'test2')", 1, 24); } @@ -291,25 +165,7 @@ public void testParseExceptionMacroInvalidArgumentCountNoException () throws Exception { - VelocityEngine ve = new VelocityEngine(); - ve.init(); - - VelocityContext context = new VelocityContext(); - - Writer writer = new StringWriter(); - - // will not throw an exception - try - { - ve.evaluate(context,writer,"testMacroInvoke", "#macro(foo $a) $a #end #foo('test1' 'test2')"); - } - finally - { - if (writer != null) - { - writer.close(); - } - } + assertEvalEquals("test1", "#macro(foo $a)$a#end#foo('test1' 'test2')"); }
