summaryrefslogtreecommitdiff
path: root/jinja2
diff options
context:
space:
mode:
authorArmin Ronacher <armin.ronacher@active-4.com>2010-02-09 16:43:12 +0100
committerArmin Ronacher <armin.ronacher@active-4.com>2010-02-09 16:43:12 +0100
commit41d6f71c69e0d5b5c24d98419e15e636b88d896d (patch)
tree5a8dcf1dc342fb342fcbd664bb23bc0e96192721 /jinja2
parent42549363362579a942b17dd5c0eb473ddd976881 (diff)
downloadjinja2-41d6f71c69e0d5b5c24d98419e15e636b88d896d.tar.gz
Added tests for the test functions (the jinja ones ^^)
--HG-- branch : trunk
Diffstat (limited to 'jinja2')
-rw-r--r--jinja2/testsuite/__init__.py3
-rw-r--r--jinja2/testsuite/filters.py61
-rw-r--r--jinja2/testsuite/tests.py87
3 files changed, 89 insertions, 62 deletions
diff --git a/jinja2/testsuite/__init__.py b/jinja2/testsuite/__init__.py
index 6a4b5ff..dce9629 100644
--- a/jinja2/testsuite/__init__.py
+++ b/jinja2/testsuite/__init__.py
@@ -44,10 +44,11 @@ class JinjaTestCase(unittest.TestCase):
def suite():
- from jinja2.testsuite import ext, filters, core_tags, loader
+ from jinja2.testsuite import ext, filters, tests, core_tags, loader
suite = unittest.TestSuite()
suite.addTest(ext.suite())
suite.addTest(filters.suite())
+ suite.addTest(tests.suite())
suite.addTest(core_tags.suite())
suite.addTest(loader.suite())
return suite
diff --git a/jinja2/testsuite/filters.py b/jinja2/testsuite/filters.py
index e3bca02..e5274c6 100644
--- a/jinja2/testsuite/filters.py
+++ b/jinja2/testsuite/filters.py
@@ -16,67 +16,6 @@ from jinja2 import Markup, Environment
env = Environment()
-CAPITALIZE = '''{{ "foo bar"|capitalize }}'''
-CENTER = '''{{ "foo"|center(9) }}'''
-DEFAULT = '''{{ missing|default("no") }}|{{ false|default('no') }}|\
-{{ false|default('no', true) }}|{{ given|default("no") }}'''
-DICTSORT = '''{{ foo|dictsort }}|\
-{{ foo|dictsort(true) }}|\
-{{ foo|dictsort(false, 'value') }}'''
-BATCH = '''{{ foo|batch(3)|list }}|{{ foo|batch(3, 'X')|list }}'''
-SLICE = '''{{ foo|slice(3)|list }}|{{ foo|slice(3, 'X')|list }}'''
-ESCAPE = '''{{ '<">&'|escape }}'''
-STRIPTAGS = '''{{ foo|striptags }}'''
-FILESIZEFORMAT = '{{ 100|filesizeformat }}|\
-{{ 1000|filesizeformat }}|\
-{{ 1000000|filesizeformat }}|\
-{{ 1000000000|filesizeformat }}|\
-{{ 1000000000000|filesizeformat }}|\
-{{ 100|filesizeformat(true) }}|\
-{{ 1000|filesizeformat(true) }}|\
-{{ 1000000|filesizeformat(true) }}|\
-{{ 1000000000|filesizeformat(true) }}|\
-{{ 1000000000000|filesizeformat(true) }}'
-FIRST = '''{{ foo|first }}'''
-FLOAT = '''{{ "42"|float }}|{{ "ajsghasjgd"|float }}|{{ "32.32"|float }}'''
-FORMAT = '''{{ "%s|%s"|format("a", "b") }}'''
-INDENT = '''{{ foo|indent(2) }}|{{ foo|indent(2, true) }}'''
-INT = '''{{ "42"|int }}|{{ "ajsghasjgd"|int }}|{{ "32.32"|int }}'''
-JOIN = '''{{ [1, 2, 3]|join("|") }}'''
-LAST = '''{{ foo|last }}'''
-LENGTH = '''{{ "hello world"|length }}'''
-LOWER = '''{{ "FOO"|lower }}'''
-PPRINT = '''{{ data|pprint }}'''
-RANDOM = '''{{ seq|random }}'''
-REVERSE = '''{{ "foobar"|reverse|join }}|{{ [1, 2, 3]|reverse|list }}'''
-STRING = '''{{ range(10)|string }}'''
-TITLE = '''{{ "foo bar"|title }}'''
-TRIM = '''{{ " foo "|trim }}'''
-TRUNCATE = '''{{ data|truncate(15, true, ">>>") }}|\
-{{ data|truncate(15, false, ">>>") }}|\
-{{ smalldata|truncate(15) }}'''
-UPPER = '''{{ "foo"|upper }}'''
-URLIZE = '''{{ "foo http://www.example.com/ bar"|urlize }}'''
-WORDCOUNT = '''{{ "foo bar baz"|wordcount }}'''
-BLOCK = '''{% filter lower|escape %}<HEHE>{% endfilter %}'''
-CHAINING = '''{{ ['<foo>', '<bar>']|first|upper|escape }}'''
-SUM = '''{{ [1, 2, 3, 4, 5, 6]|sum }}'''
-ABS = '''{{ -1|abs }}|{{ 1|abs }}'''
-ROUND = '''{{ 2.7|round }}|{{ 2.1|round }}|\
-{{ 2.1234|round(2, 'floor') }}|{{ 2.1|round(0, 'ceil') }}'''
-XMLATTR = '''{{ {'foo': 42, 'bar': 23, 'fish': none,
-'spam': missing, 'blub:blub': '<?>'}|xmlattr }}'''
-SORT1 = '''{{ [2, 3, 1]|sort }}|{{ [2, 3, 1]|sort(true) }}'''
-GROUPBY = '''{% for grouper, list in [{'foo': 1, 'bar': 2},
- {'foo': 2, 'bar': 3},
- {'foo': 1, 'bar': 1},
- {'foo': 3, 'bar': 4}]|groupby('foo') -%}
-{{ grouper }}: {{ list|join(', ') }}
-{% endfor %}'''
-FILTERTAG = '''{% filter upper|replace('FOO', 'foo') %}foobar{% endfilter %}'''
-SORT2 = '''{{ ['foo', 'Bar', 'blah']|sort }}'''
-
-
class FilterTestCase(JinjaTestCase):
def test_capitalize(self):
diff --git a/jinja2/testsuite/tests.py b/jinja2/testsuite/tests.py
new file mode 100644
index 0000000..cd5006f
--- /dev/null
+++ b/jinja2/testsuite/tests.py
@@ -0,0 +1,87 @@
+# -*- coding: utf-8 -*-
+"""
+ jinja2.testsuite.tests
+ ~~~~~~~~~~~~~~~~~~~~~~
+
+ Who tests the tests?
+
+ :copyright: (c) 2010 by the Jinja Team.
+ :license: BSD, see LICENSE for more details.
+"""
+import unittest
+from jinja2.testsuite import JinjaTestCase
+
+from jinja2 import Markup, Environment
+
+env = Environment()
+
+
+class TestsTestCase(JinjaTestCase):
+
+ def test_defined(self):
+ tmpl = env.from_string('{{ missing is defined }}|{{ true is defined }}')
+ assert tmpl.render() == 'False|True'
+
+ def test_even(self):
+ tmpl = env.from_string('''{{ 1 is even }}|{{ 2 is even }}''')
+ assert tmpl.render() == 'False|True'
+
+ def test_odd(self):
+ tmpl = env.from_string('''{{ 1 is odd }}|{{ 2 is odd }}''')
+ assert tmpl.render() == 'True|False'
+
+ def test_lower(self):
+ tmpl = env.from_string('''{{ "foo" is lower }}|{{ "FOO" is lower }}''')
+ assert tmpl.render() == 'True|False'
+
+ def test_typechecks(self):
+ tmpl = env.from_string('''
+ {{ 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 }}
+ ''')
+ assert tmpl.render().split() == [
+ 'False', 'True', 'False', 'True', 'True', 'False',
+ 'True', 'True', 'True', 'True', 'False', 'True'
+ ]
+
+ def test_sequence(self):
+ tmpl = env.from_string(
+ '{{ [1, 2, 3] is sequence }}|'
+ '{{ "foo" is sequence }}|'
+ '{{ 42 is sequence }}'
+ )
+ assert tmpl.render() == 'True|True|False'
+
+ def test_upper(self):
+ tmpl = env.from_string('{{ "FOO" is upper }}|{{ "foo" is upper }}')
+ assert tmpl.render() == 'True|False'
+
+ def test_sameas(self):
+ tmpl = env.from_string('{{ foo is sameas false }}|'
+ '{{ 0 is sameas false }}')
+ assert tmpl.render(foo=False) == 'True|False'
+
+ def test_no_paren_for_arg1(self):
+ tmpl = env.from_string('{{ foo is sameas none }}')
+ assert tmpl.render(foo=None) == 'True'
+
+ def test_escaped(self):
+ env = Environment(autoescape=True)
+ tmpl = env.from_string('{{ x is escaped }}|{{ y is escaped }}')
+ assert tmpl.render(x='foo', y=Markup('foo')) == 'False|True'
+
+
+def suite():
+ suite = unittest.TestSuite()
+ suite.addTest(unittest.makeSuite(TestsTestCase))
+ return suite