blob: e3e6f0f3763832d20cca7adfdf9cba5cdb1d9656 [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
Rene Leonhardtc7e6c6d2009-04-20 23:08:53 +020011import conftest
12
Armin Ronacherab45b842007-03-18 20:47:50 +010013
14DEFINED = '''{{ missing is defined }}|{{ true is defined }}'''
15EVEN = '''{{ 1 is even }}|{{ 2 is even }}'''
16LOWER = '''{{ "foo" is lower }}|{{ "FOO" is lower }}'''
Armin Ronacherab45b842007-03-18 20:47:50 +010017ODD = '''{{ 1 is odd }}|{{ 2 is odd }}'''
18SEQUENCE = '''{{ [1, 2, 3] is sequence }}|\
19{{ "foo" is sequence }}|\
20{{ 42 is sequence }}'''
21UPPER = '''{{ "FOO" is upper }}|{{ "foo" is upper }}'''
Armin Ronacher53042292008-04-26 18:30:19 +020022SAMEAS = '''{{ foo is sameas false }}|{{ 0 is sameas false }}'''
Armin Ronacher1cc232c2007-09-07 17:52:41 +020023NOPARENFORARG1 = '''{{ foo is sameas none }}'''
Armin Ronacher9f258ff2008-05-24 22:28:52 +020024TYPECHECKS = '''\
25{{ 42 is undefined }}
26{{ 42 is defined }}
27{{ 42 is none }}
28{{ none is none }}
29{{ 42 is number }}
30{{ 42 is string }}
31{{ "foo" is string }}
32{{ "foo" is sequence }}
33{{ [1] is sequence }}
34{{ range is callable }}
35{{ 42 is callable }}
36{{ range(5) is iterable }}'''
Armin Ronacherab45b842007-03-18 20:47:50 +010037
38
39def test_defined(env):
40 tmpl = env.from_string(DEFINED)
41 assert tmpl.render() == 'False|True'
42
43
44def test_even(env):
45 tmpl = env.from_string(EVEN)
46 assert tmpl.render() == 'False|True'
47
48
Armin Ronacher9f258ff2008-05-24 22:28:52 +020049def test_odd(env):
50 tmpl = env.from_string(ODD)
51 assert tmpl.render() == 'True|False'
52
53
Armin Ronacherab45b842007-03-18 20:47:50 +010054def test_lower(env):
55 tmpl = env.from_string(LOWER)
56 assert tmpl.render() == 'True|False'
57
58
Armin Ronacher9f258ff2008-05-24 22:28:52 +020059def test_typechecks(env):
60 tmpl = env.from_string(TYPECHECKS)
61 assert tmpl.render() == ''
Armin Ronacherab45b842007-03-18 20:47:50 +010062
63
64def test_sequence(env):
65 tmpl = env.from_string(SEQUENCE)
66 assert tmpl.render() == 'True|True|False'
67
68
69def test_upper(env):
70 tmpl = env.from_string(UPPER)
71 assert tmpl.render() == 'True|False'
Armin Ronacher69ddc582007-06-24 12:37:13 +020072
73
74def test_sameas(env):
75 tmpl = env.from_string(SAMEAS)
76 assert tmpl.render(foo=False) == 'True|False'
Armin Ronacher1cc232c2007-09-07 17:52:41 +020077
78
Armin Ronacher9f258ff2008-05-24 22:28:52 +020079def test_typechecks(env):
80 tmpl = env.from_string(TYPECHECKS)
81 assert tmpl.render() == (
82 'False\nTrue\nFalse\nTrue\nTrue\nFalse\n'
83 'True\nTrue\nTrue\nTrue\nFalse\nTrue'
84 )
85
86
Armin Ronacher1cc232c2007-09-07 17:52:41 +020087def test_no_paren_for_arg1(env):
88 tmpl = env.from_string(NOPARENFORARG1)
89 assert tmpl.render(foo=None) == 'True'
Armin Ronacher9f258ff2008-05-24 22:28:52 +020090
91
92def test_escaped():
93 env = Environment(autoescape=True)
94 tmpl = env.from_string('{{ x is escaped }}|{{ y is escaped }}')
95 assert tmpl.render(x='foo', y=Markup('foo')) == 'False|True'