
    	h~                        S SK r S \ l        S SKrS SKrS SKrS SKrS SKrS SKrS SKrS SK	r	S SK
r
S SKJrJrJr  S SKJr  S SKJrJrJrJrJrJrJr  S SKJr  \R4                  R6                  R9                  \R:                  R=                  \R:                  R?                  \ 5      SSS5      S	5         \RB                  " S
S SSSS9  \RN                  " S
S SS5        S r( " S S\RR                  5      r* " S S\RR                  5      r+ " S S\RR                  5      r, " S S\RR                  5      r-S r.S r/S r0S r1S r2S r3 " S S 5      r4S! r5S" r6S# r7S$ r8S% r9S& r:S' r;S7S( jr<S) r=S* r>S+ r?S, r@\R                  4S- jrBS. rCS/ rDS8S0 jrE " S1 S2\R4                  R6                  R                  5      rG\HS3:X  aQ  S4 rIS SKJrJ\JR                  " \IS55        S6\ R                  ;   a  Sr(\R4                  R6                  R                  5         gg! \RD                   a  r#Sr$\%" S\$ S35        \&" \$5      \#eSr#C#ff = f)9    N)CloseHandleGetCurrentProcessIdOpenProcess)	universal)VARIANTCastToDispatchBaseClassRecord	constantsgencacheregister_record_class)GetProcessMemoryInfoz..serversztest_pycomtest.pyPython.Test.PyCOMTest&{6BCDCB60-5605-11D0-AE5F-CADD4C000000}   F)
bForDemandz*** PyCOMTest is not installed ***
  PyCOMTest is a Python test specific COM client and server.
  It is likely this server is not installed on this machine
  To install the server, you must get the win32com sources
  and build it using MS Visual C++z6The PyCOMTest module can not be located or generated.

c                   ,    \ rS rSrSrSrSrSrSrSr	Sr
g)TestStruct1:    r   r   r   z&{7A4CE6A7-7959-4E85-A3C0-B41442FF0F67}N__name__
__module____qualname____firstlineno__	__slots__TLBIDMJVERMNVERLCIDGUID__static_attributes__r       nC:\Users\julio\OneDrive\Documentos\Trabajo\Ideas Frescas\venv\Lib\site-packages\win32com/test/testPyComTest.pyr   r   :        I4EEED3Dr%   r   c                   ,    \ rS rSrSrSrSrSrSrSr	Sr
g)TestStruct2C   r   r   r   r   &{78F0EA07-B7CF-42EA-A251-A4C6269F76AF}Nr   r   r%   r&   r)   r)   C   r'   r%   r)   c                   ,    \ rS rSrSrSrSrSrSrSr	Sr
g)ArrayOfStructsTestStructN   r   r   r   r   r+   Nr   r   r%   r&   r-   r-   N   r'   r%   r-   c                   ,    \ rS rSrSrSrSrSrSrSr	Sr
g)NotInTypeLibraryTestStructW   r   r   r   r   z&{79BB6AC3-12DE-4AC5-88AC-225C29A58043}Nr   r   r%   r&   r0   r0   W   r'   r%   r0   c                 @    U " U5      nX!:X  d   U  SU< SU< 35       eg )Nz failed - expected z, got r   )funcarggots      r&   check_get_setr6   `   s,    
s)C:G$23'wGG:r%   c           	      j     U" U5      n[        U SU< SU  SU< 35      e! U  a
  n S nAg S nAff = f)Nz
 with arg  didn't raise z - returned )AssertionError)excr3   r4   r5   es        r&   check_get_set_raisesr<   e   sN    
3i fJsg^C5SGL
 	
  s   " 22c                  V    [         (       a  U  H  n[        USS9  M     [        5         g g )N )end)verboseprint)argsr4   s     r&   progressrC   p   s%    wC#3  r%   c                      [        U 5      R                  5       S   n[        SU5        SU-   nU " U6 nXR:X  d   U SU< SU< 35       eg !   [        U 5      n N<= f)Nr   zTesting z	function z failed - result not z but )strsplitrC   )fnrB   resultfnNameprefrcs         r&   TestApplyResultrL   w   sk    R# Z D	TB<LD6!6vjbVLL<Rs   A Ac                 x     [        [        U 5      nX!:X  d   SU  SU SU 35       eg !   [        SU  S35      e= f)Nz	Constant z missingzConstant value wrong for z - got z	, wanted )getattrr   r9   )	constNamepyConstcomConsts      r&   TestConstantrR      sY    >9i0  
#I;ghZy	R>y8<==s   ( 9c                  r    [        5       n SnSn[        X-  SU 5      n[        U5      n[        U5        US   $ )Ni      FWorkingSetSize)r   r   r   r   )pidPROCESS_QUERY_INFORMATIONPROCESS_VM_READhprocessmem_infos        r&   GetMemoryUsager[      sE    

C &O4FsSH#H-H$%%r%   c                   ,    \ rS rSrS rS rS rS rSrg)RandomEventHandler   c                     0 U l         g Nfiredsselfs    r&   _InitRandomEventHandler._Init   s	    r%   c                 r     U R                   U==   S-  ss'   g ! [         a    SU R                   U'    g f = f)Nr   r   )rb   KeyError)rd   nos     r&   OnFireRandomEventHandler.OnFire   s5    	 KKOq O 	 DKKO	 s    66c                     [         R                  nXLa1  XR                  ;   d   eUS-   U:X  d   S5       eUS-   U:X  d   S5       eX%L d  [        U[        5      (       d   S5       eUS-   US-   4$ )Nr   z!expecting 'out1' param to be ID+1   z!expecting 'out2' param to be ID+2zmiddle param not a bool)	pythoncomMissingrb   
isinstancebool)rd   ri   a_boolout1out2ro   s         r&   OnFireWithNamedParams(RandomEventHandler.OnFireWithNamedParams   s     ##$$$6T>F#FF>6T>F#FF> Jvt$<$<W>WW<ax!!r%   c                     U R                   (       d  [        S5        U R                   R                  5        H  u  p[        SX4-  5        M     g )NzERROR: Nothing was received!zID %d fired %d times)rb   rA   itemsrC   )rd   firedIdri   s      r&   _DumpFiredsRandomEventHandler._DumpFireds   s;    {{01;;,,.KG+wm;< /r%   ra   N)	r   r   r   r   re   rj   ru   rz   r$   r   r%   r&   r]   r]      s     "=r%   r]   c                    [        S5        U R                  5       n[        X!5        [        S5        U R                  5       nUS S S:X  a  [	        US   S-
  5      S::  d	   SU45       eU R                  SS	S
S5      nUS S S:X  a  [	        US   S-
  5      S::  d	   SU45       eU R                  S5      nUS:X  d	   SU45       eU R                  SSS	5      nUSS  S:X  a  [	        US   S-
  5      S::  d	   SU45       e[        S5        [        U R                  U 5        [        S5        U R                  n[        USU5      n[        U R                  U 5      U5      (       d   SU R                  U 5      < 35       e[        S5        U R                  n[        USU5      nU R                  U 5      R                  U:X  d   S5       e[        S5        [        U R                  S5        [        U R                  S5        [        U R                  U 5        [        U R                  S5        [        U R                  S5        [        U R                  S5        [        U R                  S5        [        U R                  S5        [        U R                  S5        U R                  S5      S:X  d   S5       e[        U R                   S5        [        U R                   S5        [        U R                   S5        [        U R"                  S5        [        U R"                  S5        [        U R"                  S5        U R#                  S5      S:X  d   S5       eS nXUS-   S!4 H  n[        U R                  U5        M     [        S"5        U R%                  5       nUR&                  S#:X  a  [)        UR*                  5      S$:X  d   eU R-                  S5      S%:X  d   e[        S&5        U R/                  SS'S(S)S5        U R1                  5       S*:X  d   S+U R1                  5        35       e[        S,5        / n[3        U R4                  U4[7        U5      5        / S-Qn[3        U R4                  U4[7        U5      5        [3        U R8                  S.S5        [3        U R:                  [=        S/5      4S05        [        S15        S
U l        U R>                  U R@                  s=:X  a  S
:X  d#  O   S2U R>                   S3U R@                   35       eS4=U l        U l         U R>                  U R@                  s=:X  a  S4:X  d#  O   S2U R>                   S3U R@                   35       eS5nXl!        U RB                  U:X  d   S2U RB                   S6U S735       e[3        U RD                  S8S5        [3        U RD                  S9S5        [3        U RD                  S:S5        [3        U RD                  S;S5        [3        U RD                  S<S5        U R-                  S5      S%:X  d   e[G        S=S5        [G        S>S 5        [G        S?S@5        [G        SAS 5        [G        SBSC5        [G        SDS5        [G        SESF5        [        SG5        [H        RJ                  " 5       n	U	RM                  SSH9n	U	[N        RP                  " SSI9-   n
[3        U RR                  X4U	5        U RU                  SJ5      [N        RN                  RW                  SK5      :X  d   e[        SL5        S[X        l-        U R\                  S:X  d   SMU R\                  < 35       eSN HY  n[^        R`                  " U5      U l.        U R\                  [^        R`                  " U5      :X  a  MD   U SOU R\                  < 35       e   [^        R`                  " SP5      n[3        U Rb                  U4US	-  5        [^        R`                  " SQ5      n[3        U Rd                  X4X-   5        [        SR5        U Rf                  S:X  d   SMU Rf                  < 35       eSS HY  n[^        R`                  " U5      U l3        U Rf                  [^        R`                  " U5      :X  a  MD   U SOU Rf                  < 35       e   [^        R`                  " SP5      n[3        U Rh                  U4US	-  5        [^        R`                  " ST5      n[3        U Rj                  X4X-   5        [m        X5        [        SU5        [o        X5        g )VNzGetting counterzChecking default args)defr   r   gQ	@g{Gz?z)Did not get the optional values correctlyHirm      皙?)r   rm   r   z3Did not get the specified optional values correctlyr   )r    r   z*Did not get the optional2 values correctlyr   )r   rm   z4Did not get the specified optional2 values correctlyz!Checking getting/passing IUnknownz"Checking getting/passing IDispatchdefault_interfacezGetSetDispatch failed: z0Checking getting/passing IDispatch of known typezGetSetDispatch failedzChecking misc args   foo        l    zunsigned -1 failedil             zChecking structsc   Hello from C++foofoozChecking var argsThereFromPython)r   r   r   r   r   zVarArgs failed -zChecking arraysr   rm   r   r   )r   s   foo bar   zChecking propertieszProperty value wrong - got /l    ^e z (expected ))Unusedr   )r   r}   )r   T)r   r   )r   F
ULongTest1
ULongTest2	LongTest1i  	LongTest2	UCharTest   CharTest
StringTestu   Hello Wo®ldzChecking dates and times)microsecond)secondsgF@z1951-03-25 07:23:49+00:00zChecking currencyzExpecting 0, got )	1234.5678z1234.561234z got r   z	9012.3456zChecking decimal type)r   123456789.1234z-987654321.9876z0.1234z-0.1234z654.321z Checking win32com.client.VARIANT)8rC   GetSimpleCounterTestCounterTestOptionalsabsTestOptionals2r6   GetSetUnknown	__class__rN   rp   GetSetDispatchGetSetInterfaceGetSetVariant	GetSetIntGetSetUnsignedInt
GetSetLongGetSetUnsignedLong	GetStruct	int_valuerE   	str_valueDoubleString
SetVarArgsGetLastVarArgsrL   SetVariantSafeArraylenCheckVariantSafeArraySetBinSafeArray
memoryviewLongPropIntProp	ULongPropTestrR   win32timezonenowreplacedatetime	timedeltaEarliestDateMakeDatefromisoformatrn   __future_currency__CurrencyPropdecimalDecimalDoubleCurrencyAddCurrenciesDecimalPropDoubleDecimalAddDecimalsTestTrickyTypesWithVariantsTestPyVariant)ois_generatedcounterrK   expected_classbiglrcheckr   latervalv1v2s                 r&   
TestCommonr      s     "G&$%	
	Bcr7m#BrFTM(:d(B 3
E B 
q!S	)Bcr7l"s2b6C<'8D'@ =
C @ 
		!	BOJBOO	
		#tQ	'Bab6Y3r!us{#3t#; >
> ;
 01!//1%12 [[N^-@.QNa&&q)>:: 
!!"2"21"5!89: ?@[[N^-@.QNQ))^;T=TT;!"!//1%!//5)!//1% !++q!!++r"!++q!!%%q)!%%q)!%%z2 r"j0F2FF0!,,"!,,#!,,"!&&*!&&*!&&
3#z1G3GG1 C'7"aooq) #  	A;;"Q[[!15E!EEE>>% H,,, !LLw!4 "  / 
!**,-./  
AA))A4Q8AA))A4Q8		
 	
 A%%
;(?'A1E"#AJ::'a' 
%ajj\199+>'  AJ::(b( 
%ajj\199+>( EK;;% 
%akk]+eWAF AFFNA.AFFNA.AFF,a0AFFM1-AFF-q1>>% H,,,z*z*k*j)c"R /0'(



C
++!+
$C($$Q//EANNSL#6 ::()X->->-L-L#.     !$%I!>>QF"3ANN3E FF/ -~~!55V#eANNCU7VV5 0 
	%BA$$reR!V4		%BAOObXrw7$%==AD!21==2CDD  ,}} 44TU1==BS6TT4 
	%BAOObUBF3		#BAMMB8RW50/0!"r%   c                    U(       a  U R                  S5      nOH[        [        R                  [        R                  -  S5      nU R                  U5        UR
                  nUS:X  d   S5       eU(       a  U R                  S5      nOH[        [        R                  [        R                  -  S5      nU R                  U5        UR
                  nUS:X  d   S5       e/ SQnU(       a  UnO+[        [        R                  [        R                  -  U5      n[        U R                  U4[        U5      5        / SQnU(       a  UnO+[        [        R                  [        R                  -  U5      n[        U R                  U4[        U5      5        U(       a  UnO+[        [        R                  [        R                  -  U5      n[        U R                   U4[        U5      5        / S	QnS
nU(       a  [        U R"                  U4U5        Od[        [        R                  [        R                  -  [        R                  -  U5      nU R#                  U5        UR
                  U:X  d   S5       eU(       a  U R%                  S5      nOH[        [        R                  [        R                  -  S5      nU R%                  U5        UR
                  nUS:X  d   U5       e[&        R(                  " S5      nU(       a  U R+                  U5      nOH[        [        R                  [        R,                  -  U5      nU R+                  U5        UR
                  nX'S-  :X  d   e[&        R(                  " S5      nU(       a  U R/                  U5      nOH[        [        R                  [        R0                  -  U5      nU R/                  U5        UR
                  nX'S-  :X  d   eg )Nrm   r   zTestByRefVariant failedFooFooFoozTestByRefString failedr   )r   r   皙@ffffff
@)r   r   r   皙@)r   r   gffffff@g!@z)ChangeDoubleSafeArray got the wrong valuer   r   r   r   )TestByRefVariantr   rn   VT_BYREF
VT_VARIANTvalueTestByRefStringVT_BSTRVT_ARRAYVT_UI1rL   r   r   VT_R8SetDoubleSafeArrayVT_R4SetFloatSafeArrayChangeDoubleSafeArrayDoubleInOutStringr   r   DoubleCurrencyByValVT_CYDoubleDecimalByVal
VT_DECIMAL)r   r   r5   vvalsr4   expectedr   s           r&   r   r   w  s      #I&&)=)==qA	1gg!8...8&I&&):)::EB	!gg(?444? Di((9+;+;;TBA%%vs4y9 Di((9??:DAA((3&#d)<i((9??:DAA''#T;D3H//$(Ci((9+=+==	OQUV	$yyH$Q&QQ$!!%(I&&):)::EB	Agg(?C?
//+
&C##C(I&&8#>	a gg'>>
//*
+C""3'I&&)=)==sC	Qgg'>>r%   c                  P   [        S5        SS Kn U R                  R                  R	                  S5      n[        US5        U R                  R                  R	                  S5      n[        US5         [        [        UR                  S5        [        S5      e! [        R                   a)  nUR                  [        R                  :w  a  e  S nAOS nAff = f[!        [        R"                  [        R$                  -  S5      n[!        [        R&                  [        R$                  -  S	5      n[!        [        R(                  [        R$                  -  S
5      nUR+                  XEU5        UR,                  S:X  d   U5       eUR,                  S:X  d   eUR,                  S:X  d   eg )NzTesting Dynamicr   PyCOMTest.PyCOMTestFPyCOMTest.SimpleCounterr   zno exception raised       @Tr         @   )rC   win32com.client.dynamicclientdynamicDumbDispatchr   r   r<   
ValueErrorr   r9   rn   	com_errorhresultwinerrorDISP_E_TYPEMISMATCHr   r   r   VT_BOOLVT_I4	TestInOutr   )win32comr   r   r:   arg1arg2arg3s          r&   TestDynamicr    sE   ",,-BCAq%oo%%223LMGZe<233 ;;(666 7 9??Y%7%77=D9$$y'9'994@D9??Y%7%77;DKKD!::"d"::::??s   3&B C-CCc                 x   [        S5        U R                  U5      n[        U[        5      (       a  [	        U5      [        L d   eO[	        U5      [
        R                  L d   eUR                  S:X  a  [        UR                  5      S:X  d   eUR                  S:X  a  [        UR                  5      S:X  d   eg )Nz.Checking struct byref as [ in, out ] parameterr   r   d   z Nothing is as constant as change)
rC   ModifyStructrp   r   typern   
com_recordr   rE   r   )r   r   mod_rs      r&   TestStructByrefr    s    =>NN1E ![!!E{k)))E{i22222;;"Q[[!15E!EEE 	3 $FF	GFr%   c                    [        S5        / n[        S5       H  n[        U[        5      (       a  [	        5       n[        U5      [        L d   eO*[        SU 5      n[        U5      [        R                  L d   eSUl	        US-   Ul
        UR                  U5        M     X!l        WS-   Ul        U R                  U5      (       d   eg )Nz0Testing struct with SAFEARRAY(VT_RECORD) fields.r   r   zThis is record numberr   )rC   rangerp   r-   r   r  r
   rn   r  r   r   appendarray_of_records	rec_countVerifyArrayOfStructs)r   test_recrec_listirecs        r&   TestArrayOfStructsr     s    ?@H1X h 899-C9+++*C9	 4 4444/A  !)QH!!(++++r%   c            	      T   SSK Jn   U " S5      n[        US5        U " S5      n[        US5        SSKJn  U" S5      " 5       n[        US5        [        U5      (       d   eU" S5      " 5       n[        US5        [        S	5        UR                  5       n[        U5      [        R                  L d   e[        X5        [        S
U5      n[        U5      [        R                  L d   e[        X5        [        S5         [        5       n[         e! ["         a     O[$         a  n	[         U	eS n	A	ff = f['        [        5        ['        [(        5        [        5       n[        U5      [        L d   e[        SU5      n[        U5      [        L d   e[+        [,        [&        [.        5        [+        ["        [&        [0        5        [        S5        UR                  5       n[        U5      [        L d   e[        X5        [)        5       n[        U5      [(        L d   e[        X5        [        S5        UR                  5       R3                  5       S   S   n
[        U
5      nUR4                  S:X  a  [7        UR8                  5      S:X  d   eUR;                  5       u  p[=        U[>        5      (       a  [=        U[>        5      (       d   SU SU S35       eAA[+        [@        URB                  S5        [+        [@        URD                  S5        [+        [,        URB                  S5        [+        [,        URD                  S5         URG                  S5        [!        S5      e! ["         a     Of = f URG                  S5        [!        S5      e! ["         a     Of = fURI                  S 5        [K        URH                  S[M        [O        S5      5      5        [M        [O        S5      5      [M        [O        S5      5      [M        [O        S5      5      4n[K        URP                  SU5        / n[K        URR                  U4[U        U5      5        / SQn[K        URR                  U4[U        U5      5        / SQn[K        URV                  U4[U        U5      5        [K        URX                  U4[U        U5      5        [[        5       nUR]                  S 5        [[        5       nUU-
  nUS!:  d   S"US!-   S#35       e[K        UR^                  [`        Rb                  4[`        Rb                  5        [K        URd                  [`        Rb                  4[`        Rb                  5        [K        URf                  [`        Rb                  4[`        Rb                  5        [K        URh                  [`        Rb                  4[`        Rb                  5        [K        URj                  [`        Rl                  4[`        Rl                  5        [K        URj                  [`        Rn                  4[`        Rn                  5        [K        URj                  [`        Rp                  4[`        Rp                  5        [K        URj                  [`        Rr                  4[`        Rr                  5        [K        URj                  [`        Rt                  4[`        Rt                  5        [K        URv                  S$S%5        URy                  SS5        UR{                  S5      S:X  d   UR}                  S5      5       e[        US&5      nUU:X  d   S'5       e[        S(5        [        R                  R                  U[        5      n[        UU5        [        R                  R                  U[        5      n[        UU5        [        S)5        g )*Nr   )EnsureDispatchr   Tr   )GetClassz&{8EE0C520-5605-11D0-AE5F-CADD4C000000}z&{B88DD310-BAE8-11D0-AE86-76F2C1000000}z/Testing baseclass pythoncom.com_record structs.r)   z8Testing registration of pythoncom.com_record subclasses.r   z+Testing subclasses of pythoncom.com_record.z:Testing initialization of pythoncom.com_record subclasses.r      r   r   z6GetMultipleInterfaces did not return instances - got 'z', ''r   r   zExpected a type errori  r`   
      )NNNr   )r   rm   r   l        i   i   zMemory not freed - delta z MB)r   Tr   )r   Fr   
IPyCOMTestz+CastTo should have returned the same objectzTesting connection pointszFinished generated .py test.)Fwin32com.client.gencacher"  r   r   win32com.client.CLSIDToClassr#  rq   rC   r   r  rn   r  r  r
   r   r   r9   	TypeError	Exceptionr   r-   r<   r  r)   r0   
__reduce__r   rE   r   GetMultipleInterfacesrp   r	   OverflowErrorr   r   r   GetSimpleSafeArrayrL   tupler  GetSafeArraysSetIntSafeArrayr   SetLongLongSafeArraySetULongLongSafeArrayr[   GetByteArrayTest2r   Attr2Test3Test4Test5Test6	WideAttr1	WideAttr2	WideAttr3	WideAttr4	WideAttr5r	  SetParamProp	ParamProp	paramPropr   r
  r   DispatchWithEventsr]   
TestEvents
WithEvents)r"  r   r   r#  	coclass_ococlassr   r  r_subr;   bufi1i2resultCheckr   ll
mem_before	mem_afterdeltao2handlers                        r&   TestGeneratedrU  
  s   7,-Aq$67G 6ABDIy$ 	??? ?@BG >?	A7i*****AmQ'H>Y11111q#GH    $!#$
 +&23ME;+%%%=!$E;+%%% %:KH$9;UV :;	A 7k!!!A')H>5555q# IJ
++-
"
"
$Q
'
*C3H#H,>,>(?CS(SSS $$&FBb+,,B@Q1R1R 
@DANR 	
 Z@jA Q[[%8Q\\59	e$455 	c"455  A(('5r3CDa/5r#3U595EEKAOO%7E
AA%%tSV4AA%%tSV4	BA**RE3r7;A++bUCG<  !JNN#$ I
"E;V";E[<Q;RRU VV AGGioo/AAGGioo/AAGGioo/AAGGioo/AAGGi113Y5H5HIAGGi113Y5H5HIAGGi113Y5H5HIAGGi113Y5H5HIAGGi113Y5H5HIAKKANN1a;;q>Q.A. 
<	 B7AAA7 ()		+	+A/A	BBr2oo((,>?Gq'+,sB   >
D 
D/	D/#D**D/M 
M*)M*.N
 

NNc                    / nUR                  5          [        S5       H$  nU R                  5       nUR                  U5        M&     [        R
                  " S5        U H  nU R                  U5        M     UR                  5         UR                  5         g ! U H  nU R                  U5        M     UR                  5         UR                  5         f = f)Nr   g      ?)	re   r  Startr  timesleepStoprz   close)r   rT  sessionsr  sessions        r&   rF  rF    s    HMMO
qAggiGOOG$  	

3  GFF7O    GFF7O  s   A	B <Cc                    U(       a  U R                  U5      u  pEO[        [        R                  [        R                  -  S5      n[        [        R
                  [        R                  -  S5      nU R                  X&U5        UR                  nUR                  nUb	  U" U5        g XBR                  :X  d   XBR                  45       e[        UR                  [        [        45      (       aI  UR                   Vs/ s H&  n[        U[        5      (       a  UR                  OUPM(     n	n[        U5      nOUR                  n	[        U	5      [        U5      :X  d   [        U	5      [        U5      45       eX:X  d   X45       eg s  snf )Nr   )GetVariantAndTyper   rn   VT_UI2r   r   r   varianttyperp   r1  listr  )
r   r   r   checkervtr5   var_vt
var_resultr   r   s
             r&   _TestPyVariantrg    s:   %%c*C ))I,>,>>BY11I4F4FFJ
	C4\\ 72"77  #))eT]++CF99M9aJq'2299M3i		;$s)#=d5k49%==#<%%%< Ns   <-Fc                 X     [        XU5        [        SU< SU 35      e! U a     g f = f)NzSetting r8   )rg  r9   )r   r   r   r:   s       r&   _TestPyVariantFailsri    s;    q,xwnSEBCC s     ))c           	         [        X[        [        R                  S5      5        [        X[        [        R                  [        R
                  -  / SQ5      5        [        X[        [        R                  S5      5        [        U U[        [        R                  [        R                  -  SS/5      5        S n[        X[        [        R                  U 5      U5        [        X[        [        R                  [        R                  -  U /5      5        [        [        R                  [        R                  -  [        [        R
                  S5      [        [        R
                  S5      [        [        R
                  S5      /5      n[        XU5        [        X[        [        R                  S5      [        5        g )	Nr   )r   rm   r   hellotherec                 |    [        U R                  [        R                  [        R                     5      (       d   eg r`   )rp   _oleobj_rn   TypeIIDsIID_IDispatch)r5   s    r&   check_dispatch%TestPyVariant.<locals>.check_dispatch  s*    #,,	(:(:9;R;R(STTTTr%   rm   r   r   )rg  r   rn   r   r   VT_UI4r   VT_DISPATCHr   ri  r  )r   r   rq  r   s       r&   r   r     sI   1GI,<,<a$@A	!3!3i6F6F!F	R 1GI,=,=w$GH		""Y%6%66'8JKU 1GI,A,A1$E~V	!3!3i6K6K!KaSQ 	Y111I$$a(I$$a(I$$a(	
	A 1A& 1A1A5)I:Vr%   c                 h   [        SU < 35        SS Kn[        S5       H_  n[        UR                  5       [	        U 5      -  5      n U(       a  U R                  US-   5      nOX   nXTS-   :X  d   SU SU< 35       eMa     SnU(       a^  U R                  S5        SU l	        U R                  SS5        U R                  S:X  d   S	5       eU R                  S5      S:X  d   S	5       eO SU l        S
U l        U R                  S:w  d  U R                  S
:w  a  [        S5        U(       aA  U R                  5       nUS   S:X  a	  US   S
:X  d   S5       eU R!                  US   US   5        U  H  nUS-  nM
     U[	        U 5      :X  d   S5       eUS
:X  d   S5       e [#        U 5      R$                  R'                  5       n U R+                  5         SnU  H  nUS-  nM
     US
:X  d   SU S35       e[        S5        g ! [         a    [        SU 35      ef = f! [(         a    [        S5         g f = f)NzTesting counter r   2   r   zRandom access into element z failed - return was z+** IndexError accessing collection element rm   zUnexpected property set value!r&  z.** Error - counter did not keep its propertiesz8** Error - counter did not give the same properties backz9*** Length of counter and loop iterations don't match ***z,*** Unexpected number of loop iterations ***z8Finished testing counter (but skipped the iterator stuffz/*** Unexpected number of loop iterations - got z ***zFinished testing counter)rC   randomr  intr   Item
IndexErrorr9   SetTestPropertyTestPropertyTestPropertyWithDefTestPropertyNoDefLBoundUBoundrA   	GetBounds	SetBoundsiter_iter_CloneAttributeErrorReset)r   bIsGeneratedrw  r  numretboundsitems           r&   r   r     s]   {+,2Y&--/CL01	V ll37+l'> -cU2GwO>  C" 1%**a/Q1QQ/((+q0R2RR0 GNGN~~gnn2>?""$ayA~&)r/ 	
F	
1 	&)VAY/q #g, C "9DDD9w-&&,,.
 MMO
Cq "9QGuDQQ9'(Y  	V #Nse!TUU	VF  KLs   6G=#H =HH10H1c                 <    U R                  S5      S:X  d   S5       eg )Nr   r   zcouldn't foofoo)r   )obs    r&   TestLocalVTabler  =  s    ??5!X-@/@@-r%   c                 l   [         R                  R                  S5      n[        U5        [         R                  R                  S5      n[        R
                  " SS U [        R                  5      n UR                  S 5        UR                  U5        g ! [        R                   a
  n S nAN+S nAff = f)Nr   r   )	r
  r   Dispatchr  rn   CoCreateInstanceIID_IUnknownTestMyInterfacer  )clsctxr  testertesteedetailss        r&   
TestVTabler  F  s     
	!	!"9	:BB__%%&;<F''vy/E/EFt$ 6"  s   2B B3.B3c                      [         R                  R                  S5      n [        R                  S   nSn[        R
                  n [        R                  " US X15      ng ! [         a     g f = f)Nr   r(  )r
  r   r  rn   InterfaceNamesCLSCTX_SERVERr  r+  )r  iidclsidr  r  s        r&   TestVTable2r  Y  sf     
	!	!"9	:B

"
"<
0C#E$$F++E4E  	s   A 
A,+A,c                     [         R                  n [         R                  " SS U [         R                  5      nUR	                  [         R
                  5        UR	                  [         R                  5        UR	                  [         R                  5        [         R                  S   n UR	                  U5        g ! [         a     g f = f)NzPython.Test.PyCOMTestMIr(  )
rn   r  r  r  QueryInterfaceIID_IStreamIID_IStoragerp  r  r+  )r  r  r  s      r&   TestVTableMIr  i  s    $$F		#	#!41G1G
B i++,i,,-i--.

"
"<
0C
#  	s   )B; ;
CCc                 $   [         R                  R                  S5      nU (       a,  [         R                  R                  S[        R                  S9nSS/n[        U5       H+  n[        X@S:g     US-   U4-  5        UR                  5         M-     g )Nr   r   )r  zCTesting QueryInterface without long-lived local-server #%d of %d...z@Testing QueryInterface with long-lived local-server #%d of %d...r   r   )r
  r   r  rn   CLSCTX_LOCAL_SERVERr  rC   TestQueryInterface)long_lived_server
iterationsr  t0promptr  s         r&   r  r  ~  s    __%%&;<F__%%#I,I,I & 

 	NJF
 :Q./1q5*2EEF!!# r%   c                   >    \ rS rSrS rS rS rS rS rS r	S r
S	rg
)Testeri  c                 |    [        S5       H-  n[        SUS-   -  5        [        [        R                  5        M/     g )Nr   z!Testing VTables in-process #%d...r   )r  rC   r  rn   CLSCTX_INPROC_SERVERrd   r  s     r&   testVTableInProcTester.testVTableInProc  s0    qA8AEBCy556 r%   c                 |    [        S5       H-  n[        SUS-   -  5        [        [        R                  5        M/     g )Nr   z%Testing VTables out-of-process #%d...r   )r  rC   r  rn   r  r  s     r&   testVTableLocalServerTester.testVTableLocalServer  s0    qA<AFGy445 r%   c                 <    [        S5       H  n[        5         M     g Nr   )r  r  r  s     r&   testVTable2Tester.testVTable2  s    qAM r%   c                 <    [        S5       H  n[        5         M     g r  )r  r  r  s     r&   testVTableMITester.testVTableMI  s    qAN r%   c                 4    [        SS5        [        SS5        g )Nr      r   )r  rc   s    r&   testMultiQueryInterfaceTester.testMultiQueryInterface  s    1a  	1a r%   c                     [        5         g r`   )r  rc   s    r&   testDynamicTester.testDynamic  s    r%   c                     [        5         g r`   )rU  rc   s    r&   testGeneratedTester.testGenerated  s    r%   r   N)r   r   r   r   r  r  r  r  r  r  r  r$   r   r%   r&   r  r    s%    76
	!r%   r  __main__c                      g r`   r   r   r%   r&   NullThreadFuncr    s    r%   r   z-vr`   )r   r$  )Nsyscoinit_flagsr   r   osrX  rn   r
  win32com.test.utilr   r  win32apir   r   r   r   win32com.clientr   r   r	   r
   r   r   r   win32processr   testutilRegisterPythonServerpathjoindirname__file__EnsureModuler  error	importMsgrA   RuntimeErrorRegisterInterfacesr@   r  r   r)   r-   r0   r6   r<   rC   rL   rR   r[   r]   r   r   r  r  r   rU  rF  rg  ri  r   r   r  
CLSCTX_ALLr  r  r  r  TestCaser  r   r  _thread	start_newargvtestmainr   r%   r&   <module>r     sL       	       B B    . 	   ' 'GGLL*D)=PQ
-0!Qe 
  Eq!Q O

4)&& 44)&& 44y33 44!5!5 4H

M&= =@}#@JZ@$,(Z-z &8WD=)@A  ** #& *$$#X]](( #L z nb)sxxMM! ]  -&I
 
CI;b
QR
y
!u,-s   4H H=!H88H=