
    daf&                         d Z 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  G d dej                        Zed	k(  r ej                           yy# e$ r	 dxZ	xZ
ZY :w xY w)
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                       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y)UnicodeNamesTestc                 Z    t        j                  d|z        }| j                  ||       |S )Nz"\N{%s}")astliteral_evalassertEqual)selfnamecoderess       (/root/Python-3.12.4/Lib/test/test_ucn.pycheckletterzUnicodeNamesTest.checkletter   s.     {T12d#
    c           
          g d}d}| j                  dj                  t        ||      D cg c]  } | j                  |  c}      |       y c c}w )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. )r   joinzipr   )r   charsstringargss       r   test_generalzUnicodeNamesTest.test_general    sP    
8 .GGUF9KL%T%%t,LM	
Ls   Ac                    dj                  t        t        t        t	        d      t	        d                        D ]O  }d|j                         z  }t        j                  |      }| j                  t        j                  |      |       Q y )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   sk    GGCU3s8SX%>?@ 	;D*TZZ\9D%%d+D[--d3T:	;r   c                 "   | j                  dd       | j                  dd       | j                  dd       | j                  dd       | j                  d	d
       | j                  dd       | j                  dd       | j                  dd       | j                  dd       | j                  dd       | j                  dd       | j                  dd       | j                  dd       | j                  t        t        j                  d       y )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   s    r   test_hangul_syllablesz&UnicodeNamesTest.test_hangul_syllablesK   s    -x82H=/:/:/:18<0(;-x818<18<.90(;.9*k&6&6Ar   c                    | j                  dd       | j                  dd       | j                  dd       | j                  dd       | j                  d	d
       | j                  dd       | j                  dd       | j                  dd       | j                  dd       | j                  dd       | j                  dd       y )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   r2   s    r   test_cjk_unified_ideographsz,UnicodeNamesTest.test_cjk_unified_ideographs\   s    5x@5x@5x@5x@6E6E6E6E6E6E6Er   c                     t        d      D ]K  }t        |      }t        j                  |d       }|'| j	                  t        j
                  |      |       M y )Ni   )r(   r'   r+   r   r   r,   )r   r   r-   r   s       r   test_bmp_charactersz$UnicodeNamesTest.test_bmp_charactersi   sS    'N 	ADt9D##D$/D  !3!3D!94@		Ar   c                     | j                  dd       | j                  dd       | j                  dd       | j                  dd       y )	NzPILCROW SIGN   ¶zREPLACEMENT CHARACTERu   �z)HALFWIDTH KATAKANA SEMI-VOICED SOUND MARKu   ﾟzFULLWIDTH LATIN SMALL LETTER Au   ａr5   r2   s    r   test_misc_symbolsz"UnicodeNamesTest.test_misc_symbolsp   sE    20(;DhO98Dr   c                    g d}|D ]  \  }}| j                  |t        |             t        j                  t        |            }| j	                  ||       | j                  t        j                  |      t        j                  |             | j                  t              5  t        j                  j                  |       d d d         y # 1 sw Y   xY w)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   assertNotEqualr   r,   r0   KeyError	ucd_3_2_0)r   aliasesalias	codepointr   s        r   test_aliaseszUnicodeNamesTest.test_aliasesv   s    
 !( 	4E9UC	N3##C	N3De,[//6(//57""8, 4%%,,U34 4	44 4s   % CC	c                     t        dd      D ]c  }| j                  t              5 }t        j                  t        |             d d d        | j                  t        j                        d       e y # 1 sw Y   1xY w)Ni     no such name	r(   r0   r1   r+   r   r'   r   str	exceptionr   cpcms      r   test_aliases_names_in_pua_rangez0UnicodeNamesTest.test_aliases_names_in_pua_range   j    ) 	@B"":. *"  R)*S.?	@* *   A44A=	c                     t        dd      D ]c  }| j                  t              5 }t        j                  t        |             d d d        | j                  t        j                        d       e y # 1 sw Y   1xY w)NrE   i rF   rG   rJ   s      r   'test_named_sequences_names_in_pua_rangez8UnicodeNamesTest.test_named_sequences_names_in_pua_range   rN   rO   c                 t   g d}|D ]  \  }}| j                  t        j                  |      |       | j                  t              5  | j                  |d        d d d        | j                  t              5  t        j                  j                  |       d d d         y # 1 sw Y   IxY w# 1 sw Y   xY w)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,   r0   SyntaxErrorr   r>   r?   )r   	sequencesseqname
codepointss       r   test_named_sequences_samplez,UnicodeNamesTest.test_named_sequences_sample   s    
	 $- 	6GZ[//8*E"";/ 0  $/0""8, 6%%,,W56 6		60 06 6s   B"7 B."B+	.B7	c                    d }dt         j                  z  }	 t        j                  |d|      }| j                  j                         |D ]  }|j                         }|r|j                  d      r'|j                  d      \  }}dj                  d	 |j                         D              }| j                  t        j                  |      |       | j                  t               5  | j#                  |d        d d d        | j                  t$              5  t         j&                  j                  |       d d d         y # t        t
        f$ r | j                  d|z          Y 9w xY w# 1 sw Y   sxY w# 1 sw Y   6xY w)
Nc                 F    | j                         }t        j                  |v S )N)readliner+   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   F   K   | ]  }t        t        |d               yw)   N)r'   int).0rK   s     r   	<genexpr>z=UnicodeNamesTest.test_named_sequences_full.<locals>.<genexpr>   s      ObSR[!1 Os   !)r+   r[   r   open_urlresourceOSErrorr   skipTest
addCleanupclosestrip
startswithsplitr   r   r,   r0   rS   r   r>   r?   )r   r^   urltestdatalinerU   rV   s          r   test_named_sequences_fullz*UnicodeNamesTest.test_named_sequences_full   sX   	6 I**+	7//g6CEH 	' 
	6D::<D4??3/"&**S/GZ OJ<L<L<N OOJ[//8*E"";/ 0  $/0""8, 6%%,,W56 6
	6 ' 	7MM/#56	70 06 6s)   E (E- E9#E*)E*-E6	9F	c                 (   | j                  t        t        j                         | j                  t        t        j                  d       | j                  t        t        j                         | j                  t
        t        j                  d       y )Nxxunknown)r0   	TypeErrorr+   r   r,   r>   r2   s    r   test_errorszUnicodeNamesTest.test_errors   s^    )[%5%56)[%5%5t<)[%7%78(K$6$6	Br   c           	         | j                  t        t        ddd       | j                  t        t        t        dddz  z  d      dd       | j                  t        t        ddd       | j                  t        t        d	dd       y )
Ns   \N{blah}unicode-escapestrictz\N{%s}xi ascii   \N{SPACEs   \NSPACE)r0   UnicodeErrorrH   bytesr2   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   }| j                  t        |      t        d      t         dz   z          | j                  t        d|j
                  d       y )Nr~      xr      }s	   \N{SPACE}zunknown Unicode character namerz   )r   r   lenassertRaisesRegexr   decode)r   r   r|   s      r   test_issue16335z UnicodeNamesTest.test_issue16335   s[    
 48a<0047Q]!3x!|!DE|,HH&	
r   N)__name__
__module____qualname__r   r"   r.   r3   r6   r8   r;   rC   rM   rQ   rW   rs   rx   r   r   cpython_onlyunittest
skipUnlessr   r   
bigmemtestr   r    r   r   r	   r	      s    #
J;B"FAE44@@6 62C
, X>13NOWX\%G
 H P 
r   r	   __main__)__doc__r   r   r+   testr   http.clientr   	_testcapir   r   r   ImportErrorTestCaser	   r   mainr   r   r   <module>r      sv        %4;;W
x(( W
t zHMMO {  4*33G3nx4s   
A A! A!