blob: 80ac497883dd7a5d0b349d3fd6b48656b13702d5 [file] [log] [blame]
Armin Ronacherccf284b2007-05-21 16:44:26 +02001# -*- coding: utf-8 -*-
2"""
3 unit test for the parser
4 ~~~~~~~~~~~~~~~~~~~~~~~~
5
6 :copyright: 2007 by Armin Ronacher.
7 :license: BSD, see LICENSE for more details.
8"""
Christoph Hacke9e43bb2008-04-13 23:35:48 +02009from jinja2 import Environment
Armin Ronacherccf284b2007-05-21 16:44:26 +020010
Armin Ronacherccf284b2007-05-21 16:44:26 +020011
12PHP_SYNTAX = '''\
13<!-- I'm a comment, I'm not interesting -->\
14<? for item in seq -?>
15 <?= item ?>
16<?- endfor ?>'''
17
18ERB_SYNTAX = '''\
19<%# I'm a comment, I'm not interesting %>\
20<% for item in seq -%>
21 <%= item %>
22<%- endfor %>'''
23
24COMMENT_SYNTAX = '''\
25<!--# I'm a comment, I'm not interesting -->\
26<!-- for item in seq --->
27 ${item}
28<!--- endfor -->'''
29
Armin Ronacher4f7d2d52008-04-22 10:40:26 +020030MAKO_SYNTAX = '''\
31% for item in seq:
32 ${item}
33% endfor'''
Armin Ronacherccf284b2007-05-21 16:44:26 +020034
Armin Ronacherecc051b2007-06-01 18:25:28 +020035BALANCING = '''{{{'foo':'bar'}.foo}}'''
36
Armin Ronacher9b0545a2007-09-26 13:16:41 +020037STARTCOMMENT = '''{# foo comment
38and bar comment #}
39{% macro blub() %}foo{% endmacro %}
40{{ blub() }}'''
41
Armin Ronacherccf284b2007-05-21 16:44:26 +020042
Armin Ronacherccf284b2007-05-21 16:44:26 +020043def test_php_syntax():
44 env = Environment('<?', '?>', '<?=', '?>', '<!--', '-->')
45 tmpl = env.from_string(PHP_SYNTAX)
46 assert tmpl.render(seq=range(5)) == '01234'
47
48
49def test_erb_syntax():
50 env = Environment('<%', '%>', '<%=', '%>', '<%#', '%>')
51 tmpl = env.from_string(ERB_SYNTAX)
52 assert tmpl.render(seq=range(5)) == '01234'
53
54
55def test_comment_syntax():
56 env = Environment('<!--', '-->', '${', '}', '<!--#', '-->')
57 tmpl = env.from_string(COMMENT_SYNTAX)
58 assert tmpl.render(seq=range(5)) == '01234'
59
60
Armin Ronacherecc051b2007-06-01 18:25:28 +020061def test_balancing(env):
62 tmpl = env.from_string(BALANCING)
63 assert tmpl.render() == 'bar'
Armin Ronacher9b0545a2007-09-26 13:16:41 +020064
65
66def test_start_comment(env):
67 tmpl = env.from_string(STARTCOMMENT)
68 assert tmpl.render().strip() == 'foo'
Armin Ronacher4f7d2d52008-04-22 10:40:26 +020069
70
71def test_line_syntax():
72 env = Environment('<%', '%>', '${', '}', '<%#', '%>', '%')
73 tmpl = env.from_string(MAKO_SYNTAX)
74 assert [int(x.strip()) for x in tmpl.render(seq=range(5)).split()] == \
75 range(5)