
    %
i~                     $   d dl Z d e _        d dlZd dlZd dlZd dlZd dlZd dlZd dlZd dl	Z	d dl
Z
d dlmZmZmZ d dlmZ d dlmZmZmZmZmZmZmZ d dlmZ ej        j                            ej                            ej                            e           ddd          d	           	  ej!        d
d ddd           n/# ej"        $ r"Z#dZ$ e%de$ d            e&e$          e#dZ#[#ww xY w ej'        d
d dd           d Z( G d dej)                  Z* G d dej)                  Z+ G d dej)                  Z, G d dej)                  Z-d Z.d Z/d Z0d Z1d Z2d Z3 G d d           Z4d! Z5d" Z6d# Z7d$ Z8d% Z9d& Z:d' Z;d8d(Z<d) Z=d* Z>d+ Z?d, Z@ejA        fd-ZBd. ZCd/ ZDd9d1ZE G d2 d3ej        j        jF                  ZGeHd4k    rCd5 ZId dlJZJ eJjK        eId6           d7e jL        v rdZ(ej        j        M                                 dS dS ):    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                   &    e Zd ZdZdZdZdZdZdZdS )TestStruct1 r   r   r   z&{7A4CE6A7-7959-4E85-A3C0-B41442FF0F67}N	__name__
__module____qualname__	__slots__TLBIDMJVERMNVERLCIDGUIDr       C:\Users\Dell Inspiron 16\Desktop\tws\AgrotaPowerBi\back-agrota-powerbi\mcp-client-agrota\venv\Lib\site-packages\win32com/test/testPyComTest.pyr   r   :   ,        I4EEED3DDDr"   r   c                   &    e Zd ZdZdZdZdZdZdZdS )TestStruct2r   r   r   r   &{78F0EA07-B7CF-42EA-A251-A4C6269F76AF}Nr   r   r"   r#   r&   r&   C   r$   r"   r&   c                   &    e Zd ZdZdZdZdZdZdZdS )ArrayOfStructsTestStructr   r   r   r   r'   Nr   r   r"   r#   r)   r)   N   r$   r"   r)   c                   &    e Zd ZdZdZdZdZdZdZdS )NotInTypeLibraryTestStructr   r   r   r   z&{79BB6AC3-12DE-4AC5-88AC-225C29A58043}Nr   r   r"   r#   r+   r+   W   r$   r"   r+   c                 L     | |          }||k    sJ |  d|d|            d S )Nz failed - expected z, got r   )funcarggots      r#   check_get_setr0   `   s<    
$s))C#:::$GG3GGGG:::::r"   c           	      t    	  ||          }t          | d|d|  d|          # | $ r}Y d }~d S d }~ww xY w)Nz
 with arg  didn't raise z - returned )AssertionError)excr-   r.   r/   es        r#   check_get_set_raisesr6   e   sw    
d3ii LLsLLCLLSLL
 
 	
    s   ' 77c                  `    t           r&| D ]}t          |d           t                       d S d S )N )end)verboseprint)argsr.   s     r#   progressr=   p   sF      	  	 C#3 r"   c                     	 t          |                                           d         }n#  t          |           }Y nxY wt          d|           d|z   } | | }||k    sJ | d|d|            d S )Nr   zTesting z	function z failed - result not z but )strsplitr=   )fnr<   resultfnNameprefrcs         r#   TestApplyResultrF   w   s    R#RZ   D	TB<<<DLLvLLbLL<<<<<s   '* =c                     	 t          t          |           }n#  t          d|  d          xY w||k    sJ d|  d| d|             d S )Nz	Constant z missingzConstant value wrong for z - got z	, wanted )getattrr   r3   )	constNamepyConstcomConsts      r#   TestConstantrL      su    >9i00><<<<===wRIRRhRRRR s    -c                      t                      } d}d}t          ||z  d|           }t          |          }t          |           |d         S )Ni      FWorkingSetSize)r   r   r   r   )pidPROCESS_QUERY_INFORMATIONPROCESS_VM_READhprocessmem_infos        r#   GetMemoryUsagerU      sV    


C &O4FsSSH#H--H$%%r"   c                   &    e Zd Zd Zd Zd Zd ZdS )RandomEventHandlerc                     i | _         d S N)firedsselfs    r#   _InitzRandomEventHandler._Init   s    r"   c                 h    	 | j         |xx         dz  cc<   d S # t          $ r d| j         |<   Y d S w xY w)Nr   r   )rZ   KeyError)r\   nos     r#   OnFirezRandomEventHandler.OnFire   sO    	 KOOOq OOOOO 	  	  	 DKOOOO	 s    11c                     t           j        }||ur1|| j        v sJ |dz   |k    s
J d            |dz   |k    s
J d            ||u st          |t                    s
J d            |dz   |dz   fS )Nr   z!expecting 'out1' param to be ID+1   z!expecting 'out2' param to be ID+2zmiddle param not a bool)	pythoncomMissingrZ   
isinstancebool)r\   r`   a_boolout1out2re   s         r#   OnFireWithNamedParamsz(RandomEventHandler.OnFireWithNamedParams   s     #W$$$$6T>>>#F>>>6T>>>#F>>>  Jvt$<$<  >W  <ax!!r"   c                     | j         st          d           | j                                         D ]\  }}t          d||fz             d S )NzERROR: Nothing was received!zID %d fired %d times)rZ   r;   itemsr=   )r\   firedIdr`   s      r#   _DumpFiredszRandomEventHandler._DumpFireds   sa    { 	20111;,,.. 	= 	=KGR+wm;<<<<	= 	=r"   N)r   r   r   r]   ra   rk   ro   r   r"   r#   rW   rW      sP               " " "= = = = =r"   rW   c                    t          d           |                                 }t          ||           t          d           |                                 }|d d         dk    rt	          |d         dz
            dk    sJ d|f            |                     dd	d
d          }|d d         dk    rt	          |d         dz
            dk    sJ d|f            |                     d          }|dk    sJ d|f            |                     ddd	          }|dd          dk    rt	          |d         dz
            dk    sJ d|f            t          d           t          | j        |            t          d           | j        }t          |d|          }t          |                     |           |          s J d|                     |                       t          d           | j        }t          |d|          }|                     |           j        |k    s
J d            t          d           t          | j        d           t          | j        d           t          | j        |            t          | j        d           t          | j        d           t          | j        d           t          | j        d           t          | j        d           t          | j        d           |                     d          dk    s
J d            t          | j        d           t          | j        d           t          | j        d           t          | j        d           t          | j        d           t          | j        d           |                     d          dk    s
J d            d }||dz   d!fD ]}t          | j        |           t          d"           |                                 }|j        d#k    rt)          |j                  d$k    sJ |                     d          d%k    sJ t          d&           |                     dd'd(d)d           |                                 d*k    sJ d+|                                              t          d,           g }t3          | j        |ft7          |                     g d-}t3          | j        |ft7          |                     t3          | j        d.d           t3          | j        t=          d/          fd0           t          d1           d
| _        | j        | j         cxk    rd
k    sn J d2| j         d3| j                      d4x| _        | _         | j        | j         cxk    rd4k    sn J d2| j         d3| j                      d5}|| _!        | j!        |k    sJ d2| j!         d6| d7            t3          | j"        d8d           t3          | j"        d9d           t3          | j"        d:d           t3          | j"        d;d           t3          | j"        d<d           |                     d          d%k    sJ tG          d=d           tG          d>d            tG          d?d@           tG          dAd            tG          dBdC           tG          dDd           tG          dEdF           t          dG           tI          j%                    }	|	&                    dH          }	|	tO          j(        dI          z   }
t3          | j)        |	|
f|	           | *                    dJ          tN          j'        +                    dK          k    sJ t          dL           dtX          _-        | j.        dk    sJ dM| j.                    dND ]L}t_          j0        |          | _.        | j.        t_          j0        |          k    sJ | dO| j.                    Mt_          j0        dP          }t3          | j1        |f|d	z             t_          j0        dQ          }t3          | j2        ||f||z              t          dR           | j3        dk    sJ dM| j3                    dSD ]L}t_          j0        |          | _3        | j3        t_          j0        |          k    sJ | dO| j3                    Mt_          j0        dP          }t3          | j4        |f|d	z             t_          j0        dT          }t3          | j5        ||f||z              tm          | |           t          dU           to          | |           d S )VNzGetting counterzChecking default args)defr   r   gQ	@g{Gz?z)Did not get the optional values correctlyHirc      皙?)rs   rc   rt   z3Did not get the specified optional values correctlyr   )r    r   z*Did not get the optional2 values correctlyr   )rs   rc   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)rs   r~   r   r   r   zVarArgs failed -zChecking arraysr   rc   rt   rx   )r   s   foo bar   zChecking propertieszProperty value wrong - got /l    ^e z (expected ))Unusedr{   )r   rq   )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)8r=   GetSimpleCounterTestCounterTestOptionalsabsTestOptionals2r0   GetSetUnknown	__class__rH   rf   GetSetDispatchGetSetInterfaceGetSetVariant	GetSetIntGetSetUnsignedInt
GetSetLongGetSetUnsignedLong	GetStruct	int_valuer?   	str_valueDoubleString
SetVarArgsGetLastVarArgsrF   SetVariantSafeArraylenCheckVariantSafeArraySetBinSafeArray
memoryviewLongPropIntProp	ULongPropTestrL   win32timezonenowreplacedatetime	timedeltaEarliestDateMakeDatefromisoformatrd   __future_currency__CurrencyPropdecimalDecimalDoubleCurrencyAddCurrenciesDecimalPropDoubleDecimalAddDecimalsTestTrickyTypesWithVariantsTestPyVariant)ois_generatedcounterrE   expected_classbiglrcheckr   latervalv1v2s                 r#   
TestCommonr      s#
     ""G&&&$%%%	
		Bcrc7m##BrFTM(:(:d(B(B(B3
E(B(BB 
q!S	)	)Bcrc7l""s2b6C<'8'8D'@'@'@=
C'@'@@ 
		!		BJBO	
		#tQ	'	'Babb6Y3r!us{#3#3t#;#;#;>
>#;#;;
 0111!/1%%%1222 [N^-@.QQNa&&q))>::  9!"2"21"5"599 : ?@@@[N^-@.QQNQ)^;;;=T;;;!"""!/1%%%!/5)))!/1%%% !+q!!!!+r"""!+q!!!!%q)))!%q)))!%z222 r""j0002F000!,"""!,###!,"""!&***!&***!&
333##z1113G111 C#'7" * *aoq))))   	A;"Q[!1!15E!E!E!EE>>%  H,,,, !!!LLw!444 "    /!**,,..   
AA)A4Q888AA)A4Q888		
 	
   A%
;(?(?'A1EEE"###AJ:''''a'''''>aj>>19>> (''  AJ:((((b(((((>aj>>19>> )(( EAK;%FakFFeFFF   AFNA...AFNA...AF,a000AFM1---AF-q111>>%  H,,,,z***z***k***j)))c"""R   /000'(((



C
++!+
$
$C($Q////EANS%L#666 ::())X->-L-L#. .      !!!$%I!>Q FAN F F/ W W --~!5!5555#7V7VAN7V7V5555		%	%BA$reR!V444		%	%BAOb"XrBw777$%%%=AD1=DD U U  ,,} 4 44446T6T1=6T6T4444		%	%BAObUBF333		#	#BAMB8R"W555<000/000!\"""""r"   c                 \   |r|                      d          }nCt          t          j        t          j        z  d          }|                      |           |j        }|dk    s
J d            |r|                     d          }nCt          t          j        t          j        z  d          }|                     |           |j        }|dk    s
J d            g d}|r|}n't          t          j        t          j	        z  |          }t          | j        |ft          |                     g d}|r|}n't          t          j        t          j        z  |          }t          | j        |ft          |                     |r|}n't          t          j        t          j        z  |          }t          | j        |ft          |                     g d	}d
}|rt          | j        |f|           n^t          t          j        t          j        z  t          j        z  |          }|                     |           |j        |k    s
J d            |r|                     d          }nCt          t          j        t          j        z  d          }|                     |           |j        }|dk    s
J |            t'          j        d          }|r|                     |          }nCt          t          j        t          j        z  |          }|                     |           |j        }||dz  k    sJ t'          j        d          }|r|                     |          }nCt          t          j        t          j        z  |          }|                     |           |j        }||dz  k    sJ d S )Nrc   rx   zTestByRefVariant failedFooFooFoozTestByRefString failedr   )r   ru   皙@ffffff
@)ru   r   r   皙@)r   r   gffffff@g!@z)ChangeDoubleSafeArray got the wrong valuery   r}   r   r   )TestByRefVariantr   rd   VT_BYREF
VT_VARIANTvalueTestByRefStringVT_BSTRVT_ARRAYVT_UI1rF   r   r   VT_R8SetDoubleSafeArrayVT_R4SetFloatSafeArrayChangeDoubleSafeArrayDoubleInOutStringr   r   DoubleCurrencyByValVT_CYDoubleDecimalByVal
VT_DECIMAL)r   r   r/   vvalsr.   expectedr   s           r#   r   r   w  s       ##I&)==qAA	1g!888.888 &&I&)::EBB	!g(???4??? <<D Ci(9+;;TBBA%vs4yy999 D Bi(9?:DAAA(3&#d))<<< Bi(9?:DAAA'#T;;;D3H R/$(CCCCi(9+==	OQUVV	$$$yH$$$&Q$$$ !!%((I&)::EBB	Ag(???C???
/+
&
&C ##C((I&8#>>	a   g#'>>>>
/*
+
+C ""3''I&)==sCC	Qg#'>>>>>>r"   c                     t          d           dd l} | j        j                            d          }t          |d           | j        j                            d          }t          |d           	 t          t          |j	        d           t          d          # t          j        $ r }|j        t          j        k    r Y d }~nd }~ww xY wt!          t          j        t          j        z  d          }t!          t          j        t          j        z  d	          }t!          t          j        t          j        z  d
          }|                    |||           |j        dk    s
J |            |j        dk    sJ |j        dk    sJ d S )NzTesting Dynamicr   PyCOMTest.PyCOMTestFPyCOMTest.SimpleCounterry   zno exception raised       @Trx         @   )r=   win32com.client.dynamicclientdynamicDumbDispatchr   r   r6   
ValueErrorr   r3   rd   	com_errorhresultwinerrorDISP_E_TYPEMISMATCHr   r   r   VT_BOOLVT_I4	TestInOutr   )win32comr   r   r4   arg1arg2arg3s          r#   TestDynamicr    s   """",,-BCCAq%o%223LMMGZe<<<2333   ;(666 76666 9?Y%77==D9$y'994@@D9?Y%77;;DKKdD!!!:d::??????s   3*B C,CCc                 x   t          d           |                     |          }t          |t                    rt	          |          t          u sJ nt	          |          t
          j        u sJ |j        dk    rt          |j	                  dk    sJ |j        dk    rt          |j	                  dk    sJ d S )Nz.Checking struct byref as [ in, out ] parameterr{   r|   d   z Nothing is as constant as change)
r=   ModifyStructrf   r   typerd   
com_recordr   r?   r   )r   r   mod_rs      r#   TestStructByrefr	    s    =>>>NN1E ![!! 3E{{k)))))E{{i22222;"Q[!1!15E!E!E!EE 	3  $FFFF	GFFr"   c                    t          d           g }t          d          D ]}t          |t                    r't	                      }t          |          t          u sJ n-t          d|           }t          |          t          j        u sJ d|_	        |dz   |_
        |                    |           ||_        |dz   |_        |                     |          sJ d S )Nz0Testing struct with SAFEARRAY(VT_RECORD) fields.rt   r   zThis is record numberr   )r=   rangerf   r)   r   r  r
   rd   r  r   r   appendarray_of_records	rec_countVerifyArrayOfStructs)r   test_recrec_listirecs        r#   TestArrayOfStructsr    s    ?@@@H1XX   h 899 	5--C99+++++**C99	 44444/A (HQH!!(+++++++r"   c            	         ddl m}   | d          }t          |d            | d          }t          |d           ddlm}   |d                      }t          |d           t          |          sJ   |d                      }t          |d           t          d	           |                                }t          |          t          j        u sJ t          ||           t          d
|          }t          |          t          j        u sJ t          ||           t          d           	 t                      }t           # t"          $ r Y nt$          $ r}	t           |	d }	~	ww xY wt'          t                     t'          t(                     t                      }t          |          t          u sJ t          d|          }t          |          t          u sJ t+          t,          t&          t.                     t+          t"          t&          t0                     t          d           |                                }t          |          t          u sJ t          ||           t)                      }t          |          t(          u sJ t          ||           t          d           |                                                                d         d         }
t          |
          }|j        dk    rt7          |j                  dk    sJ |                                \  }}t=          |t>                    rt=          |t>                    sJ d| d| d            ~~t+          t@          |j!        d           t+          t@          |j"        d           t+          t,          |j!        d           t+          t,          |j"        d           	 |#                    d           t!          d          # t"          $ r Y nw xY w	 |#                    d           t!          d          # t"          $ r Y nw xY w|$                    d            tK          |j$        dtM          tO          d                               tM          tO          d                    tM          tO          d                    tM          tO          d                    f}tK          |j(        d|           g }tK          |j)        |ftU          |                     g d}tK          |j)        |ftU          |                     g d}tK          |j+        |ftU          |                     tK          |j,        |ftU          |                     t[                      }|.                    d            t[                      }||z
  }|d!k     sJ d"|d!z   d#            tK          |j/        t`          j1        ft`          j1                   tK          |j2        t`          j1        ft`          j1                   tK          |j3        t`          j1        ft`          j1                   tK          |j4        t`          j1        ft`          j1                   tK          |j5        t`          j6        ft`          j6                   tK          |j5        t`          j7        ft`          j7                   tK          |j5        t`          j8        ft`          j8                   tK          |j5        t`          j9        ft`          j9                   tK          |j5        t`          j:        ft`          j:                   tK          |j;        d$d%           |<                    dd           |=                    d          dk    sJ |>                    d                      t          |d&          }||k    s
J d'            t          d(           t          jA        B                    |t                    }t          ||           t          jA        E                    |t                    }t          ||           t          d)           d S )*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', ''rz   ry   zExpected a type errori  rY   
      )NNNr   )r   rc   rt   l        i   i   zMemory not freed - delta z MB)r   Trx   )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  rg   r=   r   r  rd   r  r	  r
   r  r   r3   	TypeError	Exceptionr   r)   r6   r   r&   r+   
__reduce__r   r?   r   GetMultipleInterfacesrf   r	   OverflowErrorr   r   r   GetSimpleSafeArrayrF   tupler  GetSafeArraysSetIntSafeArrayr   SetLongLongSafeArraySetULongLongSafeArrayrU   GetByteArrayTest2r   Attr2Test3Test4Test5Test6	WideAttr1	WideAttr2	WideAttr3	WideAttr4	WideAttr5r   SetParamProp	ParamProp	paramPropr   r   r   DispatchWithEventsrW   
TestEvents
WithEvents)r  r   r   r  	coclass_ococlassr   r  r_subr5   bufi1i2resultCheckr   ll
mem_before	mem_afterdeltao2handlers                        r#   TestGeneratedrI  
  s   777777,--Aq$n677G 655555BABBDDIy$ 	??? Ahh?@@BBG >???	A77i*****AqmQ''H>>Y11111q(###GHHH      $ $ $!#$
 +&&&2333MME;;+%%%%=!$$E;;+%%%% %:KHHH$9;UVVV :;;;	A 77k!!!!Aq'))H>>55555q(### IJJJ
++--
"
"
$
$Q
'
*C3H##H,>(?(?CS(S(S(SS $$&&FBb+,, B@Q1R1R  NNNNNN R 	
 Z@@@jAAA Q[%888Q\5999	e$$$4555   	c"""4555    A('5r3C3CDDDa//5r#3#3U5995E5EEKAO%7EEE
AA%tSVV444AA%tSVV444			BA*RE3r77;;;A+bUCGG<<<  !!JNN#$$$  I
"E; VE[<Q V V V AGio/AAAAGio/AAAAGio/AAAAGio/AAAAGi13Y5HIIIAGi13Y5HIIIAGi13Y5HIIIAGi13Y5HIIIAGi13Y5HIIIAKAAANN1a;;q>>QA 
<	 	 B777A777 ()))		+	+A/A	B	BBr2o((,>??Gq'+,,,,,sB   7E 
E.	E.!E))E.$P 
PP$P7 7
QQc                    g }|                                  	 t          d          D ]+}|                                 }|                    |           ,t	          j        d           |D ]}|                     |           |                                 |                                 d S # |D ]}|                     |           |                                 |                                 w xY w)Nrt   g      ?)	r]   r  Startr  timesleepStopro   close)r   rH  sessionsr  sessions        r#   r:  r:    s    HMMOOO
q 	% 	%AggiiGOOG$$$$
3   	 	GFF7OOOO   	 	GFF7OOOOs   AB+ +AC/c                    |r|                      |          \  }}nst          t          j        t          j        z  d          }t          t          j        t          j        z  d          }|                      |||           |j        }|j        }| ||           d S ||j        k    sJ ||j        f            t          |j        t          t          f          r!d |j        D             }t          |          }n|j        }t          |          t          |          k    s&J t          |          t          |          f            ||k    sJ ||f            d S )Nr   c                 J    g | ] }t          |t                    r|j        n|!S r   )rf   r   r   ).0r   s     r#   
<listcomp>z"_TestPyVariant.<locals>.<listcomp>  s-    MMMaJq'229MMMr"   )GetVariantAndTyper   rd   VT_UI2r   r   r   varianttyperf   r%  listr  )	r   r   r   checkervtr/   var_vt
var_resultr   s	            r#   _TestPyVariantr^    sN    	%%c**CC )I,>>BBY1I4FFJJ
	C444\   2s"7    #)eT]++ MM39MMM3ii	;;$s))###d5kk499%=###C<<<%<<<<<r"   c                 h    	 t          | ||           t          d|d|           # |$ r Y d S w xY w)NzSetting r2   )r^  r3   )r   r   r   r4   s       r#   _TestPyVariantFailsr`    sZ    q,,,,BBBSBBCCC   s   &( 11c           	         t          | |t          t          j        d                     t          | |t          t          j        t          j        z  g d                     t          | |t          t          j        d                     t          | |t          t          j        t          j        z  ddg                     d }t          | |t          t          j        |           |           t          | |t          t          j        t          j        z  | g                     t          t          j        t          j        z  t          t          j        d          t          t          j        d          t          t          j        d          g          }t          | ||           t          | |t          t          j        d          t                     d S )	Nr   )r   rc   rt   hellotherec                 h    t          | j        t          j        t          j                           sJ d S rY   )rf   _oleobj_rd   TypeIIDsIID_IDispatch)r/   s    r#   check_dispatchz%TestPyVariant.<locals>.check_dispatch  s+    #,	(:9;R(STTTTTTTr"   rc   rt   ry   )r^  r   rd   r   r   VT_UI4r   VT_DISPATCHr   r`  r   )r   r   rh  r   s       r#   r   r     s   1lGI,<a$@$@AAA	<!3i6F!F			RR   1lGI,=w$G$GHHH		"Y%66'8JKK  U U U 1lGI,A1$E$E~VVV	<!3i6K!KaSQQ   	Y11I$a((I$a((I$a((	
	 	A 1lA&&& <1A5)I)I:VVVVVr"   c                    t          d|            dd l}t          d          D ]}t          |                                t	          |           z            }	 |r|                     |dz             }n| |         }||dz   k    sJ d| d|            q# t          $ r t          d|           w xY wd}|rk|                     d           d| _	        |                     dd           | j
        dk    s
J d	            |                     d          dk    s
J d	            n	 d| _        d
| _        | j        dk    s| j        d
k    rt          d           |rX|                                 }|d         dk    r|d         d
k    s
J d            |                     |d         |d                    | D ]}|dz  }|t	          |           k    s
J d            |d
k    s
J d            	 t#          |           j                                        } n # t(          $ r t          d           Y d S w xY w|                                  d}| D ]}|dz  }|d
k    sJ d| d            t          d           d S )NzTesting counter r   2   r   zRandom access into element z failed - return was z+** IndexError accessing collection element rc   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)r=   randomr  intr   Item
IndexErrorr3   SetTestPropertyTestPropertyTestPropertyWithDefTestPropertyNoDefLBoundUBoundr;   	GetBounds	SetBoundsiter_iter_CloneAttributeErrorReset)r   bIsGeneratedrm  r  numretboundsitems           r#   r   r     s   +++,,,MMM2YY V V&--//CLL011	V  #ll37++cl#'>>>OcOOOO ">>>  	V 	V 	V !Ts!T!TUUU	V C """ 1%%%*a///1Q///((++q0002R0000 GNGN~gn22>??? 0""$$ayA~~&)r///F #2/1 	&)VAY///  q#g,,C  "999D999w--&,,..   KLLL MMOOO
C  q"999QQQQ999'(((((s   <BB4,&H H0/H0c                 L    |                      d          dk    s
J d            d S )Nry   r}   zcouldn't foofoo)r   )obs    r#   TestLocalVTabler  =  s.    ??5!!X---/@-----r"   c                 r   t           j                            d          }t          |           t           j                            d          }t	          j        dd | t          j                  }	 |                    d            n# t          j        $ r
}Y d }~nd }~ww xY w|                    |           d S )Nr   r   )	r   r   Dispatchr  rd   CoCreateInstanceIID_IUnknownTestMyInterfacer   )clsctxr  testertesteedetailss        r#   
TestVTabler  F  s     
	!	!"9	:	:BB_%%&;<<F'vy/E Ft$$$$    6"""""s   0B BBc                      t           j                            d          } t          j        d         }d}t          j        }	 t          j        |d ||          }d S # t          $ r Y d S w xY w)Nr   r  )r   r   r  rd   InterfaceNamesCLSCTX_SERVERr  r  )r  iidclsidr  r  s        r#   TestVTable2r  Y  sw     
	!	!"9	:	:B

"<
0C#E$F+E4EE    	s   A 
A('A(c                     t           j        } t          j        dd | t           j                  }|                    t           j                   |                    t           j                   |                    t           j                   t           j        d         }	 |                    |           d S # t          $ r Y d S w xY w)NzPython.Test.PyCOMTestMIr  )
rd   r  r  r  QueryInterfaceIID_IStreamIID_IStoragerg  r  r  )r  r  r  s      r#   TestVTableMIr  i  s    $F		#!41G
 
B i+,,,i,---i-...

"<
0C
#    	s   B5 5
CCr  c                 4   t           j                            d          }| r+t           j                            dt          j                  }ddg}t          |          D ]7}t          || dk             |dz   |fz             |                                 8d S )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  rd   CLSCTX_LOCAL_SERVERr  r=   TestQueryInterface)long_lived_server
iterationsr  t0promptr  s         r#   r  r  ~  s    _%%&;<<F 
_%%#I,I & 
 

 	NJF
 : $ $)Q./1q5*2EEFFF!!####$ $r"   c                   8    e Zd Zd Zd Zd Zd Zd Zd Zd Z	dS )	Testerc                     t          d          D ]0}t          d|dz   z             t          t          j                   1d S )Nrt   z!Testing VTables in-process #%d...r   )r  r=   r  rd   CLSCTX_INPROC_SERVERr\   r  s     r#   testVTableInProczTester.testVTableInProc  sM    q 	7 	7A8AEBCCCy56666	7 	7r"   c                     t          d          D ]0}t          d|dz   z             t          t          j                   1d S )Nrt   z%Testing VTables out-of-process #%d...r   )r  r=   r  rd   r  r  s     r#   testVTableLocalServerzTester.testVTableLocalServer  sM    q 	6 	6A<AFGGGy45555	6 	6r"   c                 F    t          d          D ]}t                       d S Nrt   )r  r  r  s     r#   testVTable2zTester.testVTable2  s,    q 	 	AMMMM	 	r"   c                 F    t          d          D ]}t                       d S r  )r  r  r  s     r#   testVTableMIzTester.testVTableMI  s,    q 	 	ANNNN	 	r"   c                 F    t          dd           t          dd           d S )Nr      r   )r  r[   s    r#   testMultiQueryInterfacezTester.testMultiQueryInterface  s*    1a    	1a     r"   c                 "    t                       d S rY   )r  r[   s    r#   testDynamiczTester.testDynamic  s    r"   c                 "    t                       d S rY   )rI  r[   s    r#   testGeneratedzTester.testGenerated  s    r"   N)
r   r   r   r  r  r  r  r  r  r  r   r"   r#   r  r    s}        7 7 76 6 6
    	! 	! 	!      r"   r  __main__c                      d S rY   r   r   r"   r#   NullThreadFuncr    s    r"   r   z-vrY   )r   r  )Nsyscoinit_flagsr   r   osrL  rd   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	importMsgr;   RuntimeErrorRegisterInterfacesr:   r  r   r&   r)   r+   r0   r6   r=   rF   rL   rU   rW   r   r   r  r	  r  rI  r:  r^  r`  r   r   r  
CLSCTX_ALLr  r  r  r  TestCaser  r   r  _thread	start_newargvtestmainr   r"   r#   <module>r     s   


    				                B B B B B B B B B B                        . - - - - - 	  ' 'GLL**D)=PQQ  
-H0!Qe      - - -&I
 
E
QI
Q
Q
QRRR
,y
!
!u,- 	 Eq!Q O O O

4 4 4 4 4)& 4 4 44 4 4 4 4)& 4 4 44 4 4 4 4y3 4 4 44 4 4 4 4!5 4 4 4H H H

 
 
  M M M  & & &= = = = = = = =@}# }# }#@J J JZ  @  $, , ,(Z- Z- Z-z   & & & &8  W W WD=) =) =)@A A A  * # # # #&     *$ $ $ $$# # # # #X]( # # #L z   NNNGnb)))sxM!!!!! s   ,C 
C.C))C.