8889841có ÈÏRc@szdZddlZddlmZddlmZmZddlmZm Z eƒZ defd„ƒYZ d„Z dS( s» jinja2.testsuite.filters ~~~~~~~~~~~~~~~~~~~~~~~~ Tests for the jinja filters. :copyright: (c) 2010 by the Jinja Team. :license: BSD, see LICENSE for more details. iÿÿÿÿN(t JinjaTestCase(tMarkupt Environment(t text_typetimplements_to_stringtFilterTestCasecBs?eZd„Zd„Zd„Zd„Zd„Zd„Zd„Zd„Z d„Z d „Z d „Z d „Z d „Zd „Zd„Zd„Zd„Zd„Zd„Zd„Zd„Zd„Zd„Zd„Zd„Zd„Zd„Zd„Zd„Zd„Zd„Z d„Z!d „Z"d!„Z#d"„Z$d#„Z%d$„Z&d%„Z'd&„Z(d'„Z)d(„Z*d)„Z+d*„Z,d+„Z-d,„Z.d-„Z/d.„Z0d/„Z1d0„Z2d1„Z3d2„Z4d3„Z5d4„Z6d5„Z7d6„Z8d7„Z9d8„Z:d9„Z;d:„Z<d;„Z=d<„Z>d=„Z?d>„Z@RS(?cCs/tjddddgƒ}|j|dƒdS(Ntsumiiii(tenvt call_filtert assert_equal(tselftrv((s</usr/lib/python2.7/site-packages/jinja2/testsuite/filters.pyttest_filter_callingscCstjdƒ}dS(Ns{{ "foo bar"|capitalize }}(Rt from_string(R ttmpl((s</usr/lib/python2.7/site-packages/jinja2/testsuite/filters.pyttest_capitalizescCstjdƒ}dS(Ns{{ "foo"|center(9) }}(RR (R R((s</usr/lib/python2.7/site-packages/jinja2/testsuite/filters.pyt test_centerscCstjdƒ}dS(Nso{{ missing|default('no') }}|{{ false|default('no') }}|{{ false|default('no', true) }}|{{ given|default('no') }}(RR (R R((s</usr/lib/python2.7/site-packages/jinja2/testsuite/filters.pyt test_default"s cCsAtjdƒ}|jdidd6dd6dd6d d 6ƒ}dS( NsN{{ foo|dictsort }}|{{ foo|dictsort(true) }}|{{ foo|dictsort(false, "value") }}tfooitaaitbitcitAB(RR trender(R Rtout((s</usr/lib/python2.7/site-packages/jinja2/testsuite/filters.pyt test_dictsort)s .cCs1tjdƒ}|jdttdƒƒƒ}dS(Ns4{{ foo|batch(3)|list }}|{{ foo|batch(3, 'X')|list }}Ri (RR Rtlisttrange(R RR((s</usr/lib/python2.7/site-packages/jinja2/testsuite/filters.pyt test_batch4scCs1tjdƒ}|jdttdƒƒƒ}dS(Ns4{{ foo|slice(3)|list }}|{{ foo|slice(3, "X")|list }}Ri (RR RRR(R RR((s</usr/lib/python2.7/site-packages/jinja2/testsuite/filters.pyt test_slice;scCstjdƒ}|jƒ}dS(Ns{{ '<">&'|escape }}(RR R(R RR((s</usr/lib/python2.7/site-packages/jinja2/testsuite/filters.pyt test_escapeBs cCs%tjdƒ}|jddƒ}dS(Ns{{ foo|striptags }}Rss

just a small example link

to a webpage

(RR R(R RR((s</usr/lib/python2.7/site-packages/jinja2/testsuite/filters.pyttest_striptagsGscCs/tjdƒ}|jƒ}|j|dƒdS(NsC{{ 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) }}sX100 Bytes|1.0 kB|1.0 MB|1.0 GB|1.0 TB|100 Bytes|1000 Bytes|976.6 KiB|953.7 MiB|931.3 GiB(RR RR (R RR((s</usr/lib/python2.7/site-packages/jinja2/testsuite/filters.pyttest_filesizeformatNs   cCs/tjdƒ}|jƒ}|j|dƒdS(Nsô{{ 300|filesizeformat }}|{{ 3000|filesizeformat }}|{{ 3000000|filesizeformat }}|{{ 3000000000|filesizeformat }}|{{ 3000000000000|filesizeformat }}|{{ 300|filesizeformat(true) }}|{{ 3000|filesizeformat(true) }}|{{ 3000000|filesizeformat(true) }}s?300 Bytes|3.0 kB|3.0 MB|3.0 GB|3.0 TB|300 Bytes|2.9 KiB|2.9 MiB(RR RR (R RR((s</usr/lib/python2.7/site-packages/jinja2/testsuite/filters.pyttest_filesizeformat_issue59as   cCs1tjdƒ}|jdttdƒƒƒ}dS(Ns{{ foo|first }}Ri (RR RRR(R RR((s</usr/lib/python2.7/site-packages/jinja2/testsuite/filters.pyt test_firstsscCstjdƒ}|jƒ}dS(Ns={{ "42"|float }}|{{ "ajsghasjgd"|float }}|{{ "32.32"|float }}(RR R(R RR((s</usr/lib/python2.7/site-packages/jinja2/testsuite/filters.pyt test_floatxs cCstjdƒ}|jƒ}dS(Ns{{ "%s|%s"|format("a", "b") }}(RR R(R RR((s</usr/lib/python2.7/site-packages/jinja2/testsuite/filters.pyt test_formats cCsNtjdƒ}djdjddgdƒgdƒ}|jd|ƒ}dS(Ns-{{ foo|indent(2) }}|{{ foo|indent(2, true) }}s t Rtbari(RR tjoinR(R RttextR((s</usr/lib/python2.7/site-packages/jinja2/testsuite/filters.pyt test_indent„s)cCstjdƒ}|jƒ}dS(Ns7{{ "42"|int }}|{{ "ajsghasjgd"|int }}|{{ "32.32"|int }}(RR R(R RR((s</usr/lib/python2.7/site-packages/jinja2/testsuite/filters.pyttest_int‹s cCs=tjdƒ}|jƒ}tdtƒ}|jdƒ}dS(Ns{{ [1, 2, 3]|join("|") }}t autoescapes-{{ ["", "foo"|safe]|join }}(RR RRtTrue(R RRtenv2((s</usr/lib/python2.7/site-packages/jinja2/testsuite/filters.pyt test_join‘s  cCs)dtfd„ƒY}tjdƒ}dS(NtUsercBseZd„ZRS(cSs ||_dS(N(tusername(R R0((s</usr/lib/python2.7/site-packages/jinja2/testsuite/filters.pyt__init__œs(t__name__t __module__R1(((s</usr/lib/python2.7/site-packages/jinja2/testsuite/filters.pyR/›ss"{{ users|join(', ', 'username') }}(tobjectRR (R R/R((s</usr/lib/python2.7/site-packages/jinja2/testsuite/filters.pyttest_join_attributešscCs1tjdƒ}|jdttdƒƒƒ}dS(Ns{{ foo|last }}Ri (RR RRR(R RR((s</usr/lib/python2.7/site-packages/jinja2/testsuite/filters.pyt test_last¡scCstjdƒ}|jƒ}dS(Ns{{ "hello world"|length }}(RR R(R RR((s</usr/lib/python2.7/site-packages/jinja2/testsuite/filters.pyt test_length¦s cCstjdƒ}|jƒ}dS(Ns{{ "FOO"|lower }}(RR R(R RR((s</usr/lib/python2.7/site-packages/jinja2/testsuite/filters.pyt test_lower«s cCs5ddlm}tjdƒ}ttdƒƒ}dS(Niÿÿÿÿ(tpformats{{ data|pprint }}iè(tpprintR9RR RR(R R9Rtdata((s</usr/lib/python2.7/site-packages/jinja2/testsuite/filters.pyt test_pprint°scCs<tjdƒ}ttdƒƒ}xtdƒD]}q.WdS(Ns{{ seq|random }}idi (RR RR(R Rtseqt_((s</usr/lib/python2.7/site-packages/jinja2/testsuite/filters.pyt test_random¶scCstjdƒ}dS(Ns8{{ "foobar"|reverse|join }}|{{ [1, 2, 3]|reverse|list }}(RR (R R((s</usr/lib/python2.7/site-packages/jinja2/testsuite/filters.pyt test_reverse¼scCs(dddddg}tjdƒ}dS(Niiiiis{{ obj|string }}(RR (R txR((s</usr/lib/python2.7/site-packages/jinja2/testsuite/filters.pyt test_stringÁscCsmtjdƒ}tjdƒ}tjdƒ}tjdƒ}tjdƒ}tjdƒ}tjdƒ}dS(Ns{{ "foo bar"|title }}s{{ "foo's bar"|title }}s{{ "foo bar"|title }}s{{ "f bar f"|title }}s{{ "foo-bar"|title }}s{{ "foo bar"|title }}s{{ "FOO BAR"|title }}(RR (R R((s</usr/lib/python2.7/site-packages/jinja2/testsuite/filters.pyt test_titleÆscCs/tjdƒ}|jdddddƒ}dS(Nsg{{ data|truncate(15, true, ">>>") }}|{{ data|truncate(15, false, ">>>") }}|{{ smalldata|truncate(15) }}R;sfoobar baz barièt smalldata(RR R(R RR((s</usr/lib/python2.7/site-packages/jinja2/testsuite/filters.pyt test_truncateÖs   cCstjdƒ}dS(Ns{{ "foo"|upper }}(RR (R R((s</usr/lib/python2.7/site-packages/jinja2/testsuite/filters.pyt test_upperàscCstjdƒ}dS(Ns.{{ "foo http://www.example.com/ bar"|urlize }}(RR (R R((s</usr/lib/python2.7/site-packages/jinja2/testsuite/filters.pyt test_urlizeäscCstjdƒ}dS(Ns{{ "foo bar baz"|wordcount }}(RR (R R((s</usr/lib/python2.7/site-packages/jinja2/testsuite/filters.pyttest_wordcountéscCstjdƒ}dS(Ns.{% filter lower|escape %}{% endfilter %}(RR (R R((s</usr/lib/python2.7/site-packages/jinja2/testsuite/filters.pyt test_blockíscCstjdƒ}dS(Ns+{{ ['', '']|first|upper|escape }}(RR (R R((s</usr/lib/python2.7/site-packages/jinja2/testsuite/filters.pyt test_chainingñscCstjdƒ}dS(Ns{{ [1, 2, 3, 4, 5, 6]|sum }}(RR (R R((s</usr/lib/python2.7/site-packages/jinja2/testsuite/filters.pyttest_sumõscCstjdƒ}dS(Ns{{ values|sum('value') }}(RR (R R((s</usr/lib/python2.7/site-packages/jinja2/testsuite/filters.pyttest_sum_attributesùscCstjdƒ}dS(Ns{{ values|sum('real.value') }}(RR (R R((s</usr/lib/python2.7/site-packages/jinja2/testsuite/filters.pyttest_sum_attributes_nestedscCstjdƒ}dS(Ns{{ values.items()|sum('1') }}(RR (R R((s</usr/lib/python2.7/site-packages/jinja2/testsuite/filters.pyttest_sum_attributes_tuple scCstjdƒ}dS(Ns{{ -1|abs }}|{{ 1|abs }}(RR (R R((s</usr/lib/python2.7/site-packages/jinja2/testsuite/filters.pyttest_absscCstjdƒ}dS(NsY{{ 2.7|round }}|{{ 2.1|round }}|{{ 2.1234|round(3, 'floor') }}|{{ 2.1|round(0, 'ceil') }}(RR (R R((s</usr/lib/python2.7/site-packages/jinja2/testsuite/filters.pyttest_round_positivescCstjdƒ}dS(NsL{{ 21.3|round(-1)}}|{{ 21.3|round(-1, 'ceil')}}|{{ 21.3|round(-1, 'floor')}}(RR (R R((s</usr/lib/python2.7/site-packages/jinja2/testsuite/filters.pyttest_round_negativescCs%tjdƒ}|jƒjƒ}dS(NsW{{ {'foo': 42, 'bar': 23, 'fish': none, 'spam': missing, 'blub:blub': ''}|xmlattr }}(RR Rtsplit(R RR((s</usr/lib/python2.7/site-packages/jinja2/testsuite/filters.pyt test_xmlattr!scCstjdƒ}dS(Ns/{{ [2, 3, 1]|sort }}|{{ [2, 3, 1]|sort(true) }}(RR (R R((s</usr/lib/python2.7/site-packages/jinja2/testsuite/filters.pyt test_sort1*scCstjdƒ}dS(Ns({{ "".join(["c", "A", "b", "D"]|sort) }}(RR (R R((s</usr/lib/python2.7/site-packages/jinja2/testsuite/filters.pyt test_sort2.scCstjdƒ}dS(Ns!{{ ['foo', 'Bar', 'blah']|sort }}(RR (R R((s</usr/lib/python2.7/site-packages/jinja2/testsuite/filters.pyt test_sort32scCs/tdtfd„ƒYƒ}tjdƒ}dS(NtMagiccBseZd„Zd„ZRS(cSs ||_dS(N(tvalue(R RX((s</usr/lib/python2.7/site-packages/jinja2/testsuite/filters.pyR19scSs t|jƒS(N(RRX(R ((s</usr/lib/python2.7/site-packages/jinja2/testsuite/filters.pyt__str__;s(R2R3R1RY(((s</usr/lib/python2.7/site-packages/jinja2/testsuite/filters.pyRW7s s({{ items|sort(attribute='value')|join }}(RR4RR (R RWR((s</usr/lib/python2.7/site-packages/jinja2/testsuite/filters.pyt test_sort46scCstjdƒ}dS(Ns] {%- for grouper, list in [{'foo': 1, 'bar': 2}, {'foo': 2, 'bar': 3}, {'foo': 1, 'bar': 1}, {'foo': 3, 'bar': 4}]|groupby('foo') -%} {{ grouper }}{% for x in list %}: {{ x.foo }}, {{ x.bar }}{% endfor %}| {%- endfor %}(RR (R R((s</usr/lib/python2.7/site-packages/jinja2/testsuite/filters.pyt test_groupby@s cCstjdƒ}dS(Ns© {%- for grouper, list in [('a', 1), ('a', 2), ('b', 1)]|groupby(0) -%} {{ grouper }}{% for x in list %}:{{ x.1 }}{% endfor %}| {%- endfor %}(RR (R R((s</usr/lib/python2.7/site-packages/jinja2/testsuite/filters.pyttest_groupby_tuple_indexOs cs“dtfd„ƒY‰dtf‡fd†ƒY}|ddddƒ|dd ddƒ|d d ddƒ|d ddd ƒg}tjdƒ}dS(NtDatecBseZd„ZRS(cSs||_||_||_dS(N(tdaytmonthtyear(R R^R_R`((s</usr/lib/python2.7/site-packages/jinja2/testsuite/filters.pyR1Xs  (R2R3R1(((s</usr/lib/python2.7/site-packages/jinja2/testsuite/filters.pyR]WstArticlecseZ‡fd†ZRS(csˆ|Œ|_||_dS(N(tdatettitle(R RcRb(R](s</usr/lib/python2.7/site-packages/jinja2/testsuite/filters.pyR1]s(R2R3R1((R](s</usr/lib/python2.7/site-packages/jinja2/testsuite/filters.pyRa\stahaii²t interestingisreally?is totally noti³sœ {%- for year, list in articles|groupby('date.year') -%} {{ year }}{% for x in list %}[{{ x.title }}]{% endfor %}| {%- endfor %}(R4RR (R RatarticlesR((R]s</usr/lib/python2.7/site-packages/jinja2/testsuite/filters.pyttest_groupby_multidotVs cCstjdƒ}dS(Ns={% filter upper|replace('FOO', 'foo') %}foobar{% endfilter %}(RR (R R((s</usr/lib/python2.7/site-packages/jinja2/testsuite/filters.pyttest_filtertagpscCsXtƒ}|jdƒ}tdtƒ}|jdƒ}|jdƒ}|jdƒ}dS(Ns{{ string|replace("o", 42) }}R+s{{ string|replace("<", 42) }}s {{ string|replace("o", ">x<") }}(RR R,(R RR((s</usr/lib/python2.7/site-packages/jinja2/testsuite/filters.pyt test_replaceus cCstjdƒ}dS(Ns{{ x|forceescape }}(RR (R R((s</usr/lib/python2.7/site-packages/jinja2/testsuite/filters.pyttest_forceescapescCs1tdtƒ}|jdƒ}|jdƒ}dS(NR+s{{ "
foo
"|safe }}s{{ "
foo
" }}(RR,R (R RR((s</usr/lib/python2.7/site-packages/jinja2/testsuite/filters.pyt test_safe…scCs1tdtƒ}|jdƒ}|jdƒ}dS(NR+s{{ "Hello, world!"|urlencode }}s{{ o|urlencode }}(RR,R (R RR((s</usr/lib/python2.7/site-packages/jinja2/testsuite/filters.pyttest_urlencodeŒscCs2tƒ}|jdƒ}|j|jƒdƒdS(Ns${{ ["1", "2", "3"]|map("int")|sum }}t6(RR t assertEqualR(R RR((s</usr/lib/python2.7/site-packages/jinja2/testsuite/filters.pyttest_simple_map˜s cCsodtfd„ƒY}tƒ}|dƒ|dƒ|dƒg}|jdƒ}|j|jd|ƒdƒdS( NR/cBseZd„ZRS(cSs ||_dS(N(tname(R Rp((s</usr/lib/python2.7/site-packages/jinja2/testsuite/filters.pyR1Ÿs(R2R3R1(((s</usr/lib/python2.7/site-packages/jinja2/testsuite/filters.pyR/žstjohntjanetmikes+{{ users|map(attribute="name")|join("|") }}tuserssjohn|jane|mike(R4RR RnR(R R/RRtR((s</usr/lib/python2.7/site-packages/jinja2/testsuite/filters.pyttest_attribute_maps   cCs2tƒ}|jdƒ}|j|jƒdƒdS(Ns{{ none|map("upper")|list }}s[](RR RnR(R RR((s</usr/lib/python2.7/site-packages/jinja2/testsuite/filters.pyttest_empty_mapªs cCs2tƒ}|jdƒ}|j|jƒdƒdS(Ns-{{ [1, 2, 3, 4, 5]|select("odd")|join("|") }}s1|3|5(RR RnR(R RR((s</usr/lib/python2.7/site-packages/jinja2/testsuite/filters.pyttest_simple_select¯s cCs2tƒ}|jdƒ}|j|jƒdƒdS(Ns6{{ [none, false, 0, 1, 2, 3, 4, 5]|select|join("|") }}s 1|2|3|4|5(RR RnR(R RR((s</usr/lib/python2.7/site-packages/jinja2/testsuite/filters.pyttest_bool_select´s cCs2tƒ}|jdƒ}|j|jƒdƒdS(Ns-{{ [1, 2, 3, 4, 5]|reject("odd")|join("|") }}s2|4(RR RnR(R RR((s</usr/lib/python2.7/site-packages/jinja2/testsuite/filters.pyttest_simple_reject¹s cCs2tƒ}|jdƒ}|j|jƒdƒdS(Ns6{{ [none, false, 0, 1, 2, 3, 4, 5]|reject|join("|") }}s None|False|0(RR RnR(R RR((s</usr/lib/python2.7/site-packages/jinja2/testsuite/filters.pyttest_bool_reject¾s cCsxdtfd„ƒY}tƒ}|dtƒ|dtƒ|dtƒg}|jdƒ}|j|jd|ƒdƒdS( NR/cBseZd„ZRS(cSs||_||_dS(N(Rpt is_active(R RpR{((s</usr/lib/python2.7/site-packages/jinja2/testsuite/filters.pyR1Ås (R2R3R1(((s</usr/lib/python2.7/site-packages/jinja2/testsuite/filters.pyR/ÄsRqRrRssC{{ users|selectattr("is_active")|map(attribute="name")|join("|") }}Rts john|jane(R4RR,tFalseR RnR(R R/RRtR((s</usr/lib/python2.7/site-packages/jinja2/testsuite/filters.pyttest_simple_select_attrÃs   cCsxdtfd„ƒY}tƒ}|dtƒ|dtƒ|dtƒg}|jdƒ}|j|jd|ƒdƒdS(NR/cBseZd„ZRS(cSs||_||_dS(N(RpR{(R RpR{((s</usr/lib/python2.7/site-packages/jinja2/testsuite/filters.pyR1Ôs (R2R3R1(((s</usr/lib/python2.7/site-packages/jinja2/testsuite/filters.pyR/ÓsRqRrRssC{{ users|rejectattr("is_active")|map(attribute="name")|join("|") }}Rt(R4RR,R|R RnR(R R/RRtR((s</usr/lib/python2.7/site-packages/jinja2/testsuite/filters.pyttest_simple_reject_attrÒs   cCsxdtfd„ƒY}tƒ}|ddƒ|ddƒ|ddƒg}|jd ƒ}|j|jd |ƒd ƒdS( NR/cBseZd„ZRS(cSs||_||_dS(N(tidRp(R RRp((s</usr/lib/python2.7/site-packages/jinja2/testsuite/filters.pyR1ãs (R2R3R1(((s</usr/lib/python2.7/site-packages/jinja2/testsuite/filters.pyR/âsiRqiRriRssC{{ users|selectattr("id", "odd")|map(attribute="name")|join("|") }}Rts john|mike(R4RR RnR(R R/RRtR((s</usr/lib/python2.7/site-packages/jinja2/testsuite/filters.pyttest_func_select_attrás   cCsxdtfd„ƒY}tƒ}|ddƒ|ddƒ|ddƒg}|jd ƒ}|j|jd |ƒdƒdS( NR/cBseZd„ZRS(cSs||_||_dS(N(RRp(R RRp((s</usr/lib/python2.7/site-packages/jinja2/testsuite/filters.pyR1òs (R2R3R1(((s</usr/lib/python2.7/site-packages/jinja2/testsuite/filters.pyR/ñsiRqiRriRssC{{ users|rejectattr("id", "odd")|map(attribute="name")|join("|") }}Rt(R4RR RnR(R R/RRtR((s</usr/lib/python2.7/site-packages/jinja2/testsuite/filters.pyttest_func_reject_attrðs   (AR2R3R RRRRRRRRR R!R"R#R$R)R*R.R5R6R7R8R<R?R@RBRCRERFRGRHRIRJRKRLRMRNRORPRQRSRTRURVRZR[R\RgRhRiRjRkRlRoRuRvRwRxRyRzR}R~R€R(((s</usr/lib/python2.7/site-packages/jinja2/testsuite/filters.pyRs~                                                      cCs&tjƒ}|jtjtƒƒ|S(N(tunittestt TestSuitetaddTestt makeSuiteR(tsuite((s</usr/lib/python2.7/site-packages/jinja2/testsuite/filters.pyR†s ( t__doc__R‚tjinja2.testsuiteRtjinja2RRtjinja2._compatRRRRR†(((s</usr/lib/python2.7/site-packages/jinja2/testsuite/filters.pyt s  ÿí