
    s@;j                     0   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mZmZmZmZmZmZ d dl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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- G d dej)                  Z.d Z/d Z0d Z1d Z2d Z3d  Z4 G d! d"          Z5d# Z6d$ Z7d% Z8d& Z9d' Z:d( Z;d) Z<d* Z=d+ Z>d<d,Z?d- Z@d. ZAd/ ZBd0 ZCejD        fd1ZEd2 ZFd3 ZGd=d5ZH G d6 d7ej        j        jI                  ZJeKd8k    rCd9 ZLd dlMZM eMjN        eLd:           d;e jO        v rdZ(ej        j        P                                 dS dS )>    N)CloseHandleGetCurrentProcessIdOpenProcess)VARIANTCastToDispatchBaseClassRecord	constantsgencacheregister_record_classRegisterInterfaces)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       iC:\Users\Administrator\AppData\Local\Temp\2\pip-target-b0z114gj\lib\python\win32com/test/testPyComTest.pyr   r   6   ,        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'   ?   r%   r#   r'   c                   &    e Zd ZdZdZdZdZdZdZdS )TestStruct3r   r   r   r   z&{865045EB-A7AE-4E88-B102-E2C5B97A64B6}Nr   r   r#   r$   r*   r*   H   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,   S   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.   \   r%   r#   r.   c                 L     | |          }||k    sJ |  d|d|            d S )Nz failed - expected z, got r   )funcarggots      r$   check_get_setr3   e   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)excr0   r1   r2   es        r$   check_get_set_raisesr9   j   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)argsr1   s     r$   progressr@   u   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$   TestApplyResultrI   |   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
   r6   )	constNamepyConstcomConsts      r$   TestConstantrO      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$   GetMemoryUsagerX      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   )r]   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Missingr]   
isinstancebool)r_   rc   a_boolout1out2rh   s         r$   OnFireWithNamedParamsz(RandomEventHandler.OnFireWithNamedParams   s     #W$$$$6T>>>#F>>>6T>>>#F>>>  Jvt$<$<  >W  <ax!!r#   c                     | j         st          d           | j                                         D ]\  }}t          d| d| d           d S )NzERROR: Nothing was received!zID z fired z times)r]   r>   itemsr@   )r_   firedIdrc   s      r$   _DumpFiredszRandomEventHandler._DumpFireds   sk    { 	20111;,,.. 	7 	7KGR575525556666	7 	7r#   N)r   r   r   r`   rd   rn   rr   r   r#   r$   rZ   rZ      sP               " " "7 7 7 7 7r#   rZ   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Hirf      皙?)rv   rf   rw   z3Did not get the specified optional values correctlyr   )r    r   z*Did not get the optional2 values correctlyr   )rv   rf   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)rv   r   r   r   r   zVarArgs failed -zChecking arraysr   rf   rw   r{   )r   s   foo bar   zChecking propertieszProperty value wrong - got /l    ^e z (expected ))Unusedr~   )r   rt   )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TestOptionals2r3   GetSetUnknown	__class__rK   ri   GetSetDispatchGetSetInterfaceGetSetVariant	GetSetIntGetSetUnsignedInt
GetSetLongGetSetUnsignedLong	GetStruct	int_valuerB   	str_valueDoubleString
SetVarArgsGetLastVarArgsrI   SetVariantSafeArraylenCheckVariantSafeArraySetBinSafeArray
memoryviewLongPropIntProp	ULongPropTestrO   win32timezonenowreplacedatetime	timedeltaEarliestDateMakeDatefromisoformatrg   __future_currency__CurrencyPropdecimalDecimalDoubleCurrencyAddCurrenciesDecimalPropDoubleDecimalAddDecimalsTestTrickyTypesWithVariantsTestPyVariant)ois_generatedcounterrH   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 )Nrf   r{   zTestByRefVariant failedFooFooFoozTestByRefString failedr   )r   rx   皙@ffffff
@)rx   r   r   皙@)r   r   gffffff@g!@z)ChangeDoubleSafeArray got the wrong valuer|   r   r   r   )TestByRefVariantr   rg   VT_BYREF
VT_VARIANTvalueTestByRefStringVT_BSTRVT_ARRAYVT_UI1rI   r   r   VT_R8SetDoubleSafeArrayVT_R4SetFloatSafeArrayChangeDoubleSafeArrayDoubleInOutStringr   r   DoubleCurrencyByValVT_CYDoubleDecimalByVal
VT_DECIMAL)r   r   r2   vvalsr1   expectedr   s           r$   r   r   |  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.SimpleCounterr|   zno exception raised       @Tr{         @   )r@   win32com.client.dynamicclientdynamicDumbDispatchr   r   r9   
ValueErrorr   r6   rg   	com_errorhresultwinerrorDISP_E_TYPEMISMATCHr   r   r   VT_BOOLVT_I4	TestInOutr   )win32comr   r   r7   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@   ModifyStructri   r   typerg   
com_recordr   rB   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.rw   r   zThis is record numberr   )r@   rangeri   r,   r   r	  r	   rg   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                    t                      }d|_        d|j        _        d|j        _        d|_        t          |          dk    sJ t                      }d|_        d|_        t          |j                  t          u sJ |j        |k    sJ |j        |usJ | 	                                }||k    sJ |j        j        |j        k    sJ |j        j        |j        k    sJ d S )Ng      @!   	Fibonacci)      ?r  r   g      @g      @g       @g      *@zcom_struct(a_struct_field=com_struct(int_value=33, str_value='Fibonacci'), array_of_double=(1.0, 1.0, 2.0, 3.0, 5.0, 8.0, 13.0), id=7.0))
r*   ida_struct_fieldr   r   array_of_doublerB   r   r	  GetNestedStruct)r   outerinnernesteds       r$   TestNestedStructsr#    s   MMEEH%'E"%0E"@E 	E

 - 	- 	- 	- 	-
 MMEEO!EO$%%44445((((u,,,,  FU???? *eo==== *eo======r#   c           	         t          d t          d          D                       }t          d          D ]K}t          d          D ]9}t          d          D ]'}|dz  |dz  z   |z   ||         |         |         _        (:Lt                      }||_        |j        }||k    sJ ||usJ t          d t          d          D                       }t          d t          d          D                       }t          d          D ]q}t          d          D ]_}t          d          D ]M}t          |dz  |dz  z   |z             ||         |         |         _        |||         |         |         _        N`r|                     |          }t          d          D ]}t          d          D ]}t          d          D ]}||         |         |         }	t          d          D ]a}
t          d          D ]O}t          d          D ]=}||
         |         |         }|	j        |
         |         |         ||	j        z  k    sJ >Pbd S )Nc                 Z    g | ](}t          d  t          d          D                       )S )c                 Z    g | ](}t          d  t          d          D                       )S )c                 *    g | ]}t                      S r   )r   .0r  s     r$   
<listcomp>z:TestNestedArrays.<locals>.<listcomp>.<listcomp>.<listcomp>8      :::A+--:::r#   rw   tupler  r)  js     r$   r*  z/TestNestedArrays.<locals>.<listcomp>.<listcomp>8  5    NNN5::q:::;;NNNr#      r,  r)  ks     r$   r*  z$TestNestedArrays.<locals>.<listcomp>7  E     	
 	
 	
 NNU1XXNNNOO	
 	
 	
r#   r{   r1  rw      c                 Z    g | ](}t          d  t          d          D                       )S )c                 Z    g | ](}t          d  t          d          D                       )S )c                 *    g | ]}t                      S r   )r*   r(  s     r$   r*  z:TestNestedArrays.<locals>.<listcomp>.<listcomp>.<listcomp>R  r+  r#   rw   r,  r.  s     r$   r*  z/TestNestedArrays.<locals>.<listcomp>.<listcomp>R  r0  r#   r1  r,  r2  s     r$   r*  z$TestNestedArrays.<locals>.<listcomp>Q  r4  r#   c                 `    g | ]*t          fd t          d          D                       +S )c                 d    g | ]+t          fd t          d          D                       ,S )c                 F    g | ]}t          |d z  z   dz  z             S )rw   r5  )float)r)  r  r/  r3  s     r$   r*  z:TestNestedArrays.<locals>.<listcomp>.<listcomp>.<listcomp>[  s2    DDDaa!a%i"q&011DDDr#   rw   r,  )r)  r/  r3  s    @r$   r*  z/TestNestedArrays.<locals>.<listcomp>.<listcomp>[  s@    XXX!DDDDD588DDDEEXXXr#   r1  r,  r2  s    @r$   r*  z$TestNestedArrays.<locals>.<listcomp>Y  sS     	
 	
 	
  XXXXuUVxxXXX 	
 	
 	
r#   )	r-  r  r   r,   r  r<  r  r  ModifyArrayOfStructs)r   record_tupler3  r/  r  rec_with_multidim_sa_of_rectuple_retrieved_from_recfloat_tuplearray_of_structsr  nmr   fs                 r$   TestNestedArraysrF  1  s   
 	
 	
1XX	
 	
 	
 L 1XX E Eq 	E 	EA1XX E E23b&1q5.12DQ"1%//E	E
 #;"<"<3?0  ;K#|3333#<7777 	
 	
1XX	
 	
 	
 L 	
 	
 1XX		
 	
 	
 K 1XX D Dq 	D 	DA1XX D D+0R!a%!1C+D+DQ"1%(8CQ"1%55D	D --l;; 1XX N Nq 	N 	NA1XX N N&q)!,Q/q N NA"1XX N N!&q N NA +Aq 1! 4A#&#6q#9!#<Q#?1sv:#M#M#M#M#MNNNN	NN N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 |j        d
k    rt          |j                  dk    sJ |                                }t          |          t          j        u sJ |j        d
k    rt          |j                  dk    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/          t0                     t/          t2                     t'                      }t          |          t&          u sJ t#          d|          }t          |          t&          u sJ t5          t6          t.          t8                     t5          t*          t.          t:                     t          d           t'                      }
d|
_        d|
_        t3                      }|
|_        |j        }||
k    sJ |                                }t          |          t&          u sJ |j        d
k    rt          |j                  dk    sJ |                                }t          |          t&          u sJ t!          ||           t1                      }t          |          t0          u sJ t%          ||           t          d           t?          |           t          d           tA          |           t          d           |                                !                                d         d         }t'          |          }|j        d
k    rt          |j                  dk    sJ |"                                \  }}tG          |tH                    rtG          |tH                    sJ d| d| d            ~~t5          tJ          |j&        d           t5          tJ          |j'        d           t5          t6          |j&        d           t5          t6          |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            tU          |j)        dtW          tY          d                                tW          tY          d                    tW          tY          d                     tW          tY          d!                    f}tU          |j-        d"|           g }tU          |j.        |ft_          |                     g d#}tU          |j.        |ft_          |                     g d$}tU          |j0        |ft_          |                     tU          |j1        |ft_          |                     te                      }|3                    d%           te                      }||z
  }|d&k     sJ d'|d&z   d(            tU          |j4        tj          j6        ftj          j6                   tU          |j7        tj          j6        ftj          j6                   tU          |j8        tj          j6        ftj          j6                   tU          |j9        tj          j6        ftj          j6                   tU          |j:        tj          j;        ftj          j;                   tU          |j:        tj          j<        ftj          j<                   tU          |j:        tj          j=        ftj          j=                   tU          |j:        tj          j>        ftj          j>                   tU          |j:        tj          j?        ftj          j?                   tU          |j@        d)d*           |A                    dd           |B                    d          dk    sJ |C                    d                      t          |d+          }||k    s
J d,            t          d-           t          jF        G                    |t                    }t          ||           t          jF        J                    |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~   Luftballonsr   r'   z8Testing registration of pythoncom.com_record subclasses.r   z+Testing subclasses of pythoncom.com_record.*   z1The meaning of life, the universe and everything.zTesting nested Records.z:Testing multidimensional SAFEARRAYS of Records and double.z:Testing initialization of pythoncom.com_record subclasses.r   r1  z6GetMultipleInterfaces did not return instances - got 'z', ''r}   r|   zExpected a type errori  r\   
      )NNNr   )r   rf   rw   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.)Kwin32com.client.gencacherH  r   r   win32com.client.CLSIDToClassrI  rj   r@   GetOutStructr	  rg   r
  r   rB   r   r   r  r	   r  r   r6   	TypeError	Exceptionr   r,   r*   r9   r   r'   r.   r  r#  rF  
__reduce__GetMultipleInterfacesri   r   OverflowErrorr   r   r   GetSimpleSafeArrayrI   r-  r  GetSafeArraysSetIntSafeArrayr   SetLongLongSafeArraySetULongLongSafeArrayrX   GetByteArrayTest2r
   Attr2Test3Test4Test5Test6	WideAttr1	WideAttr2	WideAttr3	WideAttr4	WideAttr5r   SetParamProp	ParamProp	paramPropr   r  r   DispatchWithEventsrZ   
TestEvents
WithEvents)rH  r   r   rI  	coclass_ococlassr   r  r_subr8   member_structparent_structretrieved_structbufi1i2resultCheckr   ll
mem_before	mem_afterdeltao2handlers                           r$   TestGeneratedr  z  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*****;"Q[!1!1]!B!B!BB	A77i*****;"Q[!1!15E!E!E!EE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:;;;MMM MQMMMM#0M $3},,,, 	
A 77k!!!!;"Q[!1!1]!B!B!BB 	
A 77k!!!!Aq'))H>>55555q(###&'''aIJJJ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   2G 
G)	G)G$$G):$U 
U+*U+/$V 
V V c                    g }|                                  	 t          d          D ]+}|                                 }|                    |           ,t	          j        d           |D ]}|                     |           |                                 |                                 d S # |D ]}|                     |           |                                 |                                 w xY w)Nrw   g      ?)	r`   r  Startr  timesleepStoprr   close)r   r~  sessionsr  sessions        r$   rm  rm  2  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   )ri   r   r   )r)  r   s     r$   r*  z"_TestPyVariant.<locals>.<listcomp>U  s-    MMMaJq'229MMMr#   )GetVariantAndTyper   rg   VT_UI2r   r   r   varianttyperi   r-  listr	  )	r   r   r   checkervtr2   var_vt
var_resultr   s	            r$   _TestPyVariantr  B  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 r5   )r  r6   )r   r   r   r7   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   rf   rw   hellotherec                 h    t          | j        t          j        t          j                           sJ d S r\   )ri   _oleobj_rg   TypeIIDsIID_IDispatch)r2   s    r$   check_dispatchz%TestPyVariant.<locals>.check_dispatchr  s+    #,	(:9;R(STTTTTTTr#   rf   rw   r|   )r  r   rg   r   r   VT_UI4r   VT_DISPATCHr   r  r   )r   r   r  r   s       r$   r   r   f  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 rf   zUnexpected property set value!rM  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
IndexErrorr6   SetTestPropertyTestPropertyTestPropertyWithDefTestPropertyNoDefLBoundUBoundr>   	GetBounds	SetBoundsiter_iter_CloneAttributeErrorReset)r   bIsGeneratedr  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 )Nr|   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  rg   CoCreateInstanceIID_IUnknownTestMyInterfacer   )clsctxr  testertesteedetailss        r$   
TestVTabler    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   rO  )r  r   r  rg   InterfaceNamesCLSCTX_SERVERr  rS  )r  iidclsidr  r  s        r$   TestVTable2r    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.PyCOMTestMIrO  )
rg   r  r  r  QueryInterfaceIID_IStreamIID_IStorager  r  rS  )r  r  r  s      r$   TestVTableMIr    s    $F		#!41G
 
B i+,,,i,---i-...

"<
0C
#    	s   B5 5
CCr1  c           	      0   t           j                            d          }| r+t           j                            dt          j                  }t          |          D ]9}t          d| rdndz   d|dz    d	| d
z              |                                 :d S )Nr   r   )r  zTesting QueryInterface withwithoutz long-lived local-server #r   z of ...)r  r   r  rg   CLSCTX_LOCAL_SERVERr  r@   TestQueryInterface)long_lived_server
iterationsr  t0r  s        r$   r  r  	  s    _%%&;<<F 
_%%#I,I & 
 

 : $ $&*9vv	;E1q5EEjEEEF	
 	
 	

 	!!####$ $r#   c                   D    e Zd ZddZddZddZd Zd Zd Zd	 Z	d
 Z
dS )TesterreturnNc                 *    t          dddd           d S )Nr   r   r   r   r^   s    r$   #testRegisterInterfacesAfterGencachez*Tester.testRegisterInterfacesAfterGencache  s     	CQ1MMMMMr#   c                     t          d          D ]1}t          d|dz    d           t          t          j                   2d S )Nrw   zTesting VTables in-process #r   r  )r  r@   r  rg   CLSCTX_INPROC_SERVERr_   r  s     r$   testVTableInProczTester.testVTableInProc!  sS    q 	7 	7A@QU@@@AAAy56666	7 	7r#   c                     t          d          D ]1}t          d|dz    d           t          t          j                   2d S )Nrw   z Testing VTables out-of-process #r   r  )r  r@   r  rg   r  r  s     r$   testVTableLocalServerzTester.testVTableLocalServer'  sS    q 	6 	6ADQDDDEEEy45555	6 	6r#   c                 F    t          d          D ]}t                       d S Nrw   )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.testVTableMI0  s,    q 	 	ANNNN	 	r#   c                 F    t          dd           t          dd           d S )NF   T)r  r^   s    r$   testMultiQueryInterfacezTester.testMultiQueryInterface4  s*    5!$$$ 	4#####r#   c                 "    t                       d S r\   )r  r^   s    r$   testDynamiczTester.testDynamic?  s    r#   c                 "    t                       d S r\   )r  r^   s    r$   testGeneratedzTester.testGeneratedB  s    r#   )r  N)r   r   r   r  r  r  r  r  r  r  r  r   r#   r$   r  r    s        N N N N
7 7 7 76 6 6 6
    	$ 	$ 	$      r#   r  __main__c                      d S r\   r   r   r#   r$   NullThreadFuncr  I  s    r#   r   z-vr\   )Fr1  )Qsyscoinit_flagsr   r   osr  rg   r  win32com.test.utilr   r   win32apir   r   r   win32com.clientr   r   r   r	   r
   r   r   win32com.universalr   win32processr   testutilRegisterPythonServerpathjoindirname__file__EnsureModuler   error	importMsgr>   RuntimeErrorr=   r
  r   r'   r*   r,   r.   r3   r9   r@   rI   rO   rX   rZ   r   r   r  r  r  r#  rF  r  rm  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                  2 1 1 1 1 1 - - - - - - 	  ' 'GLL**D)=PQQ  
-H0!Qe      - - -&I
 
E
QI
Q
Q
QRRR
,y
!
!u,- 
4 4 4 4 4)& 4 4 4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  & & &7 7 7 7 7 7 7 7@}# }# }#@J J JZ  @  $, , ,(> > >DFN FN FNRu- u- u-p   & & & &8  W W WD=) =) =)@A A A  * # # # #&     *$ $ $ $$( ( ( ( (X]( ( ( (V z   NNNGnb)))sxM!!!!! s   ,C 
C.C))C.