B
    18™\f2  ã               @   sˆ   d Z ddlZddlZddlZddlmZ dZdZG dd„ dejƒZ	G dd	„ d	ejƒZ
G d
d„ de
ƒZG dd„ de
ƒZedkr„e ¡  dS )z› Test script for the unicodedata module.

    Written by Marc-Andre Lemburg (mal@lemburg.com).

    (c) Copyright CNRI, All Rights Reserved. NO WARRANTY.

é    N)Úscript_helperzutf-8Úsurrogatepassc               @   s   e Zd ZdZdd„ ZdS )ÚUnicodeMethodsTestZ(97a41f208c53d5e08c77c1175187e95386b82b6fc             C   sn  t  ¡ }xHtdƒD ]:}t|ƒ}d| ¡  d| ¡  d| ¡  d| ¡  d| ¡  d| 	¡  d| 
¡  d| ¡  d| ¡  d|d  ¡  d|d  ¡  d|d  ¡  d|d  ¡  d|d  ¡  d|d  	¡  d|d  
¡  d|d  ¡  d|d  ¡  | ¡ | ¡ | ¡ |d  ¡ |d  ¡ |d  ¡ |d  ¡ g}| d |¡ tt¡¡ qW | ¡ }|  || j¡ d S )Ni   Z01ÚabcÚ123z 	ÚABCÚ )ÚhashlibÚsha1ÚrangeÚchrÚisalnumÚisalphaÚ	isdecimalÚisdigitÚislowerÚ	isnumericÚisspaceÚistitleÚisupperÚlowerÚupperÚtitleÚupdateÚjoinÚencodeÚencodingÚerrorsÚ	hexdigestÚassertEqualÚexpectedchecksum)ÚselfÚhÚiÚcharÚdataÚresult© r'   úY/oak/stanford/groups/akundaje/marinovg/programs/Python-3.7.3/Lib/test/test_unicodedata.pyÚtest_method_checksum   s>    











z'UnicodeMethodsTest.test_method_checksumN)Ú__name__Ú
__module__Ú__qualname__r    r)   r'   r'   r'   r(   r      s   r   c               @   s   e Zd Zdd„ Zdd„ ZdS )ÚUnicodeDatabaseTestc             C   s   dd l }|| _d S )Nr   )ÚunicodedataÚdb)r!   r.   r'   r'   r(   ÚsetUpF   s    zUnicodeDatabaseTest.setUpc             C   s   | ` d S )N)r/   )r!   r'   r'   r(   ÚtearDownL   s    zUnicodeDatabaseTest.tearDownN)r*   r+   r,   r0   r1   r'   r'   r'   r(   r-   D   s   r-   c               @   sˆ   e Zd 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 S )!ÚUnicodeFunctionsTestZ(4f73278b19c2ec3099724c132f0b90a1d25c19e4c             C   sÊ   g }t  ¡ }x¢tdƒD ]–}t|ƒ}t| j |d¡dƒt| j |d¡dƒt| j |d¡dƒ| j 	|¡| j 
|¡| j |¡t| j |¡ƒt| j |¡ƒg}| d |¡ d¡¡ qW | ¡ }|  || j¡ d S )Ni   éÿÿÿÿz.12gr   Úascii)r	   r
   r   r   Úformatr/   ÚdigitÚnumericÚdecimalÚcategoryÚbidirectionalÚdecompositionÚstrÚmirroredÚ	combiningr   r   r   r   r   r    )r!   r%   r"   r#   r$   r&   r'   r'   r(   Útest_function_checksumT   s    


z+UnicodeFunctionsTest.test_function_checksumc             C   s¶   |   | j dd ¡d ¡ |   | j d¡d¡ |   | j dd ¡d ¡ |   | j d¡d¡ |   | j dd ¡d ¡ |   | j d¡d¡ |  t| jj¡ |  t| jjd	¡ |  t| jjd
¡ d S )NÚAÚ9é	   u   â…›u   â‘¨u   ð €€u   ðŸ½é   ÚxxÚx)r   r/   r6   ÚassertRaisesÚ	TypeErrorÚ
ValueError)r!   r'   r'   r(   Ú
test_digiti   s    zUnicodeFunctionsTest.test_digitc             C   sÈ   |   | j dd ¡d ¡ |   | j d¡d¡ |   | j d¡d¡ |   | j d¡d¡ |   | j d¡d	¡ |   | j d
d ¡d ¡ |   | j d¡d¡ |  t| jj¡ |  t| jjd¡ |  t| jjd¡ d S )Nr@   rA   rB   u   â…›g      À?u   â‘¨g      "@u   ê˜§g      @u   ð €€u   ð„ªi(#  rD   rE   )r   r/   r7   rF   rG   rH   )r!   r'   r'   r(   Útest_numericu   s    z!UnicodeFunctionsTest.test_numericc             C   s¸   |   | j dd ¡d ¡ |   | j d¡d¡ |   | j dd ¡d ¡ |   | j dd ¡d ¡ |   | j dd ¡d ¡ |   | j d¡d¡ |  t| jj¡ |  t| jjd	¡ |  t| jjd
¡ d S )Nr@   rA   rB   u   â…›u   â‘¨u   ð €€u   ðŸ½rC   rD   rE   )r   r/   r8   rF   rG   rH   )r!   r'   r'   r(   Útest_decimal‚   s    z!UnicodeFunctionsTest.test_decimalc             C   sŠ   |   | j d¡d¡ |   | j d¡d¡ |   | j d¡d¡ |   | j d¡d¡ |   | j d	¡d
¡ |  t| jj¡ |  t| jjd¡ d S )Nu   ï¿¾ZCnÚaZLlr@   ZLuu   ð €€ZLou   ð„ªZNorD   )r   r/   r9   rF   rG   )r!   r'   r'   r(   Útest_categoryŽ   s    z"UnicodeFunctionsTest.test_categoryc             C   sv   |   | j d¡d¡ |   | j d¡d¡ |   | j d¡d¡ |   | j d¡d¡ |  t| jj¡ |  t| jjd¡ d S )	Nu   ï¿¾r   ú ZWSr@   ÚLu   ð €€rD   )r   r/   r:   rF   rG   )r!   r'   r'   r(   Útest_bidirectional˜   s    z'UnicodeFunctionsTest.test_bidirectionalc             C   sN   |   | j d¡d¡ |   | j d¡d¡ |  t| jj¡ |  t| jjd¡ d S )Nu   ï¿¾r   õ   Â¼z<fraction> 0031 2044 0034rD   )r   r/   r;   rF   rG   )r!   r'   r'   r(   Útest_decomposition¡   s    z'UnicodeFunctionsTest.test_decompositionc             C   sv   |   | j d¡d¡ |   | j d¡d¡ |   | j d¡d¡ |   | j d¡d¡ |  t| jj¡ |  t| jjd¡ d S )Nu   ï¿¾r   rL   u   âˆé   u   ð €€rD   )r   r/   r=   rF   rG   )r!   r'   r'   r(   Útest_mirrored¨   s    z"UnicodeFunctionsTest.test_mirroredc             C   sv   |   | j d¡d¡ |   | j d¡d¡ |   | j d¡d¡ |   | j d¡d¡ |  t| jj¡ |  t| jjd¡ d S )Nu   ï¿¾r   rL   u   âƒ¡éæ   u   ð €€rD   )r   r/   r>   rF   rG   )r!   r'   r'   r(   Útest_combining±   s    z#UnicodeFunctionsTest.test_combiningc             C   s>   |   t| jj¡ |   t| jjdd¡ |  | j dd¡d¡ d S )NÚunknownrD   ZNFKCr   )rF   rG   r/   Ú	normalizerH   r   )r!   r'   r'   r(   Útest_normalizeº   s    z#UnicodeFunctionsTest.test_normalizec             C   s,   d}x"|D ]}|   | j d|¡|¡ q
W d S )N)u   à­‡Ì€à¬¾u   á„€Ì€á…¡u   LiÌt-sá¹³Ìu.   à¤®à¤¾à¤°à¥à¤• à¤œà¤¼à¥à¤•à¥‡à¤°à¤¬à¤°à¥à¤—u'   à¤•à¤¿à¤°à¥à¤—à¤¿à¤œà¤¼à¤¸à¥à¤¤à¤¾à¤¨ÚNFC)r   r/   rX   )r!   ZcomposedÚtextr'   r'   r(   Ú	test_pr29Á   s    
zUnicodeFunctionsTest.test_pr29c             C   s"   d}d}|   | j d|¡|¡ d S )Nu?   CÌ¸CÌ¸CÌ¸CÌ¸CÌ¸CÌ¸CÌ¸CÌ¸CÌ¸CÌ¸CÌ¸CÌ¸CÌ¸CÌ¸CÌ¸CÌ¸CÌ¸CÌ¸CÌ¸CÌ¸CÌ§u>   CÌ¸CÌ¸CÌ¸CÌ¸CÌ¸CÌ¸CÌ¸CÌ¸CÌ¸CÌ¸CÌ¸CÌ¸CÌ¸CÌ¸CÌ¸CÌ¸CÌ¸CÌ¸CÌ¸CÌ¸Ã‡rZ   )r   r/   rX   )r!   rL   Úbr'   r'   r(   Útest_issue10254Í   s    z$UnicodeFunctionsTest.test_issue10254c             C   s^   d}d}d}d}d}d}|   | j d|¡|¡ |   | j d|¡|¡ |   | j d|¡|¡ d S )Nu	   á„€á…¶á†¨u	   á„€á…µá†§u   ê¸°á†§u	   á„€á…µá‡ƒu   ê¸°á‡ƒrZ   )r   r/   rX   )r!   Zu1176_str_aZu1176_str_bZu11a7_str_aZu11a7_str_bZu11c3_str_aZu11c3_str_br'   r'   r(   Útest_issue29456Ó   s    z$UnicodeFunctionsTest.test_issue29456c             C   s¶   | j j}|  t|d¡ |  t|tƒ ¡ |  t|d¡ |  t|d¡ |  |dƒd¡ |  |dƒd¡ |  |dƒd	¡ |  |d
ƒd¡ |  |dƒd¡ |  |dƒd¡ |  |dƒd	¡ d S )Nó   ar   ZraúÚNrN   ZNau   ì¢”ÚWu   ï½¦ÚHu   ï¼ŸÚFu   â€r@   u   ð €€)r/   Úeast_asian_widthrF   rG   Ú	bytearrayr   )r!   Zeawr'   r'   r(   Útest_east_asian_widthà   s    z*UnicodeFunctionsTest.test_east_asian_widthc             C   s.   |   | jj d¡d¡ |   | j d¡d¡ d S )Nu   âŒšrb   rc   )r   r/   Ú	ucd_3_2_0rf   )r!   r'   r'   r(   Ú!test_east_asian_width_9_0_changesî   s    z6UnicodeFunctionsTest.test_east_asian_width_9_0_changesN)r*   r+   r,   r    r?   rI   rJ   rK   rM   rP   rR   rT   rV   rY   r\   r^   r_   rh   rj   r'   r'   r'   r(   r2   O   s    
			r2   c               @   sL   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S )ÚUnicodeMiscTestc             C   s,   d}t  d|¡}d}|  ||j d¡¡ d S )NzGimport sys;sys.modules['unicodedata'] = None;eval("'\\N{SOFT HYPHEN}'")z-czUSyntaxError: (unicode error) \N escapes not supported (can't load unicodedata module)r4   )r   Zassert_python_failureÚassertInÚerrÚdecode)r!   Úcoder&   Úerrorr'   r'   r(   Ú#test_failed_import_during_compilingô   s    z3UnicodeMiscTest.test_failed_import_during_compilingc             C   sb   d}xJt dƒD ]>}t|ƒ}| j |d¡}|dkr|  || j |¡¡ |d7 }qW |  |dk¡ d S )Nr   i   r3   rS   é
   )r   r   r/   r8   r   r7   Ú
assertTrue)r!   Úcountr#   ÚcÚdecr'   r'   r(   Útest_decimal_numeric_consistent  s    z/UnicodeMiscTest.test_decimal_numeric_consistentc             C   sb   d}xJt dƒD ]>}t|ƒ}| j |d¡}|dkr|  || j |¡¡ |d7 }qW |  |dk¡ d S )Nr   i   r3   rS   rr   )r   r   r/   r6   r   r7   rs   )r!   rt   r#   ru   rv   r'   r'   r(   Útest_digit_numeric_consistent  s    z-UnicodeMiscTest.test_digit_numeric_consistentc             C   s   |   | j d¡d¡ d S )NzGOTHIC LETTER FAIHUu   ð†)r   r/   Úlookup)r!   r'   r'   r(   Útest_bug_1704793  s    z UnicodeMiscTest.test_bug_1704793c             C   sf   dd l }|  | d¡¡ |  |j d¡ ¡ |  d ¡ dk¡ |  d ¡ dk¡ |  d ¡ dk¡ d S )Nr   u   à¼ºrL   r@   u   áµ¹u   ê½Ú.)r.   rs   r=   ri   r   )r!   r.   r'   r'   r(   Útest_ucd_510!  s    zUnicodeMiscTest.test_ucd_510c             C   s6   |   d ¡ d¡ |   dd„ ttjd ƒD ƒdg¡ d S )Nu   áµ¹c             S   s8   g | ]0}d t |ƒ ¡ t |ƒ ¡  t |ƒ ¡  kr|‘qS )ú )r   r   r   r   )Ú.0ru   r'   r'   r(   ú
<listcomp>1  s    z1UnicodeMiscTest.test_bug_5828.<locals>.<listcomp>rS   r   )r   r   r   ÚsysÚ
maxunicode)r!   r'   r'   r(   Útest_bug_5828,  s    zUnicodeMiscTest.test_bug_5828c             C   s4   |   d ¡ d¡ |   d ¡ d¡ |   d ¡ d¡ d S )Nu   Ç„u   Ç…u   Ç†)r   r   )r!   r'   r'   r(   Útest_bug_49717  s    zUnicodeMiscTest.test_bug_4971c             C   s\   xVt dƒD ]J}t|ƒd  ¡ }|dkr>|  t|ƒdd| ¡ q
|  t|ƒdd| ¡ q
W d S )Ni   r@   )
rr   é   é   é   é…   é   é   é   i(   i)   é   z\u%.4x should be a linebreakrS   z \u%.4x should not be a linebreak)r   r   Ú
splitlinesr   Úlen)r!   r#   Úlinesr'   r'   r(   Útest_linebreak_7643=  s    z#UnicodeMiscTest.test_linebreak_7643N)r*   r+   r,   rq   rw   rx   rz   r|   r‚   rƒ   r   r'   r'   r'   r(   rk   ò   s   rk   Ú__main__)Ú__doc__r€   Úunittestr	   Ztest.supportr   r   r   ÚTestCaser   r-   r2   rk   r*   Úmainr'   r'   r'   r(   Ú<module>   s   0 $V