o
    HXîhÓ@  ã                   @   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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r\e ¡  dS dS )é    N)ÚHTTPException)Úopen_urlresourceÚrequires_resourceÚscript_helperÚcpython_onlyÚcheck_disallow_instantiationÚResourceDeniedc                   @   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/   ú?/opt/python-3.10.19/usr/lib/python3.10/test/test_unicodedata.pyÚtest_method_checksum   s@   












à#z'UnicodeMethodsTest.test_method_checksumN)Ú__name__Ú
__module__Ú__qualname__r(   r   r1   r/   r/   r/   r0   r	      s    r	   c                   @   s   e Zd ZeZdS )ÚUnicodeDatabaseTestN)r2   r3   r4   ÚunicodedataÚdbr/   r/   r/   r0   r5   D   s    r5   c                   @   s˜   e Zd ZdZedƒd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   Úformatr7   ÚdigitÚnumericÚdecimalÚcategoryÚbidirectionalÚdecompositionÚstrÚmirroredÚ	combiningr#   r$   r%   r&   r'   r(   )r)   r-   r*   r+   r,   r.   r/   r/   r0   Útest_function_checksumM   s    


÷z+UnicodeFunctionsTest.test_function_checksumc                 C   sF   t tjd ƒD ]}t|ƒ}| j |d ¡ }r |  | j |¡|¡ qd S )Nr   )r   r   r   r   r7   Únamer'   Úlookup)r)   r+   r,   Zlooked_namer/   r/   r0   Útest_name_inverse_lookupc   s   €ýz-UnicodeFunctionsTest.test_name_inverse_lookupc                 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'   r7   r<   ÚassertRaisesÚ	TypeErrorÚ
ValueError©r)   r/   r/   r0   Ú
test_digitj   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 )NrJ   rK   rL   rM   g      À?rN   g      "@u   ê˜§g      @rO   õ   ð„ªi(#  rQ   rR   )r'   r7   r=   rS   rT   rU   rV   r/   r/   r0   Útest_numericv   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 rI   )r'   r7   r>   rS   rT   rU   rV   r/   r/   r0   Ú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LlrJ   ZLurO   ZLorX   ZNorQ   )r'   r7   r?   rS   rT   rV   r/   r/   r0   Ú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 )	Nr[   r   ú ZWSrJ   ÚLrO   rQ   )r'   r7   r@   rS   rT   rV   r/   r/   r0   Útest_bidirectional™   ó   z'UnicodeFunctionsTest.test_bidirectionalc                 C   sN   |   | j d¡d¡ |   | j d¡d¡ |  t| jj¡ |  t| jjd¡ d S )Nr[   r   õ   Â¼z<fraction> 0031 2044 0034rQ   )r'   r7   rA   rS   rT   rV   r/   r/   r0   Ú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 )Nr[   r   r\   u   âˆr   rO   rQ   )r'   r7   rC   rS   rT   rV   r/   r/   r0   Útest_mirrored©   ra   z"UnicodeFunctionsTest.test_mirroredc                 C   rd   )Nr[   r   r\   u   âƒ¡éæ   rO   rQ   )r'   r7   rD   rS   rT   rV   r/   r/   r0   Útest_combining²   ra   z#UnicodeFunctionsTest.test_combiningc                 C   s(   d}|D ]}|   | j d|¡|¡ qd S )N)u   à­‡Ì€à¬¾u   á„€Ì€á…¡u   LiÌt-sá¹³Ìu.   à¤®à¤¾à¤°à¥à¤• à¤œà¤¼à¥à¤•à¥‡à¤°à¤¬à¤°à¥à¤—u'   à¤•à¤¿à¤°à¥à¤—à¤¿à¤œà¤¼à¤¸à¥à¤¤à¤¾à¤¨ÚNFC©r'   r7   Ú	normalize)r)   ZcomposedÚtextr/   r/   r0   Ú	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Ì¸Ã‡rh   ri   )r)   r\   Úbr/   r/   r0   Ú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   ê¸°á‡ƒrh   ri   )r)   Zu1176_str_aZu1176_str_bZu11a7_str_aZu11a7_str_bZu11c3_str_aZu11c3_str_br/   r/   r0   Ú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úÚNr^   ZNau   ì¢”ÚWu   ï½¦ÚHu   ï¼ŸÚFu   â€rJ   rO   )r7   Úeast_asian_widthrS   rT   Ú	bytearrayr'   )r)   Zeawr/   r/   r0   Útest_east_asian_widthÙ   s   z*UnicodeFunctionsTest.test_east_asian_widthc                 C   s.   |   | jj d¡d¡ |   | j d¡d¡ d S )Nu   âŒšrr   rs   )r'   r7   Ú	ucd_3_2_0rv   rV   r/   r/   r0   Ú!test_east_asian_width_9_0_changesç   s   z6UnicodeFunctionsTest.test_east_asian_width_9_0_changesN)r2   r3   r4   r(   r   rE   rH   rW   rY   rZ   r]   r`   rc   re   rg   rl   rn   ro   rx   rz   r/   r/   r/   r0   r8   G   s&    


			r8   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   r6   ÚUCDrV   r/   r/   r0   Ú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)r:   )r   Zassert_python_failureZassertInÚerrÚdecode)r)   Úcoder.   Úerrorr/   r/   r0   Ú#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   é   r9   r   é
   )r   r   r7   r>   r'   r=   Ú
assertTrue©r)   Úcountr+   ÚcZdecr/   r/   r0   Útest_decimal_numeric_consistent  ó   €z/UnicodeMiscTest.test_decimal_numeric_consistentc                 C   r„   r…   )r   r   r7   r<   r'   r=   rˆ   r‰   r/   r/   r0   Útest_digit_numeric_consistent  r   z-UnicodeMiscTest.test_digit_numeric_consistentc                 C   s   |   | j d¡d¡ d S )NzGOTHIC LETTER FAIHUu   ð†)r'   r7   rG   rV   r/   r/   r0   Ú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   à¼ºr\   rJ   õ   áµ¹u   ê½Ú.)r6   rˆ   rC   ry   r!   )r)   r6   r/   r/   r0   Ú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/   r0   Ú
<listcomp>.  s
    (ÿz1UnicodeMiscTest.test_bug_5828.<locals>.<listcomp>r   r   )r'   r    r   r   r   rV   r/   r/   r0   Útest_bug_5828*  s   ÿûzUnicodeMiscTest.test_bug_5828c                 C   s4   |   d ¡ d¡ |   d ¡ d¡ |   d ¡ d¡ d S )Nu   Ç„u   Ç…u   Ç†)r'   r"   rV   r/   r/   r0   Útest_bug_49715  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†   rJ   )
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/   r0   Útest_linebreak_7643;  s   ÿÿùz#UnicodeMiscTest.test_linebreak_7643N)r2   r3   r4   r   r~   rƒ   rŒ   rŽ   r   r’   r–   r—   r£   r/   r/   r/   r0   r{   ë   s    
r{   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 r|   )Úreadliner6   Úunidata_version)ZtestfileZhdrr/   r/   r0   Úcheck_versionG  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”   rR   r/   r/   r0   r•   N  ó    z,NormalizationTest.unistr.<locals>.<listcomp>r^   r   c                 S   s   g | ]}t |ƒ‘qS r/   )r   rª   r/   r/   r0   r•   O  s    )Úsplitr$   )r-   r/   r/   r0   ÚunistrL  s   zNormalizationTest.unistrÚnetworkc              
   C   sÀ   d}dt j› d|› }z
t|d| jd}W n0 ty'   |  d|› d¡ Y n ttfyE } z|  d|› d	|› ¡ W Y d }~nd }~ww | |  |¡ W d   ƒ d S 1 sYw   Y  d S )
NzNormalizationTest.txtz"http://www.pythontest.net/unicode/ú/r   )ÚencodingÚcheckz"Permission error when downloading z into the test data directoryzFailed to download z: )	r6   r¦   r   r§   ÚPermissionErrorZskipTestÚOSErrorr   Úrun_normalization_tests)r)   ZTESTDATAFILEZTESTDATAURLÚtestdataÚexcr/   r/   r0   Útest_normalizationQ  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 )Nrh   ©r6   rj   ©rB   r/   r/   r0   rh   g  ó   z6NormalizationTest.run_normalization_tests.<locals>.NFCc                 S   r¸   )NÚNFKCr¹   rº   r/   r/   r0   r¼   j  r»   z7NormalizationTest.run_normalization_tests.<locals>.NFKCc                 S   r¸   )NÚNFDr¹   rº   r/   r/   r0   r½   m  r»   z6NormalizationTest.run_normalization_tests.<locals>.NFDc                 S   r¸   )NÚNFKDr¹   rº   r/   r/   r0   r¾   p  r»   z7NormalizationTest.run_normalization_tests.<locals>.NFKDú#r   z@Partc                    s   g | ]}ˆ   |¡‘qS r/   )r­   rª   rV   r/   r0   r•   |  r«   z=NormalizationTest.run_normalization_tests.<locals>.<listcomp>ú;r9   rh   r½   r¼   r¾   z@Part1r   )
r¬   ÚstripÚ
startswithrˆ   r6   Úis_normalizedr   r   r   r   )r)   rµ   ÚpartZ
part1_datarh   r¼   r½   r¾   ÚlineÚc1Úc2Zc3Zc4Zc5r‹   ÚXr/   rV   r0   r´   c  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ÚunknownrQ   r¼   r   )rS   rT   r6   rj   rU   r'   rV   r/   r/   r0   Útest_edge_casesž  s   z!NormalizationTest.test_edge_casesc                 C   s   t  dd¡ d S )Nrh   u   í•œê¸€r¹   rV   r/   r/   r0   Útest_bug_834676£  s   z!NormalizationTest.test_bug_834676N)r2   r3   r4   Ústaticmethodr§   r­   r   r·   r´   rÊ   rË   r/   r/   r/   r0   r¤   F  s    


;r¤   Ú__main__)r   Zhttp.clientr   r   r6   ZunittestZtest.supportr   r   r   r   r   r   ZTestCaser	   r5   r8   r{   r¤   r2   Úmainr/   r/   r/   r0   Ú<module>   s      1 %[bÿ