
    <e&                         	 d dl Z d dlZd dlZd dlmZ d dlmZ 	 d dlmZm	Z	m
Z
 n# e$ r	 dxZxZ	Z
Y nw xY w G d dej                  Zedk    r ej                     dS dS )	    N)support)HTTPException)INT_MAXPY_SSIZE_T_MAXUINT_MAXl    c                       e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
d	 Zd
 Zd Zd Zd Zd Zej         ej        eek     d           ej        edz   dd          d                                     ZdS )UnicodeNamesTestc                 `    t          j        d|z            }|                     ||           |S )Nz"\N{%s}")astliteral_evalassertEqual)selfnamecoderess       $/usr/lib/python3.11/test/test_ucn.pycheckletterzUnicodeNamesTest.checkletter   s4     {T122d###
    c           	           g d}d}                      d                     f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   SpAcEzLATIN SMALL LETTER Sr   LATIN small LETTER er   zLATIN SMALL LETTER Pz	FULL STOPzThe rEd fOx ate the sheep. c                 $    g | ]} j         | S  r   ).0argsr   s     r   
<listcomp>z1UnicodeNamesTest.test_general.<locals>.<listcomp>A   s$    LLL%T%t,LLLr   )r   joinzip)r   charsstrings   `  r   test_generalzUnicodeNamesTest.test_general    sn    
 
 
8 .GGLLLLUF9K9KLLLMM	
 	
 	
 	
 	
r   c                 R   d                     t          t          t          t	          d          t	          d                                        D ]U}d|                                z  }t          j        |          }|                     t          j	        |          |           Vd S )Nr   azzLATIN SMALL LETTER %s)
r#   mapchrrangeordupperunicodedatalookupr   r   )r   charr   r   s       r   test_ascii_lettersz#UnicodeNamesTest.test_ascii_lettersE   s    GGCU3s88SXX%>%>??@@ 	; 	;D*TZZ\\9D%d++D[-d33T::::	; 	;r   c                    |                      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
ValueErrorr0   r   r   s    r   test_hangul_syllablesz&UnicodeNamesTest.test_hangul_syllablesK   sN   -x8882H===/:::/:::/:::18<<<0(;;;-x88818<<<18<<<.9990(;;;.999*k&6AAAAAr   c                    |                      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   r7   s    r   test_cjk_unified_ideographsz,UnicodeNamesTest.test_cjk_unified_ideographs\   s   5x@@@5x@@@5x@@@5x@@@6EEE6EEE6EEE6EEE6EEE6EEE6EEEEEr   c                     t          d          D ]P}t          |          }t          j        |d           }|(|                     t          j        |          |           Qd S )Ni   )r-   r,   r0   r   r   r1   )r   r   r2   r   s       r   test_bmp_charactersz$UnicodeNamesTest.test_bmp_charactersi   sj    'NN 	A 	ADt99D#D$//D  !3D!9!94@@@		A 	Ar   c                     |                      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   r7   s    r   test_misc_symbolsz"UnicodeNamesTest.test_misc_symbolsp   sc    2220(;;;DhOOO98DDDDDr   c                    g d}|D ]\  }}|                      |t          |                     t          j        t          |                    }|                     ||           |                     t          j        |          t          j        |                     |                     t                    5  t          j	                            |           d d d            n# 1 swxY w Y   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,   r0   r   assertNotEqualr   r1   r5   KeyError	ucd_3_2_0)r   aliasesalias	codepointr   s        r   test_aliaseszUnicodeNamesTest.test_aliasesv   s/   
 
 
 !( 	4 	4E9UC	NN333#C	NN33De,,,[/66(/557 7 7""8,, 4 4%,,U3334 4 4 4 4 4 4 4 4 4 4 4 4 4 4	4 	4s   : C&&C*	-C*	c                 "   t          dd          D ]}}|                     t                    5 }t          j        t          |                     d d d            n# 1 swxY w Y   |                     t          |j                  d           ~d S )Ni     no such name	r-   r5   r6   r0   r   r,   r   str	exceptionr   cpcms      r   test_aliases_names_in_pua_rangez0UnicodeNamesTest.test_aliases_names_in_pua_range       )) 	@ 	@B"":.. *" R)))* * * * * * * * * * * * * * *S..????	@ 	@   "AA	"A	c                 "   t          dd          D ]}}|                     t                    5 }t          j        t          |                     d d d            n# 1 swxY w Y   |                     t          |j                  d           ~d S )NrI   i rJ   rK   rN   s      r   'test_named_sequences_names_in_pua_rangez8UnicodeNamesTest.test_named_sequences_names_in_pua_range   rR   rS   c                    g d}|D ]\  }}|                      t          j        |          |           |                     t                    5  |                     |d            d d d            n# 1 swxY w Y   |                     t                    5  t          j                            |           d d d            n# 1 swxY w Y   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   r0   r1   r5   SyntaxErrorr   rB   rC   )r   	sequencesseqname
codepointss       r   test_named_sequences_samplez,UnicodeNamesTest.test_named_sequences_sample   sT   
 
 
	 $- 	6 	6GZ[/88*EEE"";// 0 0  $///0 0 0 0 0 0 0 0 0 0 0 0 0 0 0""8,, 6 6%,,W5556 6 6 6 6 6 6 6 6 6 6 6 6 6 6		6 	6s$   A11A5	8A5	 CC		C	c                 h   d }dt           j        z  }	 t          j        |d|          }n/# t          t
          f$ r |                     d|z              Y nw xY w|                     |j                   |D ]9}|	                                }|r|
                    d          r/|                    d          \  }}d                    d	 |                                D                       }|                     t          j        |          |           |                     t                     5  |                     |d            d d d            n# 1 swxY w Y   |                     t$                    5  t           j                            |           d d d            n# 1 swxY w Y   ;d S )
Nc                 F    |                                  }t          j        |v S )N)readliner0   unidata_version)testfilehdrs     r   check_versionzAUnicodeNamesTest.test_named_sequences_full.<locals>.check_version   s!    ##%%C.#55r   z7http://www.pythontest.net/unicode/%s/NamedSequences.txtzutf-8)encodingcheckzCould not retrieve #;r   c              3   P   K   | ]!}t          t          |d                     V  "dS )   N)r,   int)r    rO   s     r   	<genexpr>z=UnicodeNamesTest.test_named_sequences_full.<locals>.<genexpr>   s2       O ObSR[[!1!1 O O O O O Or   )r0   r_   r   open_urlresourceOSErrorr   skipTest
addCleanupclosestrip
startswithsplitr#   r   r1   r5   rW   r   rB   rC   )r   rb   urltestdatalinerY   rZ   s          r   test_named_sequences_fullz*UnicodeNamesTest.test_named_sequences_full   sC   	6 	6 	6 I*+	7/g6CE E EHH' 	7 	7 	7MM/#566666	7''' 
	6 
	6D::<<D 4??3// "&**S//GZ O OJ<L<L<N<N O O OOOJ[/88*EEE"";// 0 0  $///0 0 0 0 0 0 0 0 0 0 0 0 0 0 0""8,, 6 6%,,W5556 6 6 6 6 6 6 6 6 6 6 6 6 6 6
	6 
	6s3   , )AA1EE	E	9 F%%F)	,F)	c                 2   |                      t          t          j                   |                      t          t          j        d           |                      t          t          j                   |                      t
          t          j        d           d S )Nxxunknown)r5   	TypeErrorr0   r   r1   rB   r7   s    r   test_errorszUnicodeNamesTest.test_errors   sp    )[%5666)[%5t<<<)[%7888(K$6	BBBBBr   c           	      F   |                      t          t          ddd           |                      t          t          t          dddz  z  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)r5   UnicodeErrorrL   bytesr7   s    r   test_strict_error_handlingz+UnicodeNamesTest.test_strict_error_handling   s    /	
 	
 	

 	yC&L17;;=Mx	
 	
 	

 	/	
 	
 	

 	.	
 	
 	
 	
 	
r   zneeds UINT_MAX < SIZE_MAX      F)sizememusedry_runc                     ddt           dz   z  z   dz   }|                     t          |          t          d          t           dz   z              |                     t          d|j        d           d S )Nr      xr      }s	   \N{SPACE}zunknown Unicode character namer}   )r   r   lenassertRaisesRegexr   decode)r   r   r   s      r   test_issue16335z UnicodeNamesTest.test_issue16335   sx    
 48a<0047Q]!3!3x!|!DEEE|,H&	
 	
 	
 	
 	
r   N)__name__
__module____qualname__r   r'   r3   r8   r:   r<   r?   rG   rQ   rU   r[   rv   r{   r   r   cpython_onlyunittest
skipUnlessr   r   
bigmemtestr   r   r   r   r   r	   r	      s`         #
 #
 #
J; ; ;B B B"F F FA A AE E E4 4 44@ @ @@ @ @6 6 6 6 6 62C C C
 
 
, X>13NOOWX\%GGG
 
 HG PO 
 
 
r   r	   __main__)r   r   r0   testr   http.clientr   	_testcapir   r   r   ImportErrorTestCaser	   r   mainr   r   r   <module>r      s    


            % % % % % %4;;;;;;;;;;; 4 4 4*33G3nxxx4W
 W
 W
 W
 W
x( W
 W
 W
t zHMOOOOO s   
& 44