1 # -*- coding: utf-8 -*-
3 unit test for the test functions
4 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
6 :copyright: 2007 by Armin Ronacher.
7 :license: BSD, see LICENSE for more details.
9 from jinja2 import Environment, Markup
12 DEFINED = '''{{ missing is defined }}|{{ true is defined }}'''
13 EVEN = '''{{ 1 is even }}|{{ 2 is even }}'''
14 LOWER = '''{{ "foo" is lower }}|{{ "FOO" is lower }}'''
15 ODD = '''{{ 1 is odd }}|{{ 2 is odd }}'''
16 SEQUENCE = '''{{ [1, 2, 3] is sequence }}|\
17 {{ "foo" is sequence }}|\
18 {{ 42 is sequence }}'''
19 UPPER = '''{{ "FOO" is upper }}|{{ "foo" is upper }}'''
20 SAMEAS = '''{{ foo is sameas false }}|{{ 0 is sameas false }}'''
21 NOPARENFORARG1 = '''{{ foo is sameas none }}'''
30 {{ "foo" is sequence }}
32 {{ range is callable }}
34 {{ range(5) is iterable }}'''
37 def test_defined(env):
38 tmpl = env.from_string(DEFINED)
39 assert tmpl.render() == 'False|True'
43 tmpl = env.from_string(EVEN)
44 assert tmpl.render() == 'False|True'
48 tmpl = env.from_string(ODD)
49 assert tmpl.render() == 'True|False'
53 tmpl = env.from_string(LOWER)
54 assert tmpl.render() == 'True|False'
57 def test_typechecks(env):
58 tmpl = env.from_string(TYPECHECKS)
59 assert tmpl.render() == ''
62 def test_sequence(env):
63 tmpl = env.from_string(SEQUENCE)
64 assert tmpl.render() == 'True|True|False'
68 tmpl = env.from_string(UPPER)
69 assert tmpl.render() == 'True|False'
73 tmpl = env.from_string(SAMEAS)
74 assert tmpl.render(foo=False) == 'True|False'
77 def 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'
85 def test_no_paren_for_arg1(env):
86 tmpl = env.from_string(NOPARENFORARG1)
87 assert tmpl.render(foo=None) == 'True'
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'