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.exception.TemplateInitException;
24 import org.apache.velocity.test.BaseTestCase;
25
26
27
28
29 public class Velocity614TestCase extends BaseTestCase
30 {
31 public Velocity614TestCase(String name)
32 {
33 super(name);
34 }
35
36 public void testSchmoo()
37 {
38 String template = "#something(Stuff)";
39 assertEvalEquals(template, template);
40 }
41
42 public void testEscapeSchmooButNotReallySinceSchmooHasNoEscaping()
43 {
44 String template = "\\#something(Stuff)";
45 assertEvalEquals(template, template);
46 }
47
48 public void testEscapeMacroWithBadArg()
49 {
50 String template = "#macro( evil $arg )$arg#end \\#evil(bar)";
51 assertEvalEquals(" #evil(bar)", template);
52 }
53
54 public void testEarlyDefinedMacroWithBadArg()
55 {
56
57 log.off();
58 assertEvalException("#macro( evil $arg )$arg#end #evil(bar)");
59 log.on();
60 }
61
62
63 public void testLateDefinedMacroWithGoodArg()
64 {
65 String good = "#good('bar') #macro( good $arg )$arg#end";
66 assertEvalEquals("bar ", good);
67 }
68
69 public void testDirectivesWithBadArg()
70 {
71
72 log.off();
73 assertEvalException("#foreach(Stuff in That)foo#end");
74 assertEvalException("#include(Stuff)");
75 assertEvalException("#parse(Stuff)");
76 assertEvalException("#define(Stuff)foo#end");
77 assertEvalException("#macro( name Stuff)foo#end");
78 assertEvalException("#foreach($i in [1..3])#break(Stuff)#end");
79 assertEvalException("#literal(Stuff)foo#end");
80 assertEvalException("#evaluate(Stuff)", ParseErrorException.class);
81 log.on();
82 }
83
84 public void testLateDefinedMacroWithBadArg()
85 {
86 String evil = "#evil(bar) #macro( evil $arg )$arg#end";
87 assertEvalException(evil, TemplateInitException.class);
88 }
89
90 }