blob: 23128899f42bf4a4f61af6a4f22a56ab88f09017 [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
Armin Ronacher42979eb2009-07-26 11:08:50 +020010env = Environment()
Rene Leonhardtc7e6c6d2009-04-20 23:08:53 +020011
Armin Ronacherab45b842007-03-18 20:47:50 +010012
13DEFINED = '''{{ missing is defined }}|{{ true is defined }}'''
14EVEN = '''{{ 1 is even }}|{{ 2 is even }}'''
15LOWER = '''{{ "foo" is lower }}|{{ "FOO" is lower }}'''
Armin Ronacherab45b842007-03-18 20:47:50 +010016ODD = '''{{ 1 is odd }}|{{ 2 is odd }}'''
17SEQUENCE = '''{{ [1, 2, 3] is sequence }}|\
18{{ "foo" is sequence }}|\
19{{ 42 is sequence }}'''
20UPPER = '''{{ "FOO" is upper }}|{{ "foo" is upper }}'''
Armin Ronacher53042292008-04-26 18:30:19 +020021SAMEAS = '''{{ foo is sameas false }}|{{ 0 is sameas false }}'''
Armin Ronacher1cc232c2007-09-07 17:52:41 +020022NOPARENFORARG1 = '''{{ foo is sameas none }}'''
Armin Ronacher9f258ff2008-05-24 22:28:52 +020023TYPECHECKS = '''\
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 }}'''
Armin Ronacherab45b842007-03-18 20:47:50 +010036
37
Armin Ronacher42979eb2009-07-26 11:08:50 +020038def test_defined():
Armin Ronacherab45b842007-03-18 20:47:50 +010039 tmpl = env.from_string(DEFINED)
40 assert tmpl.render() == 'False|True'
41
42
Armin Ronacher42979eb2009-07-26 11:08:50 +020043def test_even():
Armin Ronacherab45b842007-03-18 20:47:50 +010044 tmpl = env.from_string(EVEN)
45 assert tmpl.render() == 'False|True'
46
47
Armin Ronacher42979eb2009-07-26 11:08:50 +020048def test_odd():
Armin Ronacher9f258ff2008-05-24 22:28:52 +020049 tmpl = env.from_string(ODD)
50 assert tmpl.render() == 'True|False'
51
52
Armin Ronacher42979eb2009-07-26 11:08:50 +020053def test_lower():
Armin Ronacherab45b842007-03-18 20:47:50 +010054 tmpl = env.from_string(LOWER)
55 assert tmpl.render() == 'True|False'
56
57
Armin Ronacher42979eb2009-07-26 11:08:50 +020058def test_typechecks():
Armin Ronacher9f258ff2008-05-24 22:28:52 +020059 tmpl = env.from_string(TYPECHECKS)
60 assert tmpl.render() == ''
Armin Ronacherab45b842007-03-18 20:47:50 +010061
62
Armin Ronacher42979eb2009-07-26 11:08:50 +020063def test_sequence():
Armin Ronacherab45b842007-03-18 20:47:50 +010064 tmpl = env.from_string(SEQUENCE)
65 assert tmpl.render() == 'True|True|False'
66
67
Armin Ronacher42979eb2009-07-26 11:08:50 +020068def test_upper():
Armin Ronacherab45b842007-03-18 20:47:50 +010069 tmpl = env.from_string(UPPER)
70 assert tmpl.render() == 'True|False'
Armin Ronacher69ddc582007-06-24 12:37:13 +020071
72
Armin Ronacher42979eb2009-07-26 11:08:50 +020073def test_sameas():
Armin Ronacher69ddc582007-06-24 12:37:13 +020074 tmpl = env.from_string(SAMEAS)
75 assert tmpl.render(foo=False) == 'True|False'
Armin Ronacher1cc232c2007-09-07 17:52:41 +020076
77
Armin Ronacher42979eb2009-07-26 11:08:50 +020078def test_typechecks():
Armin Ronacher9f258ff2008-05-24 22:28:52 +020079 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
Armin Ronacher42979eb2009-07-26 11:08:50 +020086def test_no_paren_for_arg1():
Armin Ronacher1cc232c2007-09-07 17:52:41 +020087 tmpl = env.from_string(NOPARENFORARG1)
88 assert tmpl.render(foo=None) == 'True'
Armin Ronacher9f258ff2008-05-24 22:28:52 +020089
90
91def 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'