blob: e210b4b3d8c927e21efca4083f21f49d6c768c99 [file] [log] [blame]
Armin Ronacherab45b842007-03-18 20:47:50 +01001# -*- coding: utf-8 -*-
2"""
3 unit test for the test functions
4 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
5
Armin Ronacher62ccd1b2009-01-04 14:26:19 +01006 :copyright: (c) 2009 by the Jinja Team.
Armin Ronacherab45b842007-03-18 20:47:50 +01007 :license: BSD, see LICENSE for more details.
8"""
Armin Ronacher9f258ff2008-05-24 22:28:52 +02009from jinja2 import Environment, Markup
10
Armin Ronacherab45b842007-03-18 20:47:50 +010011
12DEFINED = '''{{ missing is defined }}|{{ true is defined }}'''
13EVEN = '''{{ 1 is even }}|{{ 2 is even }}'''
14LOWER = '''{{ "foo" is lower }}|{{ "FOO" is lower }}'''
Armin Ronacherab45b842007-03-18 20:47:50 +010015ODD = '''{{ 1 is odd }}|{{ 2 is odd }}'''
16SEQUENCE = '''{{ [1, 2, 3] is sequence }}|\
17{{ "foo" is sequence }}|\
18{{ 42 is sequence }}'''
19UPPER = '''{{ "FOO" is upper }}|{{ "foo" is upper }}'''
Armin Ronacher53042292008-04-26 18:30:19 +020020SAMEAS = '''{{ foo is sameas false }}|{{ 0 is sameas false }}'''
Armin Ronacher1cc232c2007-09-07 17:52:41 +020021NOPARENFORARG1 = '''{{ foo is sameas none }}'''
Armin Ronacher9f258ff2008-05-24 22:28:52 +020022TYPECHECKS = '''\
23{{ 42 is undefined }}
24{{ 42 is defined }}
25{{ 42 is none }}
26{{ none is none }}
27{{ 42 is number }}
28{{ 42 is string }}
29{{ "foo" is string }}
30{{ "foo" is sequence }}
31{{ [1] is sequence }}
32{{ range is callable }}
33{{ 42 is callable }}
34{{ range(5) is iterable }}'''
Armin Ronacherab45b842007-03-18 20:47:50 +010035
36
37def test_defined(env):
38 tmpl = env.from_string(DEFINED)
39 assert tmpl.render() == 'False|True'
40
41
42def test_even(env):
43 tmpl = env.from_string(EVEN)
44 assert tmpl.render() == 'False|True'
45
46
Armin Ronacher9f258ff2008-05-24 22:28:52 +020047def test_odd(env):
48 tmpl = env.from_string(ODD)
49 assert tmpl.render() == 'True|False'
50
51
Armin Ronacherab45b842007-03-18 20:47:50 +010052def test_lower(env):
53 tmpl = env.from_string(LOWER)
54 assert tmpl.render() == 'True|False'
55
56
Armin Ronacher9f258ff2008-05-24 22:28:52 +020057def test_typechecks(env):
58 tmpl = env.from_string(TYPECHECKS)
59 assert tmpl.render() == ''
Armin Ronacherab45b842007-03-18 20:47:50 +010060
61
62def test_sequence(env):
63 tmpl = env.from_string(SEQUENCE)
64 assert tmpl.render() == 'True|True|False'
65
66
67def test_upper(env):
68 tmpl = env.from_string(UPPER)
69 assert tmpl.render() == 'True|False'
Armin Ronacher69ddc582007-06-24 12:37:13 +020070
71
72def test_sameas(env):
73 tmpl = env.from_string(SAMEAS)
74 assert tmpl.render(foo=False) == 'True|False'
Armin Ronacher1cc232c2007-09-07 17:52:41 +020075
76
Armin Ronacher9f258ff2008-05-24 22:28:52 +020077def test_typechecks(env):
78 tmpl = env.from_string(TYPECHECKS)
79 assert tmpl.render() == (
80 'False\nTrue\nFalse\nTrue\nTrue\nFalse\n'
81 'True\nTrue\nTrue\nTrue\nFalse\nTrue'
82 )
83
84
Armin Ronacher1cc232c2007-09-07 17:52:41 +020085def test_no_paren_for_arg1(env):
86 tmpl = env.from_string(NOPARENFORARG1)
87 assert tmpl.render(foo=None) == 'True'
Armin Ronacher9f258ff2008-05-24 22:28:52 +020088
89
90def test_escaped():
91 env = Environment(autoescape=True)
92 tmpl = env.from_string('{{ x is escaped }}|{{ y is escaped }}')
93 assert tmpl.render(x='foo', y=Markup('foo')) == 'False|True'