o
    ±ó®gŽ?  ã                   @   s¸   	 d dl Z d dlmZ d dlZd dlZd dlZd dlmZmZm	Z	m
Z
m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G dd„ dejƒZedkrZe ¡  dS dS )é    N)ÚHTTPException)Úopen_urlresourceÚrequires_resourceÚscript_helperÚcpython_onlyÚcheck_disallow_instantiationc                   @   s    e Zd ZdZedƒdd„ ƒZdS )ÚUnicodeMethodsTestZ(fbdf8106a3c7c242086b0a9efa03ad4d30d5b85dÚcpuc                 C   sl  t  ¡ }ttj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 |¡ dd	¡¡ q| ¡ }|  || j¡ d S )
Né   Z01ÚabcZ123z 	ÚABCÚ úutf-8Úsurrogatepass)ÚhashlibÚsha1ÚrangeÚsysÚ
maxunicodeÚchrÚisalnumÚisalphaÚ	isdecimalÚisdigitÚislowerÚ	isnumericÚisspaceÚistitleÚisupperÚlowerÚupperÚtitleÚupdateÚjoinÚencodeÚ	hexdigestÚassertEqualÚexpectedchecksum)ÚselfÚhÚiÚcharÚdataÚresult© r.   úK/Users/admin/.pyenv/versions/3.10.0/lib/python3.10/test/test_unicodedata.pyÚtest_method_checksum   s@   












à#z'UnicodeMethodsTest.test_method_checksumN)Ú__name__Ú
__module__Ú__qualname__r'   r   r0   r.   r.   r.   r/   r      s    r   c                   @   s   e Zd ZeZdS )ÚUnicodeDatabaseTestN)r1   r2   r3   ÚunicodedataÚdbr.   r.   r.   r/   r4   C   s    r4   c                   @   sˆ   e Zd ZdZedƒ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(d1e37a2854df60ac607b47b51189b9bf1b54bfdbr	   c                 C   sÌ   g }t  ¡ }ttjd ƒD ]K}t|ƒ}t| j |d¡dƒt| j 	|d¡dƒt| j 
|d¡dƒ| j |¡| j |¡| j |¡t| j |¡ƒt| j |¡ƒg}| d |¡ d¡¡ q| ¡ }|  || j¡ d S )Nr
   éÿÿÿÿz.12gr   Úascii)r   r   r   r   r   r   Úformatr6   Ú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_checksumL   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   ðŸ½é   ÚxxÚx)r&   r6   r;   ÚassertRaisesÚ	TypeErrorÚ
ValueError©r(   r.   r.   r/   Ú
test_digitb   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 )NrF   rG   rH   rI   g      À?rJ   g      "@u   ê˜§g      @rK   õ   ð„ªi(#  rM   rN   )r&   r6   r<   rO   rP   rQ   rR   r.   r.   r/   Útest_numericn   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 rE   )r&   r6   r=   rO   rP   rQ   rR   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 )Nõ   ï¿¾ZCnÚaZLlrF   ZLurK   ZLorT   ZNorM   )r&   r6   r>   rO   rP   rR   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 )	NrW   r   ú ZWSrF   ÚLrK   rM   )r&   r6   r?   rO   rP   rR   r.   r.   r/   Útest_bidirectional‘   ó   z'UnicodeFunctionsTest.test_bidirectionalc                 C   sN   |   | j d¡d¡ |   | j d¡d¡ |  t| jj¡ |  t| jjd¡ d S )NrW   r   õ   Â¼z<fraction> 0031 2044 0034rM   )r&   r6   r@   rO   rP   rR   r.   r.   r/   Útest_decompositionš   s   z'UnicodeFunctionsTest.test_decompositionc                 C   óv   |   | j d¡d¡ |   | j d¡d¡ |   | j d¡d¡ |   | j d¡d¡ |  t| jj¡ |  t| jjd¡ d S )NrW   r   rX   u   âˆr
   rK   rM   )r&   r6   rB   rO   rP   rR   r.   r.   r/   Útest_mirrored¡   r]   z"UnicodeFunctionsTest.test_mirroredc                 C   r`   )NrW   r   rX   u   âƒ¡éæ   rK   rM   )r&   r6   rC   rO   rP   rR   r.   r.   r/   Útest_combiningª   r]   z#UnicodeFunctionsTest.test_combiningc                 C   s(   d}|D ]}|   | j d|¡|¡ qd S )N)u   à­‡Ì€à¬¾u   á„€Ì€á…¡u   LiÌt-sá¹³Ìu.   à¤®à¤¾à¤°à¥à¤• à¤œà¤¼à¥à¤•à¥‡à¤°à¤¬à¤°à¥à¤—u'   à¤•à¤¿à¤°à¥à¤—à¤¿à¤œà¤¼à¤¸à¥à¤¤à¤¾à¤¨ÚNFC©r&   r6   Ú	normalize)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Ì¸Ã‡rd   re   )r(   rX   Ú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   ê¸°á‡ƒrd   re   )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úÚNrZ   ZNau   ì¢”ÚWu   ï½¦ÚHu   ï¼ŸÚFu   â€rF   rK   )r6   Úeast_asian_widthrO   rP   Ú	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   âŒšrn   ro   )r&   r6   Ú	ucd_3_2_0rr   rR   r.   r.   r/   Ú!test_east_asian_width_9_0_changesß   s   z6UnicodeFunctionsTest.test_east_asian_width_9_0_changesN)r1   r2   r3   r'   r   rD   rS   rU   rV   rY   r\   r_   ra   rc   rh   rj   rk   rt   rv   r.   r.   r.   r/   r7   F   s"    

			r7   c                   @   sX   e Zd Ze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 )ÚUnicodeMiscTestc                 C   s   t | tjƒ d S ©N)r   r5   ÚUCDrR   r.   r.   r/   Útest_disallow_instantiationå   s   z+UnicodeMiscTest.test_disallow_instantiationc                 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)r9   )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   ó^   d}t dƒD ]}t|ƒ}| j |d¡}|dkr%|  || j |¡¡ |d7 }q|  |dk¡ d S ©Nr   é   r8   r
   é
   )r   r   r6   r=   r&   r<   Ú
assertTrue©r(   Úcountr*   ÚcZdecr.   r.   r/   Útest_decimal_numeric_consistentú   ó   €z/UnicodeMiscTest.test_decimal_numeric_consistentc                 C   r€   r   )r   r   r6   r;   r&   r<   r„   r…   r.   r.   r/   Útest_digit_numeric_consistent  r‰   z-UnicodeMiscTest.test_digit_numeric_consistentc                 C   s   |   | j d¡d¡ d S )NzGOTHIC LETTER FAIHUu   ð†)r&   r6   ÚlookuprR   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   à¼ºrX   rF   õ   áµ¹u   ê½Ú.)r5   r„   rB   ru   r    )r(   r5   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 )Nr   c                 S   s8   g | ]}d t |ƒ ¡ t |ƒ ¡  t |ƒ ¡  v r|‘qS )ú )r   r   r    r!   )Ú.0r‡   r.   r.   r/   Ú
<listcomp>&  s    &þÿz1UnicodeMiscTest.test_bug_5828.<locals>.<listcomp>r
   r   )r&   r   r   r   r   rR   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!   rR   r.   r.   r/   Útest_bug_4971-  s   zUnicodeMiscTest.test_bug_4971c                 C   sX   t dƒD ]%}t|ƒd  ¡ }|dv r|  t|ƒdd| ¡ q|  t|ƒdd| ¡ qd S )Nr‚   rF   )
rƒ   é   é   é   é…   é   é   é   i(   i)   é   z\u%.4x should be a linebreakr
   z \u%.4x should not be a linebreak)r   r   Ú
splitlinesr&   Úlen)r(   r*   Úlinesr.   r.   r/   Útest_linebreak_76433  s   ÿÿùz#UnicodeMiscTest.test_linebreak_7643N)r1   r2   r3   r   rz   r   rˆ   rŠ   rŒ   r   r“   r”   r    r.   r.   r.   r/   rw   ã   s    
rw   c                   @   sL   e Zd Zedd„ ƒZedd„ ƒZedƒdd„ ƒZdd	„ Zd
d„ Z	dd„ Z
dS )ÚNormalizationTestc                 C   s   |   ¡ }tj|v S rx   )Úreadliner5   Úunidata_version)ZtestfileZhdrr.   r.   r/   Úcheck_version?  s   
zNormalizationTest.check_versionc                 C   s(   dd„ |   d¡D ƒ} d dd„ | D ƒ¡S )Nc                 S   s   g | ]}t |d ƒ‘qS )é   )Úint©r‘   rN   r.   r.   r/   r’   F  ó    z,NormalizationTest.unistr.<locals>.<listcomp>rZ   r   c                 S   s   g | ]}t |ƒ‘qS r.   )r   r§   r.   r.   r/   r’   G  s    )Úsplitr#   )r,   r.   r.   r/   ÚunistrD  s   zNormalizationTest.unistrZnetworkc              	   C   s¨   d}dt j› d|› }z
t|d| jd}W n$ ty'   |  d|› d¡ Y n ttfy9   |  d|› ¡ Y nw | |  	|¡ W d   ƒ d S 1 sMw   Y  d S )	NzNormalizationTest.txtz"http://www.pythontest.net/unicode/ú/r   )ÚencodingÚcheckz"Permission error when downloading z into the test data directoryzCould not retrieve )
r5   r£   r   r¤   ÚPermissionErrorZskipTestÚOSErrorr   ZfailÚrun_normalization_tests)r(   ZTESTDATAFILEZTESTDATAURLÚtestdatar.   r.   r/   Útest_normalizationI  s   
ÿÿ"ÿz$NormalizationTest.test_normalizationc                    sò  d }i }dd„ }dd„ }dd„ }dd„ }|D ]$}d	|v r$|  d	¡d
 }| ¡ }|s+q| d¡r7|  ¡ d
 }q‡ fdd„|  d¡d d… D ƒ\}	}
}}}ˆ  |
||	ƒ  kob||
ƒ  kob||ƒkn  |¡ ˆ  |||ƒ  kov||ƒkn  |¡ ˆ  |||	ƒ  ko‘||
ƒ  ko‘||ƒkn  |¡ ˆ  |||ƒ  ko¥||ƒkn  |¡ ˆ  |||	ƒ  koÎ||
ƒ  koÎ||ƒ  koÎ||ƒ  koÎ||ƒkn  |¡ ˆ  |||	ƒ  ko÷||
ƒ  ko÷||ƒ  ko÷||ƒ  ko÷||ƒkn  |¡ ˆ  t d|
¡¡ ˆ  t d|¡¡ ˆ  t d|¡¡ ˆ  t d|¡¡ ˆ  t d|¡¡ ˆ  t d|¡¡ |dkr;d||	< qttjd ƒD ]3}t	|ƒ}||v rPqCˆ  |||ƒ  kop||ƒ  kop||ƒ  kop||ƒkn  |¡ qCd S )Nc                 S   ó   t  d| ¡S )Nrd   ©r5   rf   ©rA   r.   r.   r/   rd   _  ó   z6NormalizationTest.run_normalization_tests.<locals>.NFCc                 S   r³   )NÚNFKCr´   rµ   r.   r.   r/   r·   b  r¶   z7NormalizationTest.run_normalization_tests.<locals>.NFKCc                 S   r³   )NÚNFDr´   rµ   r.   r.   r/   r¸   e  r¶   z6NormalizationTest.run_normalization_tests.<locals>.NFDc                 S   r³   )NÚNFKDr´   rµ   r.   r.   r/   r¹   h  r¶   z7NormalizationTest.run_normalization_tests.<locals>.NFKDú#r   z@Partc                    s   g | ]}ˆ   |¡‘qS r.   )rª   r§   rR   r.   r/   r’   t  r¨   z=NormalizationTest.run_normalization_tests.<locals>.<listcomp>ú;r8   rd   r¸   r·   r¹   z@Part1r
   )
r©   ÚstripÚ
startswithr„   r5   Úis_normalizedr   r   r   r   )r(   r±   ÚpartZ
part1_datard   r·   r¸   r¹   ÚlineÚc1Úc2Zc3Zc4Zc5r‡   ÚXr.   rR   r/   r°   [  sj   

*6(6("ÿÿÿþ"ÿÿÿþ
€
Nüz)NormalizationTest.run_normalization_testsc                 C   s8   |   ttj¡ |   ttjdd¡ |  t dd¡d¡ d S )NÚunknownrM   r·   r   )rO   rP   r5   rf   rQ   r&   rR   r.   r.   r/   Útest_edge_cases–  s   z!NormalizationTest.test_edge_casesc                 C   s   t  dd¡ d S )Nrd   u   í•œê¸€r´   rR   r.   r.   r/   Útest_bug_834676›  s   z!NormalizationTest.test_bug_834676N)r1   r2   r3   Ústaticmethodr¤   rª   r   r²   r°   rÅ   rÆ   r.   r.   r.   r/   r¡   >  s    


;r¡   Ú__main__)r   Zhttp.clientr   r   r5   ZunittestZtest.supportr   r   r   r   r   ZTestCaser   r4   r7   rw   r¡   r1   Úmainr.   r.   r.   r/   Ú<module>   s     1 [bÿ