Automated merge with ssh://team@pocoo.org/jinja2-main
[jinja2.git] / tests / test_tests.py
1 # -*- coding: utf-8 -*-
2 """
3     unit test for the test functions
4     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
5
6     :copyright: 2007 by Armin Ronacher.
7     :license: BSD, see LICENSE for more details.
8 """
9 from jinja2 import Environment, Markup
10
11
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 }}'''
22 TYPECHECKS = '''\
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 }}'''
35
36
37 def test_defined(env):
38     tmpl = env.from_string(DEFINED)
39     assert tmpl.render() == 'False|True'
40
41
42 def test_even(env):
43     tmpl = env.from_string(EVEN)
44     assert tmpl.render() == 'False|True'
45
46
47 def test_odd(env):
48     tmpl = env.from_string(ODD)
49     assert tmpl.render() == 'True|False'
50
51
52 def test_lower(env):
53     tmpl = env.from_string(LOWER)
54     assert tmpl.render() == 'True|False'
55
56
57 def test_typechecks(env):
58     tmpl = env.from_string(TYPECHECKS)
59     assert tmpl.render() == ''
60
61
62 def test_sequence(env):
63     tmpl = env.from_string(SEQUENCE)
64     assert tmpl.render() == 'True|True|False'
65
66
67 def test_upper(env):
68     tmpl = env.from_string(UPPER)
69     assert tmpl.render() == 'True|False'
70
71
72 def test_sameas(env):
73     tmpl = env.from_string(SAMEAS)
74     assert tmpl.render(foo=False) == 'True|False'
75
76
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'
82     )
83
84
85 def test_no_paren_for_arg1(env):
86     tmpl = env.from_string(NOPARENFORARG1)
87     assert tmpl.render(foo=None) == 'True'
88
89
90 def 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'