1 package org.apache.velocity.test.issues;
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22 import org.apache.velocity.exception.ParseErrorException;
23 import org.apache.velocity.test.BaseEvalTestCase;
24
25
26
27
28 public class Velocity614TestCase extends BaseEvalTestCase
29 {
30 public Velocity614TestCase(String name)
31 {
32 super(name);
33 }
34
35 public void testSchmoo()
36 {
37 String template = "#something(Stuff)";
38 assertEvalEquals(template, template);
39 }
40
41 public void testEscapeSchmooButNotReallySinceSchmooHasNoEscaping()
42 {
43 String template = "\\#something(Stuff)";
44 assertEvalEquals(template, template);
45 }
46
47 public void testEscapeMacroWithBadArg()
48 {
49 String template = "#macro( evil $arg )$arg#end \\#evil(bar)";
50 assertEvalEquals(" #evil(bar)", template);
51 }
52
53 public void testEarlyDefinedMacroWithBadArg()
54 {
55
56 log.off();
57 assertEvalException("#macro( evil $arg )$arg#end #evil(bar)");
58 log.on();
59 }
60
61
62 public void testLateDefinedMacroWithGoodArg()
63 {
64 String good = "#good('bar') #macro( good $arg )$arg#end";
65 assertEvalEquals("bar ", good);
66 }
67
68 public void testDirectivesWithBadArg()
69 {
70
71 log.off();
72 assertEvalException("#foreach(Stuff in That)foo#end");
73 assertEvalException("#include(Stuff)");
74 assertEvalException("#parse(Stuff)");
75 assertEvalException("#define(Stuff)foo#end");
76 assertEvalException("#macro( name Stuff)foo#end");
77 assertEvalException("#foreach($i in [1..3])#break(Stuff)#end");
78 assertEvalException("#literal(Stuff)foo#end");
79 assertEvalException("#evaluate(Stuff)", ParseErrorException.class);
80 log.on();
81 }
82
83 public void testLateDefinedMacroWithBadArg()
84 {
85 String evil = "#evil(bar) #macro( evil $arg )$arg#end";
86 assertEvalException(evil, ParseErrorException.class);
87 }
88
89 }