:copyright: 2007 by Armin Ronacher.
:license: BSD, see LICENSE for more details.
"""
+from jinja2 import Environment, Markup
+
DEFINED = '''{{ missing is defined }}|{{ true is defined }}'''
EVEN = '''{{ 1 is even }}|{{ 2 is even }}'''
LOWER = '''{{ "foo" is lower }}|{{ "FOO" is lower }}'''
-MATCHING = '''{{ "42" is matching('^\\d+$') }}|\
-{{ "foo" is matching('^\\d+$') }}'''
-NUMERIC = '''{{ "43" is numeric }}|{{ "foo" is numeric }}|\
-{{ 42 is numeric }}'''
ODD = '''{{ 1 is odd }}|{{ 2 is odd }}'''
SEQUENCE = '''{{ [1, 2, 3] is sequence }}|\
{{ "foo" is sequence }}|\
{{ 42 is sequence }}'''
UPPER = '''{{ "FOO" is upper }}|{{ "foo" is upper }}'''
+SAMEAS = '''{{ foo is sameas false }}|{{ 0 is sameas false }}'''
+NOPARENFORARG1 = '''{{ foo is sameas none }}'''
+TYPECHECKS = '''\
+{{ 42 is undefined }}
+{{ 42 is defined }}
+{{ 42 is none }}
+{{ none is none }}
+{{ 42 is number }}
+{{ 42 is string }}
+{{ "foo" is string }}
+{{ "foo" is sequence }}
+{{ [1] is sequence }}
+{{ range is callable }}
+{{ 42 is callable }}
+{{ range(5) is iterable }}'''
def test_defined(env):
assert tmpl.render() == 'False|True'
-def test_lower(env):
- tmpl = env.from_string(LOWER)
+def test_odd(env):
+ tmpl = env.from_string(ODD)
assert tmpl.render() == 'True|False'
-def test_matching(env):
- tmpl = env.from_string(MATCHING)
+def test_lower(env):
+ tmpl = env.from_string(LOWER)
assert tmpl.render() == 'True|False'
-def test_numeric(env):
- tmpl = env.from_string(NUMERIC)
- assert tmpl.render() == 'True|False|True'
-
-
-def test_odd(env):
- tmpl = env.from_string(ODD)
- assert tmpl.render() == 'True|False'
+def test_typechecks(env):
+ tmpl = env.from_string(TYPECHECKS)
+ assert tmpl.render() == ''
def test_sequence(env):
tmpl = env.from_string(UPPER)
assert tmpl.render() == 'True|False'
+
+def test_sameas(env):
+ tmpl = env.from_string(SAMEAS)
+ assert tmpl.render(foo=False) == 'True|False'
+
+
+def test_typechecks(env):
+ tmpl = env.from_string(TYPECHECKS)
+ assert tmpl.render() == (
+ 'False\nTrue\nFalse\nTrue\nTrue\nFalse\n'
+ 'True\nTrue\nTrue\nTrue\nFalse\nTrue'
+ )
+
+
+def test_no_paren_for_arg1(env):
+ tmpl = env.from_string(NOPARENFORARG1)
+ assert tmpl.render(foo=None) == 'True'
+
+
+def test_escaped():
+ env = Environment(autoescape=True)
+ tmpl = env.from_string('{{ x is escaped }}|{{ y is escaped }}')
+ assert tmpl.render(x='foo', y=Markup('foo')) == 'False|True'