B
    u9af2  ã               @   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ÚabcZ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&   ú&/usr/lib/python3.7/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+   r/   r0   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.   r5   Ú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?   r@   rA   u   â…›g      À?u   â‘¨g      "@u   ê˜§g      @u   ð €€u   ð„ªi(#  rC   rD   )r   r.   r6   rE   rF   rG   )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?   r@   rA   u   â…›u   â‘¨u   ð €€u   ðŸ½rB   rC   rD   )r   r.   r7   rE   rF   rG   )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NorC   )r   r.   r8   rE   rF   )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   ð €€rC   )r   r.   r9   rE   rF   )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 0034rC   )r   r.   r:   rE   rF   )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   rK   u   âˆé   u   ð €€rC   )r   r.   r<   rE   rF   )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   rK   u   âƒ¡éæ   u   ð €€rC   )r   r.   r=   rE   rF   )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ÚunknownrC   ÚNFKCr   )rE   rF   r.   Ú	normalizerG   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    rK   Ú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úÚNrM   ZNau   ì¢”ÚWu   ï½¦ÚHu   ï¼ŸÚFu   â€r?   u   ð €€)r.   Úeast_asian_widthrE   rF   Ú	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>   rH   rI   rJ   rL   rO   rQ   rS   rU   rY   r\   r^   r_   rh   rj   r&   r&   r&   r'   r1   O   s    
			r1   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)r3   )r   Zassert_python_failureZ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   r2   rR   é
   )r
   r   r.   r7   r   r6   Ú
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   r2   rR   rq   )r
   r   r.   r5   r   r6   rr   )r    rs   r"   rt   ru   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   à¼ºrK   r?   u   áµ¹u   ê½Ú.)r-   rr   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   )Ú.0rt   r&   r&   r'   ú
<listcomp>1  s    z1UnicodeMiscTest.test_bug_5828.<locals>.<listcomp>rR   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?   )
rq   é   é   é   é…   é   é   é   i(   i)   é   z\u%.4x should be a linebreakrR   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+   rp   rv   rw   ry   r{   r   r‚   rŽ   r&   r&   r&   r'   rk   ò   s   rk   Ú__main__)Ú__doc__r   Zunittestr   Ztest.supportr   r   r   ZTestCaser   r,   r1   rk   r)   Úmainr&   r&   r&   r'   Ú<module>   s   0 $V