More Python 3 support.
[jinja2.git] / tests / test_tests.py
1 # -*- coding: utf-8 -*-
2 """
3     unit test for the test functions
4     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
5
6     :copyright: (c) 2009 by the Jinja Team.
7     :license: BSD, see LICENSE for more details.
8 """
9 from jinja2 import Environment, Markup
10 env = Environment()
11
12
13 DEFINED = '''{{ missing is defined }}|{{ true is defined }}'''
14 EVEN = '''{{ 1 is even }}|{{ 2 is even }}'''
15 LOWER = '''{{ "foo" is lower }}|{{ "FOO" is lower }}'''
16 ODD = '''{{ 1 is odd }}|{{ 2 is odd }}'''
17 SEQUENCE = '''{{ [1, 2, 3] is sequence }}|\
18 {{ "foo" is sequence }}|\
19 {{ 42 is sequence }}'''
20 UPPER = '''{{ "FOO" is upper }}|{{ "foo" is upper }}'''
21 SAMEAS = '''{{ foo is sameas false }}|{{ 0 is sameas false }}'''
22 NOPARENFORARG1 = '''{{ foo is sameas none }}'''
23 TYPECHECKS = '''\
24 {{ 42 is undefined }}
25 {{ 42 is defined }}
26 {{ 42 is none }}
27 {{ none is none }}
28 {{ 42 is number }}
29 {{ 42 is string }}
30 {{ "foo" is string }}
31 {{ "foo" is sequence }}
32 {{ [1] is sequence }}
33 {{ range is callable }}
34 {{ 42 is callable }}
35 {{ range(5) is iterable }}'''
36
37
38 def test_defined():
39     tmpl = env.from_string(DEFINED)
40     assert tmpl.render() == 'False|True'
41
42
43 def test_even():
44     tmpl = env.from_string(EVEN)
45     assert tmpl.render() == 'False|True'
46
47
48 def test_odd():
49     tmpl = env.from_string(ODD)
50     assert tmpl.render() == 'True|False'
51
52
53 def test_lower():
54     tmpl = env.from_string(LOWER)
55     assert tmpl.render() == 'True|False'
56
57
58 def test_typechecks():
59     tmpl = env.from_string(TYPECHECKS)
60     assert tmpl.render() == ''
61
62
63 def test_sequence():
64     tmpl = env.from_string(SEQUENCE)
65     assert tmpl.render() == 'True|True|False'
66
67
68 def test_upper():
69     tmpl = env.from_string(UPPER)
70     assert tmpl.render() == 'True|False'
71
72
73 def test_sameas():
74     tmpl = env.from_string(SAMEAS)
75     assert tmpl.render(foo=False) == 'True|False'
76
77
78 def test_typechecks():
79     tmpl = env.from_string(TYPECHECKS)
80     assert tmpl.render() == (
81         'False\nTrue\nFalse\nTrue\nTrue\nFalse\n'
82         'True\nTrue\nTrue\nTrue\nFalse\nTrue'
83     )
84
85
86 def test_no_paren_for_arg1():
87     tmpl = env.from_string(NOPARENFORARG1)
88     assert tmpl.render(foo=None) == 'True'
89
90
91 def test_escaped():
92     env = Environment(autoescape=True)
93     tmpl = env.from_string('{{ x is escaped }}|{{ y is escaped }}')
94     assert tmpl.render(x='foo', y=Markup('foo')) == 'False|True'