Automated merge with ssh://team@pocoo.org/jinja2-main
[jinja2.git] / tests / test_tests.py
index 22bdec4d69f605d2a1b5a8b7a5045a86b237a76f..c02d0b3299f77908c94c98f82ddc52bd6c5f055e 100644 (file)
@@ -6,19 +6,32 @@
     :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):
@@ -31,24 +44,19 @@ def test_even(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):
@@ -60,3 +68,26 @@ def test_upper(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'