a
    äzeý%  ã                   @   sŠ   d 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yb   d Z Z	Z
Y n0 G dd„ dejƒZed	kr†e ¡  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}")ÚevalÚassertEqual)ÚselfÚnameÚcodeÚres© r   ú#/usr/lib/python3.9/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>@   ó    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_lettersD   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_syllablesJ   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 ]2}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_charactersh   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_symbolso   s    z"UnicodeNamesTest.test_misc_symbolsc              	   C   s’   g d¢}|D ]€\}}|   |t|ƒ¡ t t|ƒ¡}|  ||¡ |  t |¡t |¡¡ |  t¡ tj	 |¡ W d   ƒ q1 s‚0    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_aliasesu   s    ÿzUnicodeNamesTest.test_aliasesc              	   C   s^   t ddƒD ]N}|  t¡}t t|ƒ¡ W d   ƒ n1 s<0    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   s    ,z0UnicodeNamesTest.test_aliases_names_in_pua_rangec              	   C   s^   t ddƒD ]N}|  t¡}t t|ƒ¡ W d   ƒ n1 s<0    Y  |  t|jƒd¡ q
d S )Nr9   iÿ r:   r;   r>   r   r   r   Ú'test_named_sequences_names_in_pua_range–   s    ,z8UnicodeNamesTest.test_named_sequences_names_in_pua_rangec              	   C   s˜   g d¢}|D ]†\}}|   t |¡|¡ |  t¡ |  |d ¡ W d   ƒ n1 sR0    Y  |  t¡ tj |¡ W d   ƒ q1 sˆ0    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   r4   r5   )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yJ   |  d| ¡ Y n0 |  |j¡ |D ]Â}| 	¡ }|r\| 
d¡rxq\| d¡\}}d	 d
d„ | ¡ D ƒ¡}|  t  |¡|¡ |  t¡ |  |d ¡ W d   ƒ n1 sÜ0    Y  |  t¡ t j |¡ W d   ƒ q\1 s0    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>¿   r   z=UnicodeNamesTest.test_named_sequences_full.<locals>.<genexpr>)r)   rI   r   Zopen_urlresourceÚOSErrorr   ZskipTestZ
addCleanupÚcloseÚstripÚ
startswithÚsplitr   r	   r*   r-   rC   r   r4   r5   )r
   rJ   ÚurlZtestdataÚlinerE   rF   r   r   r   Útest_named_sequences_full­   s,    ÿÿ
*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*   r4   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 )Nrb   ó   xrf   ó   }s	   \N{SPACE}zunknown Unicode character namer^   )r   r	   ÚlenZassertRaisesRegexrc   Údecode)r
   rh   r`   r   r   r   Útest_issue16335â   s    þz UnicodeNamesTest.test_issue16335N)Ú__name__Ú
__module__Ú__qualname__r   r!   r,   r/   r0   r1   r3   r8   rA   rB   rG   rY   r]   re   r   Zcpython_onlyÚunittestZ
skipUnlessr   r   Z
bigmemtestr   rn   r   r   r   r   r      s$   %r   Ú__main__)Ú__doc__rr   r)   Útestr   Zhttp.clientr   Z	_testcapir   r   r   ÚImportErrorZTestCaser   ro   Úmainr   r   r   r   Ú<module>   s   	 [