
    dafl                        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  ej                  d      Z
d dlZd dlmZ d dl
mZ 	 d dlmZmZ  e eee
j,                  j/                  d	                  Z G d
 de j2                        Z G d de j2                        Z G d de j2                        Zd Zedk(  r e j>                          yy# e$ r ej$                  xZZY w xY w)    N)support)import_helper)	os_helper_tkinter)Tcl)TclError)INT_MAXPY_SSIZE_T_MAX.c                       e Zd Zd Zy)TkinterTestc                 .   | j                  t        t        j                  d       | j                  t        t        j                  i        | j                  t        t        j                  d       | j                  t        t        j                  dh       y )NTstringset)assertRaises	TypeErrorr   _flattenselfs    (/root/Python-3.12.4/Lib/test/test_tcl.pytestFlattenLenzTkinterTest.testFlattenLen   sf    )X%6%6=)X%6%6; 	)X%6%6A)X%6%6@    N)__name__
__module____qualname__r    r   r   r   r      s    Ar   r   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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 jB                  dk(  d      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^                  d*        Z0y+),TclTestc                 t    t               | _        | j                  j                  j                         | _        y N)r   interptkwantobjectsr   s    r   setUpzTclTest.setUp'   s$    e;;>>557r   c                     | j                   }|j                  d       | j                  |j                  d      d       y )Nset a 1set a1)r!   evalassertEqualr   tcls     r   testEvalzTclTest.testEval+   s0    kk'*3/r   c                 ^    | j                   }| j                  |j                  d      d       y )Nzset a "a\0b"a b)r!   r*   r)   r+   s     r   test_eval_null_in_resultz TclTest.test_eval_null_in_result0   s$    kk/2H=r   c                 ^    | j                   }| j                  |j                  d      d       y )Nzset a "<\ud83d\udcbb>"   <💻>)r!   assertInr)   r+   s     r   test_eval_surrogates_in_resultz&TclTest.test_eval_surrogates_in_result4   s#    kkchh89>Jr   c                 ^    | j                   }| j                  t        |j                  d       y )Nr'   r!   r   r   r)   r+   s     r   testEvalExceptionzTclTest.testEvalException8   s!    kk(388G4r   c                 ^    | j                   }| j                  t        |j                  d       y )Nzthis is wrongr6   r+   s     r   testEvalException2zTclTest.testEvalException2<   s!    kk(388O<r   c                     | j                   }|j                  ddd       | j                  |j                  dd      d       y )Nr   ar(   )r!   callr*   r+   s     r   testCallzTclTest.testCall@   s6    kks3%,S1r   c                 `    | j                   }| j                  t        |j                  dd       y )Nr   r;   r!   r   r   r<   r+   s     r   testCallExceptionzTclTest.testCallExceptionE   s#    kk(388E#6r   c                 b    | j                   }| j                  t        |j                  ddd       y )Nthisiswrongr?   r+   s     r   testCallException2zTclTest.testCallException2I   s%    kk(388F4@r   c                     | j                   }|j                  dd       | j                  |j                  d      d       y )Nr;   r(   r'   r!   setvarr*   r)   r+   s     r   
testSetVarzTclTest.testSetVarM   s2    kk

3s'*3/r   c                     | j                   }|j                  dd       | j                  |j                  d      d       y )Na(1)r(   zset a(1)rG   r+   s     r   testSetVarArrayzTclTest.testSetVarArrayR   s2    kk

6#*-c2r   c                     | j                   }|j                  d       | j                  |j                  d      d       y )Nr&   r;   r(   r!   r)   r*   getvarr+   s     r   
testGetVarzTclTest.testGetVarW   s/    kkC-r   c                     | j                   }|j                  d       | j                  |j                  d      d       y )Nz
set a(1) 1rK   r(   rN   r+   s     r   testGetVarArrayzTclTest.testGetVarArray\   s0    kkF+C0r   c                 ^    | j                   }| j                  t        |j                  d       y Nr;   r!   r   r   rO   r+   s     r   testGetVarExceptionzTclTest.testGetVarExceptiona   s!    kk(3::c2r   c                 ^    | j                   }| j                  t        |j                  d       y )NrK   rU   r+   s     r   testGetVarArrayExceptionz TclTest.testGetVarArrayExceptione   s!    kk(3::f5r   c                     | j                   }|j                  dd       | j                  |j                  d      d       |j	                  d       | j                  |j                  d      d       y )Nr;      zinfo exists ar(   0r!   rH   r*   r)   unsetvarr+   s     r   testUnsetVarzTclTest.testUnsetVari   sW    kk

3q/237S/237r   c                    | j                   }|j                  dd       |j                  dd       | j                  |j                  d      d       | j                  |j                  d      d       |j	                  d       | j                  |j                  d      d       | j                  |j                  d      d       y )	NrK   rZ   za(2)   zinfo exists a(1)r(   zinfo exists a(2)r[   r\   r+   s     r   testUnsetVarArrayzTclTest.testUnsetVarArrayp   s    kk

6!

6!"45c:"45c:V"45c:"45c:r   c                 ^    | j                   }| j                  t        |j                  d       y rT   )r!   r   r   r]   r+   s     r   testUnsetVarExceptionzTclTest.testUnsetVarExceptionz   s!    kk(3<<4r   c                 .    ddddddddd	d
dddz  ddz   fS )Nr   rZ   ii   l        l    l    l         l            l        r`   i  r   r   s    r   get_integerszTclTest.get_integers~   s4    1b4!T'# 	#r   c           	         | j                   j                  }| j                         D ]  }| j                  |j	                  d|z        |       | j                  |j	                  d|z        |       | j                  |j	                  d|z  j                  dd            t        dk  r|nt        d|z               | j                  |j	                  d|z        |        | j                  |j	                  d      d       | j                  t        |j                         | j                  t        |j                  d	d
       | j                  t        |j                  d       | j                  t        |j                  d       | j                  t        |j                  d       | j                  t        t        t        f|j                  d       | j                  t        t        t        f|j                  d       y )Nz %d z %#o o )	   r   z%oz %#x *   4210s   42      E@r;   z42 u   42)r!   r"   rf   r*   getintreplacetcl_versionintr   r   r   
ValueErrorUnicodeEncodeError)r   r,   is      r   test_getintzTclTest.test_getint   s   kknn""$ 	9ASZZ
3Q7SZZ!4a8 SZZ1(=(=c2(FG"-"6QCqMKSZZ!4a8	9 	B,)SZZ0)SZZt<)SZZ7)SZZ6(CJJ49j(;**f	.-z8D**j	2r   c                    | j                   j                  }| j                  |j                  d      d       | j                  |j                  d      d       | j                  |j                  d      d       | j                  |j                  d      d       | j	                  t
        |j                         | j	                  t
        |j                  dd       | j	                  t
        |j                  d       | j	                  t        |j                  d	       | j	                  t
        t        t        f|j                  d
       | j	                  t        t        t        f|j                  d       y )Nz 42 rn   z 42.5 g     @E@rk   z42.5rm   s   42.5r;   z42.5 u   42.5)	r!   r"   r*   	getdoubler   r   r   rs   rt   r+   s     r   test_getdoublezTclTest.test_getdouble   s   kknnv.5x0$7t,d3r*D1)S]]3)S]]FDA)S]]G<(CMM379j(;--	3-z8D--	7r   c                 2   | j                   j                  }| j                  |j                  d      d       | j                  |j                  d      d       | j                  |j                  d      d       | j                  |j                  d      d       | j	                  t
        |j                         | j	                  t
        |j                  dd       | j	                  t
        |j                  d       | j	                  t
        |j                  d       | j	                  t        |j                  d	       | j	                  t
        t        t        f|j                  d
       | j	                  t        t        t        f|j                  d       y )NonTr(   rk   r   Fs   on      ?r;   zon u   on)	r!   r"   assertIs
getbooleanr   r   r   rs   rt   r+   s     r   test_getbooleanzTclTest.test_getboolean   s   kknncnnT*D1cnnS)40cnnR($/cnnQ'/)S^^4)S^^T3?)S^^U;)S^^S9(CNNC89j(;..&	2-z8D..*	6r   c                    | j                   }t        j                  }| j                  t        j                  |       t        |d      5 }|j                  d       d d d        |j                  |       | j                  |j                  d      d       | j                  |j                  d      d       | j                  |j                  d      d       y # 1 sw Y   ~xY w)	NwzKset a 1
            set b 2
            set c [ expr $a + $b ]
            r'   r(   set b2zset c3
r!   r   TESTFN_ASCII
addCleanupunlinkopenwriteevalfiler*   r)   r   r,   filenamefs       r   testEvalFilezTclTest.testEvalFile   s    kk))	(((3(C  	AGG  	
 	X'*3/'*3/'*3/	 	s   	CC!c                    | j                   }t        j                  }| j                  t        j                  |       t        |d      5 }|j                  d       d d d        |j                  |       | j                  |j                  d      d       | j                  |j                  d      d       y # 1 sw Y   ]xY w)Nr   z>
            set a "a b"
            set b "a\0b"
            r'   r/   r   r   r   s       r   test_evalfile_null_in_resultz$TclTest.test_evalfile_null_in_result   s    kk))	(((3(C  	AGG  	
 	X'*H5'*H5	 	s   	B77C c                    | j                   }|j                  dd      }| j                  |j                  dd|       |j                  ddd       t        j                  }| j                  t        j
                  |       t        |d      5 }|j                  d       d d d        |j                  |       | j                  |j                  d      d       | j                  |j                  d      d       y # 1 sw Y   ]xY w)	Nencodingsystemzutf-8wbsM   
            set a "<>"
            set b "<\ud83d\udcbb>"
            r'   r2   r   )r!   r<   r   r   r   r   r   r   r   r*   r)   )r   r,   r   r   r   s        r   "test_evalfile_surrogates_in_resultz*TclTest.test_evalfile_surrogates_in_result   s    kk88J1*hAXw/))	(((3(D! 	QGG  	
 	X'*N;'*N;	 	s   C::Dc                     | j                   }d}	 t        j                  |       | j	                  t
        |j                  |       y # t        $ r
}Y d }~0d }~ww xY w)Ndoesnotexists)r!   osremove	Exceptionr   r   r   )r   r,   r   es       r   testEvalFileExceptionzTclTest.testEvalFileException   sN    kk"	IIh 	(3<<9  		s   A 	AAc                 ^    | j                   }| j                  t        |j                  d       y )Nzpackage require DNEr6   r+   s     r   testPackageRequireExceptionz#TclTest.testPackageRequireException   s"    kk(388,ABr   win32zRequires Windowsc                    t         j                  j                  t        j                        }|d   dk7  rt        j                  d      dt         j                  d   d|d   d|d	d  }t         j                  j                  |      st        j                  d
      t        j                         5 }|j                  d       t        j                  |ddg      }d d d        | j                  d       y # 1 sw Y   xY w)NrZ   :z$Absolute path should have drive partz\\COMPUTERNAME\r   z$\   zCannot connect to UNC PathTCL_LIBRARY-czimport tkinter; print(tkinter)s   tkinter)r   pathabspathsys
executableunittestSkipTestenvironexistsr   EnvironmentVarGuardunset
subprocesscheck_outputr3   )r   fullnameunc_nameenvstdouts        r   testLoadWithUNCzTclTest.testLoadWithUNC   s     77??3>>2A;###$JKK %'ZZ%?$,QK$,QRL2 ww~~h'##$@AA**, 	HIIm$,,t%EFHF	H
 	j&)	H 	Hs   5*C::Dc                      j                   j                  ddd       j                  ddd        fd} j                  t        j                          j                  t        j                  dd        j                  t        j                  d	        j                  t
        j                  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 d        |d!d"        |d#d"        |d$d%        |d&d'        |d(d'        |d)d*        |d+t        d,             y )-Nr   r;   r   b   c                 x    j                  |       }j                  ||       j                  |t               y r    )
exprstringr*   assertIsInstancestrexprexpectedresultr   r,   s      r   checkz&TclTest.test_exprstring.<locals>.check  s1    ^^D)FVX.!!&#.r   8.2+6   8.2 + 6spamri   r[   8.2 + 6z14.23.1 + $az6.12 + "$a.$b"z5.64*[llength "6 2"]8{word one} < "word $a"4*2 < 7hypot($a, 4)z5.05 / 4r(   5 / 4.0z1.25$5 / ( [string length "abcd"] + 0.0 )20.0/5.0z4.0"0x03" > "2"   [string length "a½€"]r   [string length "a\xbd\u20ac"]"abc"abcu   "a½€"u   a½€z"a\xbd\u20ac"z"a\0b"r/   2**64            )r!   r<   r   r   r   r   r   r   r   r,   s   ` @r   test_exprstringzTclTest.test_exprstring  s\   kkQQ	/
 	)S^^4)S^^UDA)S^^Z@(CNNF;b#i j% mU#!3'&,ine$gsi 4f=j% nc"-s3.4guo}-.i"gs5z"r   c                      j                   j                  ddd       j                  ddd        fd} j                  t        j                          j                  t        j                  dd        j                  t        j                  d	        j                  t
        j                  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 d        |d!d"        |d#d"        j                  t
        j                  d$        |d%t        d&             y )'Nr   r;   r   r   r   c                 x    j                  |       }j                  ||       j                  |t               y r    )
exprdoubler*   r   floatr   s      r   r   z&TclTest.test_exprdouble.<locals>.check-  s1    ^^D)FVX.!!&%0r   r   r   r   r   ri           r   gffffff,@r   gffffff@r   gffffff@r   g       @r   r   r   g      @r   r|   r   g      ?r   r   g      @r   r   g      @r   r   r   r   )r!   r<   r   r   r   r   r   r   s   ` @r   test_exprdoublezTclTest.test_exprdouble)  sI   kkQQ	1
 	)S^^4)S^^UDA)S^^Z@(CNNF;b#ij#mS!!3'&,inc"gsi4d;j#nc"-s3.4(CNNG<guU|$r   c                      j                   j                  ddd       j                  ddd        fd} j                  t        j                          j                  t        j                  dd        j                  t        j                  d	        j                  t
        j                  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d        |dd        |dd        j                  t
        j                  d         j                  t
        j                  d!       y )"Nr   r;   r   r   r   c                 x    j                  |       }j                  ||       j                  |t               y r    )exprlongr*   r   rr   r   s      r   r   z$TclTest.test_exprlong.<locals>.checkL  s1    \\$'FVX.!!&#.r   r   r   r   r   ri   r   r      r   r      r      r   r   r   r   rZ   r   r   r      r   r   r   r   r   )r!   r<   r   r   r   r   r   s   ` @r   test_exprlongzTclTest.test_exprlongH  sQ   kkQQ	/
 	)S\\2)S\\5$?)S\\:>(CLL&9b!ij!mQ!1%&*ina gqi4a8j!na -q1.2(CLL':(CLL':r   c                      j                   j                  ddd       j                  ddd        fd} j                  t        j                          j                  t        j                  dd        j                  t        j                  d	        j                  t
        j                  d
        |dd       dD ]#  } ||d        |d|z  d        |d|z  d       % dD ]#  } ||d        |d|z  d        |d|z  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d        |dd        j                  t
        j                  d         |d!d       y )"Nr   r;   r   r   r   c                     j                  |       }j                  ||       j                  |t               j	                  |t
               y r    )exprbooleanr*   r   rr   assertNotIsInstanceboolr   s      r   r   z'TclTest.test_exprboolean.<locals>.checkk  sA    __T*FVX.!!&#.$$VT2r   r   r   r   r   ri   F)r[   falsenooffz"%s"z{%s})r(   trueyesr{   Tr   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   )r!   r<   r   r   r   r   )r   r   valuer,   s   `  @r   test_exprbooleanzTclTest.test_exprbooleang  s   kkQQ	3 	)S__5)S__eTB)S__jA(COOV<b%0 	)E%&5.%(&5.%(	) 0 	(E%&5.$'&5.$'	( 	ij$mT"!4(&.ind#gti4d;j$nd#-t4.5(COOW=gtr   c                       j                    fd} |dd        |dd        |dd        |dd        |dd        |d	d        |d
d        |dd       y )Nc           	         j                  d|       }j                         r)j                  ||       j                  |t               y j                  || t        t	        |            f       j                  |t               y Nr   )r<   r#   r*   r   rr   r3   r   r   s      r   r   z$TclTest.test_booleans.<locals>.check  si    XXfd+F   2%%fc2ftSX-?&@A%%fc2r   r   Tr   r{   r   Fr   r   z1 < 2z1 > 2)r!   r   s   ` @r   test_booleanszTclTest.test_booleans  sc    kk	3 	fdeTdDgudEeUgtgur   c                 H   | j                   }| j                         D ]  }|j                  dt        |            }| j                  r)| j                  ||       | j                  |t               S| j                  |t        |             | j                  |t                y r   )r!   rf   r<   r   r#   r*   r   rr   )r   r,   ru   r   s       r   test_expr_bignumzTclTest.test_expr_bignum  s    kk""$ 	3AXXfc!f-F  +%%fc2  Q0%%fc2	3r   c           	           fd} j                   |d       j                  rdnd        j                   |d       j                  rdnd        j                   |d      d        j                   |d      d        j                   |d      d        j                   |d	      d	        j                   |d
      d
        j                   |d      d        j                   |d      d       t        j                  dk7  r0 j                   |d      d        j                   |d      d        j                   |d       j                  rdnd	        j                   |d       j                  rdnd        j                   |d       j                  rdnd        j	                         D ]1  } j                   ||       j                  r|n
t        |             3 ddddt        j                  j                  t        j                  j                  t        j                  j                   t        j                  j                   fD ]H  } j                  r j                   ||      |       ( j                  t         ||            |       J  j                  rz |t        d            } j                  ||        j                   |t        d            t        d              j                   |t        d             t        d              nh j                  t         |t        d                  t        d              j                  t         |t        d                   t        d               j                   |d       j                  rdnd        j                   |dd d!gg       j                  rd"       y d#       y )$Nc                 >    j                   j                  dd|       S )Nr   _)r!   r<   )r   r   s    r   	passValuez.TclTest.test_passing_values.<locals>.passValue  s    ;;##E366r   Tr(   Fr[   r   	   string€
   string💻str ing	   str ing½
   str ing€u   str ing💻r      <>   <€>   <>r2      str ing   string
   strÀings   stringu   str½ingr   r|         UUUUUU?naninfrZ   r   333333@z1 2 3.4r;   r   c)r;   )r   r  a {b c})r*   r#   r   platformrf   r   
float_infominmaxr   assertNotEqual)r   r  ru   r   s   `   r   test_passing_valueszTclTest.test_passing_values  s\   	7 	4$2B2B$L5)D4D4D5#N8,h7>2NC#568JK<0,?#346FG#568JK#9:/	1<<7"Y'=>')Y'OP+-=1*.*:*:	N#45.2.>.>*DT	V=1*.*:*:	N""$ 	NAYq\0@0@1c!fM	NsD#..$$cnn&8&8>>%%%(:(:':< 	9A   1q1  y|!4a8	9 %,'A1%YuU|4eElCYe}5e}EU9U5\#:;U5\JU9eEl]#;<uU|mL#34-1-=-=)9	NC#s#45.2.>.>*	ODM	Or   c                 P    d fd} j                   j                  d|        j                   j                   j                  j                  d       d, j
                  d fd} fd} |dd        |dd	        |d
        |d        |d        |d       t        j                  dk7  r |dd        |dd        |d        |dd
        |dd        |dd        |dd        |d        |d        |d        |dd        |dd        |dd         j                         D ]  } ||t        |              d!D ]  } ||t        |              d"t        j                  j                  t        j                  j                  t        j                  j                   t        j                  j                   fD ]  } |||         |t        d#      |        |t        d#       |        |d$d        |d%d&        |d'd(gd)d*gd+g gd&       y )-Nc                     | | S r    r   )argr   s    r   testfuncz+TclTest.test_user_command.<locals>.testfunc  s    FJr   r  )eqc                    || }d j                   j                  d|       }j                  t                ||       j                  |t                |||       y )Nr  )r!   r<   r   r   )r   r   r   rr   r   s       r   r   z(TclTest.test_user_command.<locals>.check  s\     F  U3A!!&#.vx !!!S)q(Or   c                 X    j                  t        |       |t        |      dz         y )Ng|=)delta)assertAlmostEqualr   abs)actualr   r   s     r   float_eqz+TclTest.test_user_command.<locals>.float_eq  s+    ""5=(),X)> # @r   Tr(   Fr[   r   u   string½r  r  r   r  r  r	  r2   ri   s   strings	   string€u   stringâ¬s   stringr   r  r  r  r
  r  r  s   string€u   strÀingâ¬)r   r|   r  r  r  r   )rZ   )r`   )r   r   5 6r   z1 2 {3 4} {5 6} {}rZ   r`   r   r   r)  r    )r!   createcommandr   r"   deletecommandr*   r   r  rf   r   reprr  r  r  r   )r   r  r   r(  ru   r   r   s   `     @r   test_user_commandzTclTest.test_user_command  s   	 	!!*h744jA		d.>.> 			@ 	dCeShln !<<7"(*5:NKb	i"#%9:m\*c2l !m\*!12+-IJ""$ 	A!SV	! 	A!T!W	++S^^-?-?>>%%%(:(:':< 	"A!!	" 	eElx(uU|m)b"*,@Aq1$Ar*,@Ar   c                    | j                   j                  j                  }| j                   j                  j                  }| j	                  t
        |       | j	                  t
        |dd       | j	                  t
        |d       dddddd	d
dddddddddddddg dfdddggdddgff |dddd      | j                  rdndfg}| j                  sd }nd!}| |d"d#d$d%d&d      |fgz  }d'| j                  d(t        d)| j                   j                         }|D ]$  \  }}| j                   ||      |d*|d+|       & | j	                  t        |d,       y )-Nr;   r   r`   )r   )r   )ri   r   ){}ri   )z""r0  )z
a
 b	 c
 r;   r   r  )s
   a
 b	 c
 r1  )u   a €r;      €)u   a 💻r;   u   💻)s   a €r2  )s   a 💻r4  )s   a r4  )s	   ab cd)r/   zc d)r  r;   zb c)za b\ cr5  )r5  r5  )za 2)r;   r   )r;   r`   r6  )za 3.4)r;   3.4)r;   r  r8  )r   r   r   r  listrZ   r   r  r  )r(   r   r7  )12r3  u   â¬r7  )   r3     €r  dictcreater;  r3  r<  zwant objects? z, Tcl version: z, Tcl patchlevel: zarg=z, {)r!   r"   	splitlistr<   r   r   r#   rq   info_patchlevelr*   r   )r   r@  r<   	testcasesr   dbg_infor  ress           r   test_splitlistzTclTest.test_splitlist  s   KKNN,,	{{~~"")Y/)YS9)Y2/0)108@<%%( #$HC:sCj 12&!S&)$($4$4 !#/
	6 >H>H&(B/6J
 	
	
 ''dkk6Q6Q6SU! 	=HCYs^S-0(;=	= 	(Is3r   c           
         t         j                  }| j                  j                  }d}| j	                   |||d      dddd       | j	                   |||      dddd       d}| j	                   |||d      d	dd
d       | j	                   |||      d	dd
d       | j                  t        ||d       | j                  t        ||d       |j                  ddd	dddd      }| j	                   |||      | j                  rd	ndddd       |j                  dddd	dddd      }| j                  sdddd}nd	ddd}| j	                   |||      |       y )Nz#-a {1 2 3} -something foo status {}Fz1 2 3foori   )-a
-somethingstatus)r;   	somethingrJ  )rH  rZ   r`   r   rI  rG  rJ  r/  rL  r/  z-a b -c )rH  r   r   r9  rH  rI  rJ  r   r=  r>  )	tkinter
_splitdictr!   r"   r*   r   RuntimeErrorr<   r#   )r   	splitdictr,   r  r   s        r   test_splitdictzTclTest.test_splitdictE  s   &&	kknn33U3%2>	@3,<	> E3U3ETB	D3,%4@	B 	,	3
C,	38IJhhviuhL3,#//)W2/	0 hhvxYeXrK$5BGH&UbIH3,h7r   c                     t         j                   j                  j                  fd f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       y )Nc                 *    j                  d| d      S )Nlindexr   )r<   )sr,   s    r   unpackz!TclTest.test_join.<locals>.unpacki  s    88Ha++r   c           
         j                    | g            |        j                    | dg            |        j                     | gg                  |        j                     | dgg                  |        j                     | gdg                  |        j                     | dgdg                  |        y )Nr   )r*   )r   joinr   rV  s    r   r   z TclTest.test_join.<locals>.checkk  s    VD%M2E:VD%$45u=VF4%	?$;<eDVF4%+=$>?GVF4%!+=$>?GVF4%Q+@$ABEJr   ri   r   zsp amzsp	amzsp
amz 	
z{spam}z{sp am}z"spam"z"sp am"z{"spam"}z"{spam}"zsp\amz"sp\am"z	"{}" "{}"z"\z"{z"}z
\z
{z
}z\
z{
z}
)rM  _joinr!   r"   )r   r   rX  r,   rV  s   ` @@@r   	test_joinzTclTest.test_joinf  s    }}kknn	,	K 	b	fghhghihijjhjkeddfeefeer   c                     t        j                  | t        j                         t        j                  | t        j                         t        j                  | t        j
                         y r    )r   check_disallow_instantiationr   Tcl_ObjTkttType	TkappTyper   s    r   test_new_tcl_objzTclTest.test_new_tcl_obj  sD    ,,T83C3CD,,T83D3DE,,T83E3EFr   N)1r   r   r   r$   r-   r0   r4   r7   r9   r=   r@   rE   rI   rL   rP   rR   rV   rX   r^   ra   rc   rf   rv   ry   r   r   r   r   r   r   r   
skipUnlessr   r  r   r   r   r   r   r   r   r  r-  rE  rQ  rZ  r   cpython_onlyr`  r   r   r   r   r   %   s   80
>K5=2
7A0
3
.
1
368;5#2*76 06<":C X02DE* F** #D%>;>&P&	3.O`6Bp.4`8B#J G Gr   r   c                      e Zd Zd Zej
                   ej                  ee	k  d       ej                  edz   dd      d                      Zej
                   ej                  ee	k  d       ej                  edz   dd      d	                      Zej
                   ej                  ee	k  d       ej                  edz   d
d      d                      Zy)BigmemTclTestc                 "    t               | _        y r    )r   r!   r   s    r   r$   zBigmemTclTest.setUp  s    er   zneeds UINT_MAX < SIZE_MAXrZ   r   F)sizememusedry_runc                 j    d|z  }| j                  t        | j                  j                  dd|d       y )N r   indexr   )r   OverflowErrorr!   r<   )r   rf  r   s      r   test_huge_string_callz#BigmemTclTest.test_huge_string_call  s0     d
-)9)98WeUVWr   r`   c                    | j                   j                  }dd|z  z   }| j                  t        |j                  |       | j                  t        |j
                  |       | j                  t        |j                  |       | j                  t        |j                  |       | j                  t        |j                  |       | j                  t        |j                  |       | j                  t        |j                  |       | j                  t        |j                  |dd       | j                  t        |j                  d|d       | j                  t        |j                  |       | j                  t        |j                  d|       | j                  t        |j                  |       | j                  t        |j                  |       | j                  t        |j                  |       | j                  t        |j                  |       | j                  t        |j                   |       | j                  t        |j"                  |t$               | j                  t        |j&                  |       y )Nr(   rj  xr;   )r!   r"   r   rl  ro   rx   r~   r)   r   recordadderrorinforH   r]   r   r   r   r@  r*  r  r+  r   rf  r"   r   s       r   test_huge_string_builtinsz'BigmemTclTest.test_huge_string_builtins  s    [[^^cDj -E:-u=->-%8-e<-E:-%@-E3D-CD-e<-c5A-%@->-e<-?-u=-)9)95#F-)9)95Ar   r   c                    | j                   j                  }dd|z  z   }| j                  t        |j                  |       | j                  t        |j
                  |       | j                  t        |j
                  d|       y )Nr(   rj  ro  )r!   r"   r   rl  r   r]   rr  s       r   test_huge_string_builtins2z(BigmemTclTest.test_huge_string_builtins2  sc    
 [[^^cDj -e<-e<-c5Ar   N)r   r   r   r$   r   rb  r   ra  r	   r
   
bigmemtestrm  rs  ru  r   r   r   rd  rd    s    X>13NOWWq[EBX C P X X>13NOWWq[EBB C P B, X>13NOWWq[EBB C P Br   rd  c                  v    t         j                  r)t               } t        d| j	                  dd      d       y y )Nzpatchlevel =info
patchlevelT)flush)r   verboser   printr<   )r,   s    r   setUpModuler}    s,    enchhv|<DI r   __main__) r   r   r   r   testr   test.supportr   r   import_moduler   rM  r   r   	_testcapir	   r
   ImportErrormaxsizetuplemaprr   TCL_VERSIONsplitrq   TestCaser   r   rd  r}  r   mainr   r   r   <module>r     s      
 	  & " '=&&z2   +1 CX1177<=>
A(## 
Aj	Gh j	GX.BH%% .BbJ zHMMO m  +"{{*Gn+s   C C&%C&