
    daf8                         d dl Z d dl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
  G d d      Z G d dej                        Zd	 Zy)
    N)HTTPException)support)BytesIOc                       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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y)TestBase N   r   u   c                    | j                   $t        j                  | j                        | _         | j                   j                  | _        | j                   j
                  | _        | j                   j                  | _        | j                   j                  | _	        | j                   j                  | _
        | j                   j                  | _        y N)codeccodecslookupencodingencodedecodestreamreaderreaderstreamwriterwriterincrementalencoderincrementaldecoderselfs    6/root/Python-3.12.4/Lib/test/multibytecodec_support.pysetUpzTestBase.setUp   s    ::t}}5DJjj''jj''jj--jj--"&**"?"?"&**"?"?    c                    g }| j                   D ]M  }|j                  d      }|j                         }|dk(  sJ |D cg c]  }|dz   	 }}|j                  |       O t	        | D ]k  \  }}| j                  |      d   }| j                  ||j                  d             | j                  sH| j                  || j                  |      d          m y c c}w )N   
r   r   utf-8)	tstringsplitpopappendzipr   assertEqualroundtriptestr   )	r   tstring_linesblineslastlinenativeutf8us	            r   test_chunkcodingzTestBase.test_chunkcoding$   s     	(AGGENE99;D3;;.34dTE\4E4  '	(  / 	<LFDF#A&AQG 45!!  Q):;		< 5s   Cc                 D   | j                   D ]  \  }}}t        |t              r| j                  }n| j                  }|r |||      d   }|| j                  u rV| j                  t        |      t        u t        |             | j                  |||d| j                  d|d|d|	       | j                  t        |      t        u t        |             | j                  |||d| j                  d|d|d|	       | j                  t        |||        y )Nr   .decode(, )= != .encode()
codectests
isinstancebytesr   r   
assertTruetypestrr%   r   assertRaisesUnicodeErrorr   sourceschemeexpectedfuncresults         r   test_errorhandlezTestBase.test_errorhandle2   s    (, 	F$FFH&%({{{{ff-a04;;&OODLC$7fF$$VX(.vv(0&23
 OODLE$94<H$$VX(.vv(0&23
 !!,ffE)	Fr   c                     | j                   r| j                  d       d}| j                  | j                  |d      d   d       y )N$encoding contains full ISO 10646 mapu   ଓଣୠ nd eggsxmlcharrefreplacer   s   &#2835;&#2851;&#2912; nd eggs)has_iso10646skipTestr%   r   )r   ss     r   test_xmlcharrefreplacezTestBase.test_xmlcharrefreplaceI   sB    MM@A(KK./2,	
r   c                    | j                   r| j                  d       ddlm fd}t	        j
                  d|       | j                  r| j                  \  }}nd}d}| j                  | j                  |d      d   |       y )NrF   r   )codepoint2namec                 d   t        | t              st        d| z        g }| j                  | j                  | j
                   D ]M  }t        |      v r!|j                  dt        |         z         1|j                  dt        |      z         O dj                  |      | j
                  fS )Nzdon't know how to handle %rz&%s;z&#%d;r   )	r7   UnicodeEncodeError	TypeErrorobjectstartendordr#   join)exclcrM   s      r   xmlcharnamereplacez>TestBase.test_customreplace_encode.<locals>.xmlcharnamereplaceY   s    c#56 = CDDAZZ		#''2 /q6^+HHVnSV&<<=HHWs1v-.	/
 GGAJ((r   ztest.xmlcharnamereplaceu   «ℜ» = 〈ሴ〉s*   &laquo;&real;&raquo; = &lang;&#4660;&rang;)	rH   rI   html.entitiesrM   r   register_errorxmlcharnametestr%   r   )r   rY   sinsoutrM   s       @r   test_customreplace_encodez"TestBase.test_customreplace_encodeS   s    MM@A0		) 	79KL,,IC7C@DS$=??@BCG	Ir   c                     d }t        j                  d|       | j                  d| j                  z   dz   d      d   }| j	                  |d       y )Nc                     d| j                   fS )Ns   1234rS   rV   s    r   	myreplacez7TestBase.test_callback_returns_bytes.<locals>.myreplaceo   s    SWW%%r   test.cjktestabcdefr   s
   abc1234def)r   r[   r   unmappedunicoder%   )r   rd   encs      r   test_callback_returns_bytesz$TestBase.test_callback_returns_bytesn   sM    	&ni8kk%$"6"66>OPQRm,r   c                     fd}t        j                  d|       g dg d t               fD ].  | j                  t        | j
                  | j                  d       0 y )Nc                      | j                   fS r   rb   )rV   rets    r   rd   z7TestBase.test_callback_wrong_objects.<locals>.myreplacev   s    >!r   re   )r	         )r   r[   rQ   r<   rP   r   rh   )r   rd   rm   s     @r   test_callback_wrong_objectsz$TestBase.test_callback_wrong_objectsu   sS    	"ni8r42 	.Cid6J6J,.	.r   c                 $   d }t        j                  d|       | j                  | j                  d| j                  z   dz   d      d       d }t        j                  d|       | j                  t        | j                  | j                  d       y )Nc                 0    dt        | j                        fS )Nx)intrS   rc   s    r   rd   z4TestBase.test_callback_long_index.<locals>.myreplace   s    SWW&&r   re   abcdefgh)s	   abcdxefgh	   c                 ,    dt         j                  dz   fS )Nrs   r	   )sysmaxsizerc   s    r   rd   z4TestBase.test_callback_long_index.<locals>.myreplace   s    q))r   )r   r[   r%   r   rh   r<   
IndexErrorr   rd   s     r   test_callback_long_indexz!TestBase.test_callback_long_index~   s    	'ni8Vd.B.B%BV%K%356G	I	*ni8*dkk43G3G(	*r   c                     d }t        j                  d|       | j                  t        | j                  | j
                  d       y )Nc                      y)N)rs   N rc   s    r   rd   z4TestBase.test_callback_None_index.<locals>.myreplace   s    r   re   )r   r[   r<   rP   r   rh   r|   s     r   test_callback_None_indexz!TestBase.test_callback_None_index   s8    	ni8)T[[$2F2F(	*r   c                     fdd_         t        j                  d       | j                  | j	                  d| j
                  z   dz   d      d       y )Nc                 j    j                   dkD  rxj                   dz  c_         yd| j                  fS )Nr   r	   )REPLACEDr   TERMINAL)limitrS   )rV   rd   s    r   rd   z8TestBase.test_callback_backward_index.<locals>.myreplace   s/    "1$&"CGG,,r   ro   re   ru   rv   )s4   abcdREPLACEDabcdREPLACEDabcdREPLACEDabcdTERMINALefghrw   )r   r   r[   r%   r   rh   r|   s    @r   test_callback_backward_indexz%TestBase.test_callback_backward_index   sS    	- 	ni8Vd.B.B%BV%K%35L	Nr   c                     d }t        j                  d|       | j                  | j                  d| j                  z   dz   d      d       y )Nc                 $    d| j                   dz   fS )Nr   rn   rb   rc   s    r   rd   z7TestBase.test_callback_forward_index.<locals>.myreplace   s    !,,r   re   ru   rv   )s   abcdREPLACEDghrw   )r   r[   r%   r   rh   r|   s     r   test_callback_forward_indexz$TestBase.test_callback_forward_index   sI    	-ni8Vd.B.B%BV%K%356L	Nr   c                     d }t        j                  d|       | j                  t        | j                  | j
                  d       y )Nc                      y)N)TERMd   r   rc   s    r   rd   z:TestBase.test_callback_index_outofbound.<locals>.myreplace   s     r   re   )r   r[   r<   r{   r   rh   r|   s     r   test_callback_index_outofboundz'TestBase.test_callback_index_outofbound   s8    	!ni8*dkk43G3G(	*r   c                    t        j                  d      }d gt        t        dd            z   g dz   D ]  } |t	        | j
                  d               }t	               }| j                         }	 ||j                  |      }n|j                         }|sn#|j                  |      }|j                  |       J| j                  |j                         | j
                  d           y )Nr   r	   !   @         i   i   r   )r   	getreaderlistranger   r    r   readr   writer%   getvalue)r   
UTF8Readersizehintistreamostreamencoderdataes           r   test_incrementalencoderz TestBase.test_incrementalencoder   s    %%g.
eArl!3312 	BH a!9:GiG--/G'"<<1D"<<>DNN4(a   W--/aA!	Br   c                    t        j                  d      }d dgt        t        dd            z   g dz   D ]  }t	        | j
                  d         } |t	                     }| j                         }	 |j                  |      }|sn#|j                  |      }|j                  |       7| j                  |j                         | j
                  d           y )Nr   r	   r   r   r   )r   	getwriterr   r   r   r    r   r   r   r   r%   r   )r   
UTF8Writerr   r   r   decoderr   r.   s           r   test_incrementaldecoderz TestBase.test_incrementaldecoder   s    %%g.
r
T%2,%7712 	BHdll1o.G +G--/G||H-t,AMM!$  W--/aA	Br   c                    | j                   }| j                         }| j                  t        |j                  |d       d|_        | j                  |j	                  |d      d       |j                          d }t        j                  d|       d|_        | j                  |j	                  |d      d       d|_        | j                  |j	                  |d      d       y )NTignorer   c                     d| j                   fS )Ncalledrb   rc   s    r   tempreplacezDTestBase.test_incrementalencoder_error_callback.<locals>.tempreplace   s    cgg&&r   ztest.incremental_error_callbacks   called)
rh   r   r<   rO   r   errorsr%   resetr   r[   )r   invr   r   s       r   &test_incrementalencoder_error_callbackz/TestBase.test_incrementalencoder_error_callback   s    ""##%,ahhTB#t,c2			'?M4#t,i8 #t,c2r   c                    t        j                  d      }dD ]  }d dgt        t        dd            z   g dz   D ]  }| j	                  t        | j                  d               } |t                     }t        ||      }	  ||      }|sn)|dk(  r|j                  |       n|j                  |       4| j                  |j                         | j                  d            y )	Nr   r   readline	readlinesr   r	   r   r   r   r   )r   r   r   r   r   r   r    getattr
writelinesr   r%   r   )r   r   namer   r   r   rB   r   s           r   test_streamreaderzTestBase.test_streamreader   s    %%g.
5 	FD!2JeArl);;56 F++gdll1o&>?$WY/w->D{***40d+    !1!1!3T\\!_EF	Fr   c                    d}t        j                  d      }|D ]  }d gt        t        dd            z   g dz   D ]  } |t	        | j
                  d               }| j                  t	                     }t        ||      }	 |	 ||      }n |       }|sn)|dk(  r|j                  |       n|j                  |       >| j                  |j                         | j
                  d            y )Nr   r   r	   r   r   r   r   )r   r   r   r   r   r    r   r   r   r   r%   r   )	r   	readfuncsr   r   r   r   r   rB   r   s	            r   test_streamwriterzTestBase.test_streamwriter   s    5	%%g.
 	FD!FT%2,%7756 F$WT\\!_%=>++gi0w-+#H~#v{***40d+    !1!1!3T\\!_E%F	Fr   c                 Z    t               }| j                  |      }|j                          y r   )r   r   r   )r   streamr   s      r   "test_streamwriter_reset_no_pendingz+TestBase.test_streamwriter_reset_no_pending  s"     V$r   c                 |    | j                         }| j                  t              5  |`d d d        y # 1 sw Y   y xY wr   )r   r<   AttributeErrorr   )r   r   s     r   $test_incrementalencoder_del_segfaultz-TestBase.test_incrementalencoder_del_segfault  s8    ##%~. 		 	 	s   2;)__name__
__module____qualname__r   r   r    r6   r&   rH   r\   rh   r   r/   rD   rK   r_   rj   rp   r}   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r      s    HEGJMLOO@<F.
I6-.**NN*B(B"3(F&F0r   r   c                   L    e Zd Zg Zg Zg Zg Zd Zd Zd Z	d Z
d Zd Zd Zd Zy	)
TestBase_Mappingc                     	 | j                         j                          y # t        t        f$ r! | j	                  d| j
                  z          Y y w xY w)NzCould not retrieve )open_mapping_filecloseOSErrorr   rI   
mapfileurlr   s    r   r   zTestBase_Mapping.setUp$  sI    	A""$**,' 	AMM/?@	As   ! -AAc                 D    t        j                  | j                  d      S )Nr   )r   )r   open_urlresourcer   r   s    r   r   z"TestBase_Mapping.open_mapping_file*  s    '''JJr   c                 |    | j                   j                  d      r| j                          y | j                          y )Nz.xml)r   endswith_test_mapping_file_ucm_test_mapping_file_plainr   s    r   test_mapping_filez"TestBase_Mapping.test_mapping_file-  s,    ??##F+'')))+r   c                    d }i }| j                         5 }|D ]  }|s n|j                  d      d   j                         }t        |      dk7  r8|d   d d dk7  r| j                  d|       t        j                  |d   dd        }t        |      dk(  r	d|d   k  r ||d         }t        |      d	k(  s||v r|||<   | j                  ||        d d d        y # 1 sw Y   y xY w)
Nc                 P    dj                  d | j                  d      D              S )Nr   c              3   F   K   | ]  }t        t        |d               yw)   N)chrrt   ).0rs   s     r   	<genexpr>zMTestBase_Mapping._test_mapping_file_plain.<locals>.unichrs.<locals>.<genexpr>5  s     Aq3s1bz?As   !+)rU   r!   )rJ   s    r   unichrsz:TestBase_Mapping._test_mapping_file_plain.<locals>.unichrs4  s    77AAGGCLAAAr   #r   rn   0xzInvalid line: r	   r   i  )r   r!   lenfailr8   fromhexrT   
_testpoint)r   r   urt_wafr+   r   csetchunichs           r   r   z)TestBase_Mapping._test_mapping_file_plain3  s   	B ##% 	/ /zz#q)//1t9>72A;$&IIth78tAwqr{3v;!#q	(9Q(u:'5F? &u.%/	/ 	/ 	/s   CC""C+c                 &   | j                         5 }|j                         }d d d        t        j                  d      }|D ]A  \  }}t	        t        |d            }t        j                  |      }| j                  ||       C y # 1 sw Y   fxY w)Nz'<a u="([A-F0-9]{4})" b="([0-9A-F ]+)"/>r   )	r   r   refindallr   rt   r8   r   r   )r   r   ucmdataucunicodedr   codechs           r   r   z'TestBase_Mapping._test_mapping_file_ucmN  s    ##% 	ffhG	ZZA7K 	+JCC%E]]5)FOOFE*	+	 	s   BBc                 D    | j                   D ]  } | j                  |   y r   )supmapsr   )r   mappings     r   test_mapping_supplementalz*TestBase_Mapping.test_mapping_supplementalW  s#    || 	&GDOOW%	&r   c                     ||f| j                   vr+| j                  |j                  | j                        |       ||f| j                  vr'| j                  t        || j                        |       y y r   )pass_enctestr%   r   r   pass_dectestr;   )r   r   r   s      r   r   zTestBase_Mapping._testpoint[  sc    E?$"3"33U\\$--8&AE?$"3"33S7? 4r   c                    | j                   D ]7  \  }}}t        |t              r|j                  }n|j                  }|rt        |t              ri || j
                  |      }| j                  t        |      t        u t        |             | j                  |||d| j
                  d|d|d|	        || j
                  |      }| j                  t        |      t        u t        |             | j                  |||d| j
                  d|d|d|	       | j                  t        || j
                  |       : y )Nr1   r2   r3   r4   r5   )r6   r7   r8   r   r   r   r9   r:   r;   r%   r<   r=   r>   s         r   rD   z!TestBase_Mapping.test_errorhandlea  s   (, 	M$FFH&%(}}}}fe,!$--8FOODLC$7fF$$VX(.vv(0&23
 "$--8FOODLE$94<H$$VX(.vv(0&23
 !!,dmmVL+	Mr   N)r   r   r   r   r   r   r6   r   r   r   r   r   r   r   rD   r   r   r   r   r     sB    LLGJAK,/6+&@Mr   r   c                    t         j                  j                  t         j                  j                  t              d      }t        t         j                  j                  || dz         d      5 }|j                         }d d d        t        t         j                  j                  || dz         d      5 }|j                         }d d d        |fS # 1 sw Y   SxY w# 1 sw Y   fS xY w)Ncjkencodingsz.txtrbz	-utf8.txt)ospathrU   dirname__file__openr   )r   dirr   encodedr-   s        r   load_teststringr  y  s    
'',,rwwx0.
AC	bggll3v.	5 &&(	bggll3{ 23T	: avvxD=	 D=s   /C5CCC*)r   r   r   ry   unittesthttp.clientr   testr   ior   r   TestCaser   r  r   r   r   <module>r     sH     	 	 
  %  L L^YMx(( YMvr   