o
    HXîh&  ã                   @   s–   d Z ddlZddlZddlZddlmZ ddlmZ zddlm	Z	m
Z
mZ W n ey5   d Z	 Z
ZY nw G dd„ dejƒZed	krIe ¡  dS dS )
z¾ Test script for the Unicode implementation.

Written by Bill Tutt.
Modified for Python 2.0 by Fredrik Lundh (fredrik@pythonware.com)

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

é    N)Úsupport)ÚHTTPException)ÚINT_MAXÚPY_SSIZE_T_MAXÚUINT_MAXl   ÿÿÿÿ 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eje eek d¡ejed dd d!d"d#„ ƒƒƒZd$S )%ÚUnicodeNamesTestc                 C   s   t  d| ¡}|  ||¡ |S )Nz"\N{%s}")ÚastZliteral_evalÚassertEqual)ÚselfÚnameÚcodeÚres© r   ú7/opt/python-3.10.19/usr/lib/python3.10/test/test_ucn.pyÚcheckletter   s   zUnicodeNamesTest.checkletterc                    s6   g d¢}d}ˆ   d ‡ fdd„t||ƒD ƒ¡|¡ d S )N)zLATIN CAPITAL LETTER TúLATIN SMALL LETTER HúLATIN SMALL LETTER EÚSPACEzLATIN SMALL LETTER RzLATIN CAPITAL LETTER EzLATIN SMALL LETTER Dr   zLATIN SMALL LETTER fzLATIN CAPITAL LeTtEr ozLATIN SMaLl LETTER xr   zLATIN SMALL LETTER AúLATIN SMALL LETTER Tr   r   r   r   r   ZSpAcEzLATIN SMALL LETTER Sr   úLATIN small LETTER er   zLATIN SMALL LETTER Pz	FULL STOPzThe rEd fOx ate the sheep.Ú c                    s   g | ]}ˆ j |Ž ‘qS r   ©r   )Ú.0Úargs©r
   r   r   Ú
<listcomp>A   s    z1UnicodeNamesTest.test_general.<locals>.<listcomp>)r	   ÚjoinÚzip)r
   ÚcharsÚstringr   r   r   Útest_general    s   þzUnicodeNamesTest.test_generalc                 C   sP   d  ttttdƒtdƒƒƒ¡D ]}d| ¡  }t |¡}|  t 	|¡|¡ qd S )Nr   ÚaÚzzLATIN SMALL LETTER %s)
r   ÚmapÚchrÚrangeÚordÚupperÚunicodedataÚlookupr	   r   )r
   Úcharr   r   r   r   r   Útest_ascii_lettersE   s
   "
ýz#UnicodeNamesTest.test_ascii_lettersc                 C   s°   |   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¡ |  ttjd¡ d S )NzHANGUL SYLLABLE GAu   ê°€zHANGUL SYLLABLE GGWEOSSu   ê¿¨zHANGUL SYLLABLE DOLSu   ëzHANGUL SYLLABLE RYANu   ëž¸zHANGUL SYLLABLE MWIKu   ë® zHANGUL SYLLABLE BBWAEMu   ë¾ˆzHANGUL SYLLABLE SSEOLu   ì°zHANGUL SYLLABLE YIu   ì˜zHANGUL SYLLABLE JJYOSSu   ì­€zHANGUL SYLLABLE KYEOLSu   ì¼¨zHANGUL SYLLABLE PANu   íŒzHANGUL SYLLABLE HWEOKu   í›¸zHANGUL SYLLABLE HIHu   íž£u   íž¤)r   ÚassertRaisesÚ
ValueErrorr(   r   r   r   r   r   Útest_hangul_syllablesK   s   z&UnicodeNamesTest.test_hangul_syllablesc                 C   sˆ   |   dd¡ |   dd¡ |   dd¡ |   dd¡ |   d	d
¡ |   dd¡ |   dd¡ |   dd¡ |   dd¡ |   dd¡ |   dd¡ d S )NzCJK UNIFIED IDEOGRAPH-3400u   ã€zCJK UNIFIED IDEOGRAPH-4DB5u   ä¶µzCJK UNIFIED IDEOGRAPH-4E00u   ä¸€zCJK UNIFIED IDEOGRAPH-9FCBu   é¿‹zCJK UNIFIED IDEOGRAPH-20000u   ð €€zCJK UNIFIED IDEOGRAPH-2A6D6u   ðª›–zCJK UNIFIED IDEOGRAPH-2A700u   ðªœ€zCJK UNIFIED IDEOGRAPH-2B734u   ð«œ´zCJK UNIFIED IDEOGRAPH-2B740u   ð«€zCJK UNIFIED IDEOGRAPH-2B81Du   ð« zCJK UNIFIED IDEOGRAPH-3134Au   ð±Šr   r   r   r   r   Útest_cjk_unified_ideographs\   s   z,UnicodeNamesTest.test_cjk_unified_ideographsc                 C   s@   t dƒD ]}t|ƒ}t |d ¡}|d ur|  t |¡|¡ qd S )Ni   )r%   r$   r(   r   r	   r)   )r
   r   r*   r   r   r   r   Útest_bmp_charactersi   s   €üz$UnicodeNamesTest.test_bmp_charactersc                 C   s4   |   dd¡ |   dd¡ |   dd¡ |   dd¡ d S )	NzPILCROW SIGNõ   Â¶zREPLACEMENT CHARACTERu   ï¿½z)HALFWIDTH KATAKANA SEMI-VOICED SOUND MARKu   ï¾ŸzFULLWIDTH LATIN SMALL LETTER Au   ï½r   r   r   r   r   Útest_misc_symbolsp   s   z"UnicodeNamesTest.test_misc_symbolsc              	   C   s’   g d¢}|D ]@\}}|   |t|ƒ¡ t t|ƒ¡}|  ||¡ |  t |¡t |¡¡ |  t¡ tj	 |¡ W d   ƒ n1 sAw   Y  qd S )N))zLATIN CAPITAL LETTER GHAi¢  )zLATIN SMALL LETTER GHAi£  )zKANNADA LETTER LLLAiÞ  )zLAO LETTER FO FONi  )zLAO LETTER FO FAYiŸ  )zLAO LETTER ROi£  )zLAO LETTER LOi¥  )z#TIBETAN MARK BKA- SHOG GI MGO RGYANiÐ  )zYI SYLLABLE ITERATION MARKi   )z=PRESENTATION FORM FOR VERTICAL RIGHT WHITE LENTICULAR BRACKETiþ  )z4BYZANTINE MUSICAL SYMBOL FTHORA SKLIRON CHROMA VASISiÅÐ )
r   r$   r(   r   ZassertNotEqualr	   r)   r,   ÚKeyErrorÚ	ucd_3_2_0)r
   ÚaliasesÚaliasZ	codepointr   r   r   r   Útest_aliasesv   s   ÿÿ€úzUnicodeNamesTest.test_aliasesc              	   C   ó^   t ddƒD ]'}|  t¡}t t|ƒ¡ W d   ƒ n1 sw   Y  |  t|jƒd¡ qd S )Ni   é  úno such name©	r%   r,   r-   r(   r   r$   r	   ÚstrÚ	exception©r
   ÚcpÚcmr   r   r   Útest_aliases_names_in_pua_range   ó   ÿýz0UnicodeNamesTest.test_aliases_names_in_pua_rangec              	   C   r8   )Nr9   iÿ r:   r;   r>   r   r   r   Ú'test_named_sequences_names_in_pua_range—   rB   z8UnicodeNamesTest.test_named_sequences_names_in_pua_rangec              	   C   s˜   g d¢}|D ]C\}}|   t |¡|¡ |  t¡ |  |d ¡ W d   ƒ n1 s)w   Y  |  t¡ tj |¡ W d   ƒ n1 sDw   Y  qd S )N))zLATIN SMALL LETTER R WITH TILDEu   rÌƒ)zTAMIL SYLLABLE SAIu   à®¸à¯ˆ)zTAMIL SYLLABLE MOOu   à®®à¯‹)zTAMIL SYLLABLE NNOOu   à®£à¯‹)zTAMIL CONSONANT KSSu   à®•à¯à®·à¯)r	   r(   r)   r,   ÚSyntaxErrorr   r3   r4   )r
   Ú	sequencesÚseqnameÚ
codepointsr   r   r   Útest_named_sequences_samplež   s   ÿÿ€üz,UnicodeNamesTest.test_named_sequences_samplec              	   C   s"  dd„ }dt j }z
tj|d|d}W n ttfy%   |  d| ¡ Y nw |  |j¡ |D ]`}| 	¡ }|r;| 
d¡r<q.| d¡\}}d	 d
d„ | ¡ D ƒ¡}|  t  |¡|¡ |  t¡ |  |d ¡ W d   ƒ n1 snw   Y  |  t¡ t j |¡ W d   ƒ n1 s‰w   Y  q.d S )Nc                 S   s   |   ¡ }tj|v S )N)Úreadliner(   Úunidata_version)ZtestfileZhdrr   r   r   Úcheck_version°   s   
zAUnicodeNamesTest.test_named_sequences_full.<locals>.check_versionz7http://www.pythontest.net/unicode/%s/NamedSequences.txtzutf-8)ÚencodingÚcheckzCould not retrieve ú#ú;r   c                 s   s    | ]
}t t|d ƒƒV  qdS )é   N)r$   Úint)r   r?   r   r   r   Ú	<genexpr>À   s   € z=UnicodeNamesTest.test_named_sequences_full.<locals>.<genexpr>)r(   rJ   r   Zopen_urlresourceÚOSErrorr   ZskipTestZ
addCleanupÚcloseÚstripÚ
startswithÚsplitr   r	   r)   r,   rD   r   r3   r4   )r
   rK   ÚurlZtestdataÚlinerF   rG   r   r   r   Útest_named_sequences_full®   s6   ÿ
ÿÿÿÿ€÷z*UnicodeNamesTest.test_named_sequences_fullc                 C   s@   |   ttj¡ |   ttjd¡ |   ttj¡ |   ttjd¡ d S )NÚxxÚunknown)r,   Ú	TypeErrorr(   r   r)   r3   r   r   r   r   Útest_errorsÇ   s   zUnicodeNamesTest.test_errorsc                 C   sZ   |   ttddd¡ |   tttddd  dƒdd¡ |   ttddd¡ |   ttd	dd¡ d S )
Ns   \N{blah}úunicode-escapeÚstrictz\N{%s}Úxi † Úasciió   \N{SPACEs   \NSPACE)r,   ÚUnicodeErrorr<   Úbytesr   r   r   r   Útest_strict_error_handlingÍ   s    þþþþz+UnicodeNamesTest.test_strict_error_handlingzneeds UINT_MAX < SIZE_MAXé   é   F)ÚsizeZmemuseÚdry_runc                 C   sF   ddt d   d }|  t|ƒtdƒt d  ¡ |  td|jd¡ d S )Nrc   ó   xrg   ó   }s	   \N{SPACE}zunknown Unicode character namer_   )r   r	   ÚlenZassertRaisesRegexrd   Údecode)r
   ri   ra   r   r   r   Útest_issue16335ã   s   þz UnicodeNamesTest.test_issue16335N)Ú__name__Ú
__module__Ú__qualname__r   r    r+   r.   r/   r0   r2   r7   rA   rC   rH   rZ   r^   rf   r   Zcpython_onlyÚunittestZ
skipUnlessr   r   Z
bigmemtestr   ro   r   r   r   r   r      s&    %r   Ú__main__)Ú__doc__r   rs   r(   Útestr   Zhttp.clientr   Z	_testcapir   r   r   ÚImportErrorZTestCaser   rp   Úmainr   r   r   r   Ú<module>   s     	ÿ [ÿ