
    7bh4y                        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    7/opt/python-3.12.12/usr/lib/python3.12/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d Zd Zd Z d Z!d  Z" e#jH                  e%jL                  d!k(  d"      d#        Z'd$ Z(d% Z)d& Z*d' Z+d( Z,d) Z-d* Z.d+ Z/d, Z0d- Z1d. Z2d/ Z3e4jj                  d0        Z6y1)2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>"   <💻>r0   r+   s     r   test_eval_surrogates_in_resultz&TclTest.test_eval_surrogates_in_result4   s%    kk";<nMr   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                  }|j                  d       |j                  d      }d}| j                  ||       y )N7set a "\u20ac \ud83d\udcbb \0 \udcab"; regexp -about $ar'      € 💻   )r!   r"   r)   r*   r   r,   aexpecteds       r   test_eval_returns_tcl_objz!TclTest.test_eval_returns_tcl_obj@   s?    kknnKLHHW<H%r   c                     | j                   }|j                  ddd       | j                  |j                  dd      d       y )Nr   r>   r(   )r!   callr*   r+   s     r   testCallzTclTest.testCallG   s6    kks3%,S1r   c                    | j                   }|j                  ddd       | j                  |j                  d      d       | j                  |j                  dd      d       | j                  |j	                  d      d       |j                  ddd       | j                  |j                  d      d       | j                  |j                  dd      d       | j                  |j	                  d      d       y )Nr   r>   r/   r'      € )r!   rB   r*   getvarr)   r+   s     r   test_call_passing_nullzTclTest.test_call_passing_nullL   s    kkV$C(3%-x8'*H5Z(C,7%-|<'*L9r   c                 `    | j                   }| j                  t        |j                  dd       y )Nr   r>   r!   r   r   rB   r+   s     r   testCallExceptionzTclTest.testCallExceptionX   s#    kk(388E#6r   c                 b    | j                   }| j                  t        |j                  ddd       y )NthisiswrongrI   r+   s     r   testCallException2zTclTest.testCallException2\   s%    kk(388F4@r   c                 ^   | j                   j                  }|j                  d       |j                  dd      }d}| j                  rT| j                  t        |      |       | j                  |j                  |       | j                  |j                  d       y | j                  ||       y )Nr;   r   r>   r<   regexp)	r!   r"   r)   rB   r#   r*   strr   typenamer=   s       r   test_call_returns_tcl_objz!TclTest.test_call_returns_tcl_obj`   s    kknnKLHHUC <SVX.QXXx0QZZ2Q)r   c                     | j                   }|j                  dd       | j                  |j                  d      d       y )Nr>   r(   r'   r!   setvarr*   r)   r+   s     r   
testSetVarzTclTest.testSetVarl   s2    kk

3s'*3/r   c                    | j                   }|j                  dd       | j                  |j                  d      d       | j                  |j	                  dd      d       | j                  |j                  d      d       |j                  dd       | j                  |j                  d      d       | j                  |j	                  dd      d       | j                  |j                  d      d       y )Nr>   r/   r   r'   rE   )r!   rW   r*   rF   rB   r)   r+   s     r   test_setvar_passing_nullz TclTest.test_setvar_passing_nullq   s    kk

3C(3%-x8'*H5

3
#C,7%-|<'*L9r   c                     | j                   }|j                  dd       | j                  |j                  d      d       y )Na(1)r(   zset a(1)rV   r+   s     r   testSetVarArrayzTclTest.testSetVarArray}   s2    kk

6#*-c2r   c                     | j                   }|j                  d       | j                  |j                  d      d       y )Nr&   r>   r(   r!   r)   r*   rF   r+   s     r   
testGetVarzTclTest.testGetVar   s/    kkC-r   c                     | j                   }|j                  d       | j                  |j                  d      d       y )Nz
set a(1) 1r\   r(   r_   r+   s     r   testGetVarArrayzTclTest.testGetVarArray   s0    kkF+C0r   c                 ^    | j                   }| j                  t        |j                  d       y Nr>   r!   r   r   rF   r+   s     r   testGetVarExceptionzTclTest.testGetVarException   s!    kk(3::c2r   c                 ^    | j                   }| j                  t        |j                  d       y )Nr\   re   r+   s     r   testGetVarArrayExceptionz TclTest.testGetVarArrayException   s!    kk(3::f5r   c                 \   | j                   j                  }|j                  d       |j                  d      }d}| j                  rT| j                  t        |      |       | j                  |j                  |       | j                  |j                  d       y | j                  ||       y )Nr;   r>   r<   rQ   )	r!   r"   r)   rF   r#   r*   rR   r   rS   r=   s       r   test_getvar_returns_tcl_objz#TclTest.test_getvar_returns_tcl_obj   s    kknnKLJJsO<SVX.QXXx0QZZ2Q)r   c                     | j                   }|j                  dd       | j                  |j                  d      d       |j	                  d       | j                  |j                  d      d       y )Nr>      zinfo exists ar(   0r!   rW   r*   r)   unsetvarr+   s     r   testUnsetVarzTclTest.testUnsetVar   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 )	Nr\   rl   za(2)   zinfo exists a(1)r(   zinfo exists a(2)rm   rn   r+   s     r   testUnsetVarArrayzTclTest.testUnsetVarArray   s    kk

6!

6!"45c:"45c:V"45c:"45c:r   c                 ^    | j                   }| j                  t        |j                  d       y rd   )r!   r   r   ro   r+   s     r   testUnsetVarExceptionzTclTest.testUnsetVarException   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   rl   ii   l        l    l    l         l            l        rr   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"   rx   r*   getintreplacetcl_versionintr   r   r   
ValueErrorUnicodeEncodeError)r   r,   is      r   test_getintzTclTest.test_getint   s   kknn""$ASZZ
3Q7SZZ!4a8 SZZ1(=(=c2(FG"-"6QCqMKSZZ!4a8 % 	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 r   z 42.5 g     @E@r~   z42.5r   s   42.5r>   z42.5 u   42.5)	r!   r"   r*   	getdoubler   r   r   r   r   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(   r~   r   Fs   on      ?r>   zon u   on)	r!   r"   assertIs
getbooleanr   r   r   r   r   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        t        dk\  r"| j                  t        |j                  |       n2|j                  |       | j                  |j                  d      d       t        |d      5 }|j                  d	       d d d        |j                  |       | j                  |j                  d
      d       y # 1 sw Y   xY w# 1 sw Y   HxY w)Nencodingsystemzutf-8wbs*   
            set a "<>"
            r|   r'   r3   s0   
            set b "<\ud83d\udcbb>"
            r   )r!   rB   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   " & hh?LL"SXXg.?(D!QGG   " 	X'*N; "! "!s   EE(E%(E1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)Nrl   :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_outputassertIn)r   fullnameunc_nameenvstdouts        r   testLoadWithUNCzTclTest.testLoadWithUNC0  s     77??3>>2A;###$JKK %'ZZ%?$,QK$,QRL2 ww~~h'##$@AA**,IIm$,,t%EFHF -
 	j&) -,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*   assertIsInstancerR   exprr?   resultr   r,   s      r   checkz&TclTest.test_exprstring.<locals>.checkJ  s1    ^^D)FVX.!!&#.r   8.2+6   8.2 + 6spamr{   rm   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!   rB   r   r   r   r   rR   r   r   r,   s   ` @r   test_exprstringzTclTest.test_exprstringF  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>.checkl  s1    ^^D)FVX.!!&%0r   r   r   r   r   r{           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!   rB   r   r   r   r   r   r   s   ` @r   test_exprdoublezTclTest.test_exprdoubleh  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   r   r   s      r   r   z$TclTest.test_exprlong.<locals>.check  s1    \\$'FVX.!!&#.r   r   r   r   r   r{   r   r      r   r      r      r   r   r   r   rl   r   r   r      r   r   r   r   r   )r!   rB   r   r   r   r   r   s   ` @r   test_exprlongzTclTest.test_exprlong  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   r   assertNotIsInstanceboolr   s      r   r   z'TclTest.test_exprboolean.<locals>.check  sA    __T*FVX.!!&#.$$VT2r   r   r   r   r   r{   F)rm   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!   rB   r   r   r   r   )r   r   valuer,   s   `  @r   test_exprbooleanzTclTest.test_exprboolean  s   kkQQ	3 	)S__5)S__eTB)S__jA(COOV<b%0E%&5.%(&5.%( 1 0E%&5.$'&5.$' 0 	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   )rB   r#   r*   r   r   r   rR   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!   rx   rB   rR   r#   r*   r   r   )r   r,   r   r   s       r   test_expr_bignumzTclTest.test_expr_bignum  s    kk""$AXXfc!f-F  +%%fc2  Q0%%fc2 %r   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!   rB   )r  r   s    r   	passValuez.TclTest.test_passing_values.<locals>.passValue  s    ;;##E366r   Tr(   Frm   r   	   string€
   string💻str ing	   str ing½
   str ing€u   str ing💻r      <>   <€>   <>r3      str ing   string
   strÀings   stringu   str½ingr   r         UUUUUU?naninfrl   r   333333@z1 2 3.4r>   r   c)r>   )r   r&  a {b c})r*   r#   r   platformrx   rR   
float_infominmaxr   assertNotEqual)r   r  r   r   s   `   r   test_passing_valueszTclTest.test_passing_values  sP   	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""$AYq\0@0@1c!fM %sD#..$$cnn&8&8>>%%%(:(:':<A   1q1  y|!4a8< %,'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   r1  )eqc                    || }d j                   j                  d|       }j                  t                ||       j                  |t                |||       y )Nr1  )r!   rB   r   rR   )r  r?   r2  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(   Frm   r   u   string½r  r  r   r  r  r  r3   r{   s   strings	   string€u   stringâ¬s   stringr   r  r  r  r  r  r  s   string€u   strÀingâ¬)r   r   r  r   r"  r   )rl   )rr   )r   r   5 6r   z1 2 {3 4} {5 6} {}rl   rr   r   r   r;  r    )r!   createcommandr   r"   deletecommandr*   r   r(  rx   rR   reprr)  r*  r+  r   )r   r1  r   r:  r   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                  }d fd}| j                   j                  d|       | j                  | j                   j                  j                  d       |j                  d       |j                  d       d}| j                  dk\  rT| j                  t              |       | j                  j                  |       | j                  j                  d       y | j                  |       y )Nc                 
    | y r    r   )r0  r>   s    r   r1  z.TclTest.test_passing_tcl_obj.<locals>.testfuncW  s    Ar   r1  r;   ztestfunc $ar<   rr   rQ   )r!   r"   r<  r   r=  r)   r#   r*   rR   r   rS   )r   r,   r1  r?   r>   s       @r   test_passing_tcl_objzTclTest.test_passing_tcl_objT  s    kknn	 	!!*h744jAKL <q SVX.QXXx0QZZ2Q)r   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   rr   )r   )r   )r{   r   ){}r{   )z""rE  )z
a
 b	 c
 r>   r   r&  )s
   a
 b	 c
 rF  )u   a €r>      €)u   a 💻r>   u   💻)s   a €rG  )s   a 💻rI  )s   a rI  )s	   ab cd)r/   zc d)r'  r>   zb c)za b\ crJ  )rJ  rJ  )za 2)r>   r   )r>   rr   rK  )za 3.4)r>   3.4)r>   r%  rM  )r   r   r   r&  listrl   r   r$  r#  )r(   r   rL  )12rH  u   â¬rL  )   rH     €r$  dictcreaterP  rH  rQ  zwant objects? z, Tcl version: z, Tcl patchlevel: zarg=z, {)r!   r"   	splitlistrB   r   r   r#   r   info_patchlevelr*   r   )r   rU  rB   	testcasesr?   dbg_infor0  ress           r   test_splitlistzTclTest.test_splitlistf  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foor{   )-a
-somethingstatus)r>   	somethingr_  )r]  rl   rr   r   r^  r\  r_  rD  ra  rD  z-a b -c )r]  r   r   rN  r]  r^  r_  r   rR  rS  )	tkinter
_splitdictr!   r"   r*   r   RuntimeErrorrB   r#   )r   	splitdictr,   r0  r?   s        r   test_splitdictzTclTest.test_splitdict  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   )rB   )sr,   s    r   unpackz!TclTest.test_join.<locals>.unpack  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   rk  s    r   r   z TclTest.test_join.<locals>.check  s    VD%M2E:VD%$45u=VF4%	?$;<eDVF4%+=$>?GVF4%!+=$>?GVF4%Q+@$ABEJr   r{   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}
)rb  _joinr!   r"   )r   r   rm  r,   rk  s   ` @@@r   	test_joinzTclTest.test_join  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)7r   r   r   r$   r-   r1   r4   r7   r9   r@   rC   rG   rJ   rO   rT   rX   rZ   r]   r`   rb   rf   rh   rj   rp   rs   ru   rx   r   r   r   r   r   r   r   r   r   
skipUnlessr   r(  r   r   r   r   r	  r  r  r-  r?  rB  rZ  rf  ro  r   cpython_onlyru  r   r   r   r   r   %   s4   80
>N5=&2

:7A
*0

:3
.
1
36
*8;5#2*76 06<2: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_MAXrl   r   F)sizememusedry_runc                 j    d|z  }| j                  t        | j                  j                  dd|d       y )N r   indexr   )r   OverflowErrorr!   rB   )r   r{  r  s      r   test_huge_string_callz#BigmemTclTest.test_huge_string_call  s0     d
-)9)98WeUVWr   rr   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(   r  xr>   )r!   r"   r   r  r   r   r   r)   r   recordadderrorinforW   ro   r   r   r   rU  r<  r+  r=  r   r{  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(   r  r  )r!   r"   r   r  r   ro   r  s       r   test_huge_string_builtins2z(BigmemTclTest.test_huge_string_builtins2  sc    
 [[^^cDj -e<-e<-c5Ar   N)r   r   r   r$   r   rw  r   rv  r	   r
   
bigmemtestr  r  r  r   r   r   ry  ry    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   ry  c                  v    t         j                  r)t               } t        d| j	                  dd      d       y y )Nzpatchlevel =info
patchlevelT)flush)r   verboser   printrB   )r,   s    r   setUpModuler    s,    enchhv|<DI r   __main__) r   r   r   r   testr   test.supportr   r   import_moduler   rb  r   r   	_testcapir	   r
   ImportErrormaxsizetuplemapr   TCL_VERSIONsplitr   TestCaser   r   ry  r  r   mainr   r   r   <module>r     s      
 	  & " '=&&z2   +1 CX1177<=>
A(## 
A{
Gh {
G|.BH%% .BbJ zHMMO Q  +"{{*Gn+s   C C&%C&