B
    18™\0O  ã               @   sp   d dl Z d dlZd dlmZ G dd„ de jƒZG dd„ dƒZG dd„ dƒZG d	d
„ d
e jƒZedkrle  	¡  dS )é    N)ÚTemplatec               @   s|   e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zd	d
„ Zdd„ Zdd„ Z	dd„ Z
dd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ ZdS )Ú
ModuleTestc             C   sª   |   tjd¡ |   tjd¡ |   tjd¡ |   tjtjtj ¡ |   tjd¡ |   tjtjd ¡ |   tjd¡ |   tj	d¡ |   tj
tjtj tj tj	 tj ¡ d S )Nz 	
ÚabcdefghijklmnopqrstuvwxyzÚABCDEFGHIJKLMNOPQRSTUVWXYZÚ
0123456789ZabcdefABCDEFÚ01234567z !"#$%&'()*+,-./:;<=>?@[\]^_`{|}~)ÚassertEqualÚstringÚ
whitespaceÚascii_lowercaseÚascii_uppercaseÚascii_lettersÚdigitsÚ	hexdigitsÚ	octdigitsÚpunctuationÚ	printable)Úself© r   úT/oak/stanford/groups/akundaje/marinovg/programs/Python-3.7.3/Lib/test/test_string.pyÚ
test_attrs   s    zModuleTest.test_attrsc             C   sª   |   t d¡d¡ |   t d¡d¡ |   t d¡d¡ |   t d¡d¡ |   t dd¡d¡ |   t d	¡d
¡ |   t d¡d¡ |   t d¡d¡ |   t dd¡d¡ d S )Nzabc def ghizAbc Def Ghizabc	def
ghizabc	   def  
ghizABC DEF GHIzABC-DEF-GHIú-zAbc-Def-GhizABC-def DEF-ghi GHIzAbc-def Def-ghi Ghiz   aBc  DeF   zAbc Defz		aBc	DeF	ú	z		Abc	Def	)r   r	   Úcapwords)r   r   r   r   Útest_capwords   s    zModuleTest.test_capwordsc             C   sf   t  ¡ }|  | d¡d¡ |  | dd¡d¡ |  | ddd¡d¡ |  t|j¡ |  tt jj¡ d S )NÚfoozfoo{0}ÚbarZfoobarzfoo{1}{0}-{1}é   z	foo6bar-6)r	   Ú	Formatterr   ÚformatÚassertRaisesÚ	TypeError)r   Úfmtr   r   r   Útest_basic_formatter"   s    zModuleTest.test_basic_formatterc          	   C   s¤   t  ¡ }|  |jdddd¡ |  t|jd¡ |  |jdddd¡ |  t|jd¡ |  |jdddd¡ |  t|jd¡ |  td	¡ |jddd
 W d Q R X d S )Nz-{arg}-Útest)Úargz-test-z-{self}-)r   z-{format_string}-)Úformat_stringr&   )r&   r%   )r	   r   r   r   r    ÚKeyErrorÚassertRaisesRegexr!   )r   r"   r   r   r   Útest_format_keyword_arguments*   s    z(ModuleTest.test_format_keyword_argumentsc          	   C   sþ   t  ¡ }|  | ddd¡d dd¡¡ |  |jdd ddddjd ddd¡ |  | ddd¡d dd¡¡ |  | dddd¡d ddd¡¡ |  |jd	d
dddd	jd
ddd¡ |  t¡ | ddd¡ W d Q R X |  t¡ | ddd¡ W d Q R X d S )Nzfoo{}{}r   r   zfoo{1}{num}{1})Únumz{:^{}}z	{:^{}} {}ÚXz{:^{pad}}{}r   )Úpadzfoo{1}{}zfoo{}{1})r	   r   r   r   r    Ú
ValueError)r   r"   r   r   r   Útest_auto_numbering6   s    zModuleTest.test_auto_numberingc             C   s¢   t  ¡ }|  |jdddd¡ |  | dd¡d¡ |  t|jdd¡ |  | dd¡d	¡ |  | dt j¡d
¡ |  | dtdƒ¡d¡ |  | dtdƒ¡d¡ d S )Nz	-{arg!r}-r$   )r%   z-'test'-z{0!s}z{0!h}z{0!a}é*   Z42z6'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'éÿ   z'\xff'é   z'\u0100')r	   r   r   r   r    r-   r   Úchr)r   r"   r   r   r   Útest_conversion_specifiersI   s    z%ModuleTest.test_conversion_specifiersc          	   C   sV   t  ¡ }G dd„ dƒ}|ƒ }|  | d|¡d¡ |  t¡ | dd¡ W d Q R X d S )Nc               @   s   e Zd Zdd„ ZdS )z,ModuleTest.test_name_lookup.<locals>.AnyAttrc             S   s   |S )Nr   )r   Úattrr   r   r   Ú__getattr__X   s    z8ModuleTest.test_name_lookup.<locals>.AnyAttr.__getattr__N)Ú__name__Ú
__module__Ú__qualname__r5   r   r   r   r   ÚAnyAttrW   s   r9   z{0.lumber}{0.jack}Z
lumberjackÚ )r	   r   r   r   r    ÚAttributeError)r   r"   r9   Úxr   r   r   Útest_name_lookupU   s    zModuleTest.test_name_lookupc          	   C   sn   t  ¡ }dddg}|  | d|¡d¡ |  t¡ | dg ¡ W d Q R X |  t¡ | di ¡ W d Q R X d S )NZeggsÚandZspamz{0[2]}{0[0]}Zspameggs)r	   r   r   r   r    Ú
IndexErrorr'   )r   r"   Úlookupr   r   r   Útest_index_lookup_   s    
zModuleTest.test_index_lookupc             C   s4   G dd„ dt jƒ}|ddiƒ}|  | d¡d¡ d S )Nc               @   s    e Zd Zi fdd„Zdd„ ZdS )z>ModuleTest.test_override_get_value.<locals>.NamespaceFormatterc             S   s   t j | ¡ || _d S )N)r	   r   Ú__init__Ú	namespace)r   rC   r   r   r   rB   j   s    zGModuleTest.test_override_get_value.<locals>.NamespaceFormatter.__init__c             S   sD   t |tƒr0y|| S  tk
r,   | j| S X ntj |||¡ d S )N)Ú
isinstanceÚstrr'   rC   r	   r   Ú	get_value)r   ÚkeyÚargsÚkwdsr   r   r   rF   n   s    
zHModuleTest.test_override_get_value.<locals>.NamespaceFormatter.get_valueN)r6   r7   r8   rB   rF   r   r   r   r   ÚNamespaceFormatteri   s   rJ   ZgreetingZhelloz{greeting}, world!zhello, world!)r	   r   r   r   )r   rJ   r"   r   r   r   Útest_override_get_valueh   s    z"ModuleTest.test_override_get_valuec             C   s4   G dd„ dt jƒ}|ƒ }|  | ddd„ ¡d¡ d S )Nc               @   s   e Zd Zdd„ ZdS )z<ModuleTest.test_override_format_field.<locals>.CallFormatterc             S   s   t |ƒ |ƒS )N)r   )r   ÚvalueÚformat_specr   r   r   Úformat_field~   s    zIModuleTest.test_override_format_field.<locals>.CallFormatter.format_fieldN)r6   r7   r8   rN   r   r   r   r   ÚCallFormatter}   s   rO   z*{0}*c               S   s   dS )NÚresultr   r   r   r   r   Ú<lambda>‚   ó    z7ModuleTest.test_override_format_field.<locals>.<lambda>z*result*)r	   r   r   r   )r   rO   r"   r   r   r   Útest_override_format_field|   s    z%ModuleTest.test_override_format_fieldc             C   s2   G dd„ dt jƒ}|ƒ }|  | ddd¡d¡ d S )Nc                   s   e Zd Z‡ fdd„Z‡  ZS )z:ModuleTest.test_override_convert_field.<locals>.XFormatterc                s   |dkrd S t ƒ  ||¡S )Nr<   )ÚsuperÚconvert_field)r   rL   Ú
conversion)Ú	__class__r   r   rU   ‡   s    zHModuleTest.test_override_convert_field.<locals>.XFormatter.convert_field)r6   r7   r8   rU   Ú__classcell__r   r   )rW   r   Ú
XFormatter†   s   rY   z{0!r}:{0!x}r   z
'foo':None)r	   r   r   r   )r   rY   r"   r   r   r   Útest_override_convert_field…   s    z&ModuleTest.test_override_convert_fieldc             C   s0   G dd„ dt jƒ}|ƒ }|  | dd¡d¡ d S )Nc               @   s   e Zd Zdd„ ZdS )z4ModuleTest.test_override_parse.<locals>.BarFormatterc             s   sZ   xT|  d¡D ]F}|d dkrD|dd …  d¡\}}}d||d fV  q|d d d fV  qW d S )Nú|r   ú+é   ú:r:   )ÚsplitÚ	partition)r   r&   ZfieldÚ
field_nameÚ_rM   r   r   r   Úparse”   s
    z:ModuleTest.test_override_parse.<locals>.BarFormatter.parseN)r6   r7   r8   rc   r   r   r   r   ÚBarFormatter‘   s   rd   z*|+0:^10s|*r   z*   foo    *)r	   r   r   r   )r   rd   r"   r   r   r   Útest_override_parse   s    zModuleTest.test_override_parsec          	   C   sÀ   G dd„ dt jƒ}|ƒ }|  | dd¡d¡ |  |jddddd	¡ |  |jd
ddddd¡ | jt|jd
ddddd |  t|jddd¡ | jt|jddddd | jt|jddddd d S )Nc               @   s   e Zd Zdd„ ZdS )z@ModuleTest.test_check_unused_args.<locals>.CheckAllUsedFormatterc             S   sH   t | ¡ ƒ}| tdt|ƒƒ¡ x|D ]}| |¡ q&W |rDtdƒ‚d S )Nr   zunused arguments)ÚsetÚkeysÚupdateÚrangeÚlenÚremover-   )r   Ú	used_argsrH   ÚkwargsZunused_argsr%   r   r   r   Úcheck_unused_args¢   s    
zRModuleTest.test_check_unused_args.<locals>.CheckAllUsedFormatter.check_unused_argsN)r6   r7   r8   rn   r   r   r   r   ÚCheckAllUsedFormatter¡   s   ro   z{0}é
   Ú10z{0}{i}éd   )ÚiZ10100z	{0}{i}{1}é   Z1010020r   )rs   Újz{i})r	   r   r   r   r    r-   )r   ro   r"   r   r   r   Útest_check_unused_args    s    z!ModuleTest.test_check_unused_argsc          	   C   sV   t  ¡ }d}tdd}|  t¡}| d||tƒ d¡ W d Q R X |  dt|j	ƒ¡ d S )Nr   rr   )rs   z{i}éÿÿÿÿZ	recursion)
r	   r   Údictr    r-   Ú_vformatrf   ÚassertInrE   Ú	exception)r   r"   rH   rm   Úerrr   r   r   Útest_vformat_recursion_limit¶   s    
z'ModuleTest.test_vformat_recursion_limitN)r6   r7   r8   r   r   r#   r)   r.   r3   r=   rA   rK   rS   rZ   re   rv   r}   r   r   r   r   r      s   
		r   c               @   s   e Zd ZdS )ÚBagN)r6   r7   r8   r   r   r   r   r~   Á   s   r~   c               @   s   e Zd Zdd„ ZdS )ÚMappingc          	   C   sH   | }x>|  d¡D ]0}yt||ƒ}W q tk
r>   t|ƒ‚Y qX qW |S )NÚ.)r_   Úgetattrr;   r'   )r   ÚnameÚobjÚpartr   r   r   Ú__getitem__Å   s    zMapping.__getitem__N)r6   r7   r8   r…   r   r   r   r   r   Ä   s   r   c               @   s¼   e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zd	d
„ Zdd„ Zdd„ Z	dd„ Z
dd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd „ Zd!d"„ Zd#d$„ Zd%d&„ Zd'd(„ Zd)d*„ Zd+d,„ Zd-S ).ÚTestTemplatec             C   sJ   t dƒ}|  | tddd¡d¡ |  t|jtdd¡ |  tt j¡ d S )Nz,$who likes to eat a bag of $what worth $$100ÚtimÚham)ÚwhoÚwhatz(tim likes to eat a bag of ham worth $100)r‰   )r   r   Ú
substituterx   r    r'   r!   )r   Úsr   r   r   Útest_regular_templatesÐ   s
    z#TestTemplate.test_regular_templatesc             C   sD   t dƒ}tdddd}|  | |¡d¡ |  t|jtddd¡ d S )Nz$who likes ${what} for ${meal}r‡   rˆ   Údinner)r‰   rŠ   Úmealztim likes ham for dinner)r‰   rŠ   )r   rx   r   r‹   r    r'   )r   rŒ   Údr   r   r   Ú"test_regular_templates_with_braces×   s
    
z/TestTemplate.test_regular_templates_with_bracesc             C   s,   t dƒ}tdddd}|  | |¡d¡ d S )Nz$WHO likes ${WHAT} for ${MEAL}r‡   rˆ   rŽ   )ZWHOÚWHATZMEALztim likes ham for dinner)r   rx   r   r‹   )r   rŒ   r   r   r   r   Ú&test_regular_templates_with_upper_caseÞ   s    z3TestTemplate.test_regular_templates_with_upper_casec             C   s,   t dƒ}tdddd}|  | |¡d¡ d S )Nz%$_wh0_ likes ${_w_h_a_t_} for ${mea1}r‡   rˆ   rŽ   )Z_wh0_Z	_w_h_a_t_Zmea1ztim likes ham for dinner)r   rx   r   r‹   )r   rŒ   r   r   r   r   Ú'test_regular_templates_with_non_lettersã   s    z4TestTemplate.test_regular_templates_with_non_lettersc             C   sJ   | j }tdƒ}|| tddd¡dƒ tdƒ}|| tddd¡dƒ d S )Nz-$who likes to eat a bag of $$what worth $$100r‡   rˆ   )r‰   rŠ   z*tim likes to eat a bag of $what worth $100z$who likes $$ztim likes $)r   r   r‹   rx   )r   ÚeqrŒ   r   r   r   Útest_escapesè   s    zTestTemplate.test_escapesc             C   s<   | j }tdƒ}tdd}|| |¡dƒ || |¡dƒ d S )Nz%(foo)s $foo ${foo}Zbaz)r   z%(foo)s baz baz)r   r   rx   r‹   Úsafe_substitute)r   r•   rŒ   r   r   r   r   Útest_percentsð   s
    
zTestTemplate.test_percentsc             C   sT   | j }tdƒ}tdd}|| |¡dƒ || |¡dƒ tdƒ}|| |¡dƒ d S )Nz&tim has eaten $count bags of ham todayé   )Úcountz!tim has eaten 7 bags of ham todayz(tim has eaten ${count} bags of ham today)r   r   rx   r‹   r—   )r   r•   rŒ   r   r   r   r   Útest_stringification÷   s    
z!TestTemplate.test_stringificationc             C   s>   | j }tdƒ}tddd}|| |¡dƒ || |¡dƒ d S )Nz$who ate ${meal})r‡   Úfred)rˆ   zkung pao)r‰   r   z'('tim', 'fred') ate ('ham', 'kung pao'))r   r   rx   r‹   r—   )r   r•   rŒ   r   r   r   r   Útest_tupleargs   s
    zTestTemplate.test_tupleargsc             C   sˆ   | j }tdƒ}|| tdd¡dƒ || tdd¡dƒ || tddd	¡d
ƒ || tddd¡dƒ || tdddd¡dƒ d S )Nz$who likes ${what} for ${meal}r‡   )r‰   ztim likes ${what} for ${meal}rˆ   )rŠ   z$who likes ham for ${meal}rŽ   )rŠ   r   z$who likes ham for dinner)r‰   rŠ   ztim likes ham for ${meal})r‰   rŠ   r   ztim likes ham for dinner)r   r   r—   rx   )r   r•   rŒ   r   r   r   Útest_SafeTemplate  s    zTestTemplate.test_SafeTemplatec             C   s–   | j }tdƒ}|t|jtddƒ tdƒ}|t|jtddƒ tdƒ}|t|jtddƒ tdƒ}|t|jtddƒ tdƒ}|t|jtddƒ d S )Nz$who likes $r‡   )r‰   z$who likes ${what)z$who likes $100u   $who likes $Ä±u   $who likes $Ä°)r    r   r-   r‹   rx   )r   ÚraisesrŒ   r   r   r   Útest_invalid_placeholders  s    z&TestTemplate.test_invalid_placeholdersc             C   sX   G dd„ dt ƒ}tƒ }tƒ |_tƒ |j_d|jj_d|j_|dƒ}|  | |¡d¡ d S )Nc               @   s   e Zd ZdZdS )z9TestTemplate.test_idpattern_override.<locals>.PathPatternz[_a-z][._a-z0-9]*N)r6   r7   r8   Ú	idpatternr   r   r   r   ÚPathPattern#  s   r¢   r‡   rˆ   z,$bag.foo.who likes to eat a bag of $bag.whatztim likes to eat a bag of ham)	r   r   r~   Úbagr   r‰   rŠ   r   r‹   )r   r¢   ÚmrŒ   r   r   r   Útest_idpattern_override"  s    

z$TestTemplate.test_idpattern_overridec             C   sN   G dd„ dt ƒ}|dƒ}tddddd}|  t|j|¡ |  | |¡d	¡ d S )
Nc               @   s   e Zd ZdZdS )z3TestTemplate.test_flags_override.<locals>.MyPatternr   N)r6   r7   r8   Úflagsr   r   r   r   Ú	MyPattern.  s   r§   z$wHO likes ${WHAT} for ${meal}r‡   rˆ   rŽ   rœ   )ZwHOr’   r   ÚwzfredHO likes ${WHAT} for dinner)r   rx   r    r-   r‹   r   r—   )r   r§   rŒ   r   r   r   r   Útest_flags_override-  s
    z TestTemplate.test_flags_overridec             C   s:   G dd„ dt ƒ}tddd}|dƒ}|  | |¡d¡ d S )Nc               @   s   e Zd ZdZdZdZdS )zFTestTemplate.test_idpattern_override_inside_outside.<locals>.MyPatternz[a-z]+z[A-Z]+r   N)r6   r7   r8   r¡   Úbraceidpatternr¦   r   r   r   r   r§   8  s   r§   r   ÚBAR)r   r«   z$foo ${BAR}zfoo BAR)r   rx   r   r‹   )r   r§   r¤   rŒ   r   r   r   Ú&test_idpattern_override_inside_outside5  s    z3TestTemplate.test_idpattern_override_inside_outsidec             C   sP   G dd„ dt ƒ}tddd}|dƒ}|  t|j|¡ |dƒ}|  t|j|¡ d S )Nc               @   s   e Zd ZdZdZdZdS )zWTestTemplate.test_idpattern_override_inside_outside_invalid_unbraced.<locals>.MyPatternz[a-z]+z[A-Z]+r   N)r6   r7   r8   r¡   rª   r¦   r   r   r   r   r§   C  s   r§   r   r«   )r   r«   z$FOOz${bar})r   rx   r    r-   r‹   )r   r§   r¤   rŒ   r   r   r   Ú7test_idpattern_override_inside_outside_invalid_unbraced@  s    zDTestTemplate.test_idpattern_override_inside_outside_invalid_unbracedc             C   s   G dd„ dt ƒ}tƒ }tƒ |_tƒ |j_d|jj_d|j_|dƒ}|  | |¡d¡ G dd„ dt ƒ}|dƒ}|  	t
|ji ¡ |  	t
|ji ¡ d S )	Nc               @   s   e Zd ZdZdS )z5TestTemplate.test_pattern_override.<locals>.MyPatternz¾
            (?P<escaped>@{2})                   |
            @(?P<named>[_a-z][._a-z0-9]*)       |
            @{(?P<braced>[_a-z][._a-z0-9]*)}    |
            (?P<invalid>@)
            N)r6   r7   r8   Úpatternr   r   r   r   r§   N  s   r§   r‡   rˆ   z,@bag.foo.who likes to eat a bag of @bag.whatztim likes to eat a bag of hamc               @   s   e Zd ZdZdS )z6TestTemplate.test_pattern_override.<locals>.BadPatterna  
            (?P<badname>.*)                     |
            (?P<escaped>@{2})                   |
            @(?P<named>[_a-z][._a-z0-9]*)       |
            @{(?P<braced>[_a-z][._a-z0-9]*)}    |
            (?P<invalid>@)                      |
            N)r6   r7   r8   r®   r   r   r   r   Ú
BadPattern]  s   r¯   )r   r   r~   r£   r   r‰   rŠ   r   r‹   r    r-   r—   )r   r§   r¤   rŒ   r¯   r   r   r   Útest_pattern_overrideM  s    

z"TestTemplate.test_pattern_overridec             C   sJ   G dd„ dt ƒ}d}||ƒ}|  t|ji ¡ | ddi¡}|  |d¡ d S )Nc               @   s   e Zd ZdZdS )z5TestTemplate.test_braced_override.<locals>.MyTemplatez÷
            \$(?:
              (?P<escaped>$)                     |
              (?P<named>[_a-z][_a-z0-9]*)        |
              @@(?P<braced>[_a-z][_a-z0-9]*)@@   |
              (?P<invalid>)                      |
           )
           N)r6   r7   r8   r®   r   r   r   r   Ú
MyTemplatej  s   r±   zPyCon in $@@location@@ÚlocationÚ	ClevelandzPyCon in Cleveland)r   r    r'   r‹   r   )r   r±   ÚtmplÚtÚvalr   r   r   Útest_braced_overridei  s    
z!TestTemplate.test_braced_overridec             C   sJ   G dd„ dt ƒ}d}||ƒ}|  | ¡ |¡ | ddi¡}|  |d¡ d S )Nc               @   s   e Zd ZdZdS )z:TestTemplate.test_braced_override_safe.<locals>.MyTemplatez÷
            \$(?:
              (?P<escaped>$)                     |
              (?P<named>[_a-z][_a-z0-9]*)        |
              @@(?P<braced>[_a-z][_a-z0-9]*)@@   |
              (?P<invalid>)                      |
           )
           N)r6   r7   r8   r®   r   r   r   r   r±   {  s   r±   zPyCon in $@@location@@r²   r³   zPyCon in Cleveland)r   r   r—   )r   r±   r´   rµ   r¶   r   r   r   Útest_braced_override_safez  s    
z&TestTemplate.test_braced_override_safec          	   C   sN   G dd„ dt ƒ}|dƒ}|  t¡}| i ¡ W d Q R X |  dt|jƒ¡ d S )Nc               @   s   e Zd ZdZdS )z;TestTemplate.test_invalid_with_no_lines.<locals>.MyTemplatez´
              (?P<invalid>) |
              unreachable(
                (?P<named>)   |
                (?P<braced>)  |
                (?P<escaped>)
              )
            N)r6   r7   r8   r®   r   r   r   r   r±   ‘  s   r±   r:   zline 1, col 1)r   r    r-   r‹   rz   rE   r{   )r   r±   rŒ   r|   r   r   r   Útest_invalid_with_no_lines‹  s
    	z'TestTemplate.test_invalid_with_no_linesc             C   s*   t dƒ}tddd}|  | |¡d¡ d S )Nz$who likes $whatu   tÃ¿mu   fÃ¾ed)r‰   rŠ   u   tÃ¿m likes fÃ¾ed)r   rx   r   r‹   )r   rŒ   r   r   r   r   Útest_unicode_valuesŸ  s    z TestTemplate.test_unicode_valuesc             C   s´   | j }tdƒ}||jddddƒ ||jtdddddƒ ||jtdd	dddddƒ td
ƒ}||jtdddddƒ ||jtdddddƒ tdƒ}||jdddƒ d S )Nz$who likes $whatr‡   rˆ   )r‰   rŠ   ztim likes ham)r‰   )rŠ   rœ   zkung paozthe mapping is $mappingÚnone)r   Úbozo)Úmappingzthe mapping is bozoÚoneÚtwozthe mapping is twozthe self is $self)r   zthe self is bozo)r   r   r‹   rx   )r   r•   rŒ   r   r   r   Útest_keyword_arguments¤  s    z#TestTemplate.test_keyword_argumentsc             C   sä   | j }| j}tdƒ}||jddddƒ ||jtdddddƒ ||jtdd	dddddƒ td
ƒ}||jtdddddƒ ||jtdddddƒ tdd}|t|j|i ƒ |t|j|i ƒ tdƒ}||jdddƒ d S )Nz$who likes $whatr‡   rˆ   )r‰   rŠ   ztim likes ham)r‰   )rŠ   rœ   zkung paozthe mapping is $mappingr»   )r   r¼   )r½   zthe mapping is bozor¾   r¿   zthe mapping is twozthe self is $self)r   zthe self is bozo)r   r    r   r—   rx   r!   r‹   )r   r•   rŸ   rŒ   r   r   r   r   Útest_keyword_arguments_safeµ  s$    
z(TestTemplate.test_keyword_arguments_safec             C   sÈ   | j }| j}G dd„ dtƒ}|dƒ}||jddddƒ |t|jƒ ||jddddƒ || ¡ dƒ |dƒ}|t|jtdddƒ || ¡ dƒ G d	d
„ d
tƒ}|dƒ}|   | tddd¡d¡ d S )Nc               @   s   e Zd ZdZdS )z?TestTemplate.test_delimiter_override.<locals>.AmpersandTemplateú&N)r6   r7   r8   Ú	delimiterr   r   r   r   ÚAmpersandTemplateÍ  s   rÄ   zthis &gift is for &{who} &&ZbudZyou)Zgiftr‰   zthis bud is for you &zthis &gift is for &{who} &c               @   s   e Zd ZdZdS )z7TestTemplate.test_delimiter_override.<locals>.PieDelimsú@N)r6   r7   r8   rÃ   r   r   r   r   Ú	PieDelimsØ  s   rÆ   z-@who likes to eat a bag of @{what} worth $100r‡   rˆ   )r‰   rŠ   z(tim likes to eat a bag of ham worth $100)r   r    r   r‹   r'   r—   r-   rx   )r   r•   rŸ   rÄ   rŒ   rÆ   r   r   r   Útest_delimiter_overrideÊ  s    z$TestTemplate.test_delimiter_overrideN)r6   r7   r8   r   r‘   r“   r”   r–   r˜   r›   r   rž   r    r¥   r©   r¬   r­   r°   r·   r¸   r¹   rº   rÀ   rÁ   rÇ   r   r   r   r   r†   Ï   s,   	r†   Ú__main__)
Úunittestr	   r   ÚTestCaser   r~   r   r†   r6   Úmainr   r   r   r   Ú<module>   s    <  