
    	hP                         S SK r S SKJ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
  S SKJr  Sr " S S5      rS rS rS	 rSS
 jrS rS rS rS rS rS rS r\S:X  a  \R6                  " 5         gg)    N)Callable)wrap)utilc                   R    \ rS rSr/ SQrS rS rS rS rS r	S r
S	 rS
 rS rSrg)
TestObject   )	CallbackVoidOneByRefCallbackResultOneByRefCallbackVoidTwoByRefCallbackString#CallbackResultOneByRefButReturnNone!CallbackVoidOneByRefButReturnNoneCallbackArrayResult CallbackArrayResultOneArrayByRefCallbackArrayResultWrongSizec                     US-   $ N    selfintVals     gC:\Users\julio\OneDrive\Documentos\Trabajo\Ideas Frescas\venv\Lib\site-packages\win32com/test/testvb.pyr	   TestObject.CallbackVoidOneByRef&   s    z    c                     XS-   4$ r   r   r   s     r   r
   !TestObject.CallbackResultOneByRef)   s    z!!r   c                     X-   X-
  4$ Nr   )r   int1int2s      r   r   TestObject.CallbackVoidTwoByRef,   s    {DK''r   c                     SUS-   4$ )Nr   z has visited Pythonr   )r   strVals     r   r   TestObject.CallbackString/   s    &0000r   c                 D    / nU H  nUR                  US-   5        M     U$ r   )appendr   arrayValretis       r   r   TestObject.CallbackArrayResult2   s(    AJJq1u 
 
r   c                     [        US S 5      $ )N)list)r   r)   s     r   r   'TestObject.CallbackArrayResultWrongSize;   s    HSbM""r   c                 Z    / nU H  nUR                  US-   5        M     [        U5      U4$ r   )r'   r/   r(   s       r   r   +TestObject.CallbackArrayResultOneArrayByRef>   s2    AJJq1u  H~s""r   c                     g r   r   r   s     r   r   .TestObject.CallbackResultOneByRefButReturnNoneE       r   c                     g r   r   r   s     r   r   ,TestObject.CallbackVoidOneByRefButReturnNoneH   r5   r   r   N)__name__
__module____qualname____firstlineno___public_methods_r	   r
   r   r   r   r   r   r   r   __static_attributes__r   r   r   r   r      s7    
"(1##r   r   c                    SU l         U R                   S:X  d   S5       eSU l        U R                  S:X  d   S5       eSU l        U R                  S:X  d   S5       e[        S5      U l        U R                  [        S5      :X  d   S5       eSU l        U R                  S:X  d   S	5       eSU l        U R                  S:X  d   S
5       eSU l        U R                  S:X  d   SU R                   S35       e[        X5        [        U 5        [        U 5        U R                  U 5      U :X  d   eU(       a  U R                  U 5      nUS   U :X  a	  US   U :X  d   eX l
        U R                  R                  U R                  :X  d   S5       eU R                  S5      S:X  d   S5       eU R                  S5      S:X  d   SU R                  S5       35       eU R                  S5      S:X  d   S5       e[        [        5       [         S9nU R#                  U5        U R%                  S5      nUS:X  d
   SU 35       e['        U 5        U(       a"  U R)                  S5      nUS:X  d
   SU 35       eg g )Nr.   z*Could not set the long property correctly.
   z-Could not set the integer property correctly.z5Could not set the variant integer property correctly.s   raw dataz4Could not set the variant buffer property correctly.Hello from Pythonz,Could not set the string property correctly.z4Could not set the variant string property correctly.g      ?       @g      @zFCould not set the variant property to an array of floats correctly - 'z'.r   r   z3Could not set the VariantPutref property correctly.   zCould not pass an integer byrefz%Could not pass an int VARIANT byref: g      ?g      @z$Could not pass a float VARIANT byrefuseDispatcherz"Could not increment the integer - r   rC   )LongPropertyIntPropertyVariantProperty
memoryviewStringProperty
TestArraysTestStructsTestCollectionsTakeByValObjectTakeByRefObjectVariantPutref_oleobj_IncrementIntegerParamIncrementVariantParamr   r   rE   DoSomeCallbacksPassIntByValTestVBInterfacePassIntByRef)vbtestbUseGeneratedobcallback_obr*   s        r   TestVBr]   L   s   F"$R&RR$F#T%TT#F!!R' ?' (5F!!Z%== >= 0F  $77 67 1F!!%88 >8 -F!!_4 
PQWQgQgPhhjk4 v%F!!&)V333 ##F+!u2a5F?22  &##,,? 	
A	
?  ++A.!3V5VV3 ++A.!3 	
3F4P4PQR4S3TU	
3 ++C0C7 	
2	
7 :<}E{+


a
 C!8?9#??8F !!!$f}H B3%HH}	 r   c           	         S n[        X5      n/ nU H  nUR                  U5        M     U[        U5      :X  d   SU SU< SU< S35       e/ nU H  nUR                  U5        M     U[        U5      :X  d   SU SU< SU< S35       e[        [        X5      5      n/ nU H  nUR                  U5        M     U[        U5      :X  d   SU SU< SU< S35       e/ nU H  nUR                  U5        M     U/ :X  d   S	5       e[        X5      n[	        U5      U" U5      :X  d"   SU S
[	        U5      < SU" U5      < S35       e[        X5      n/ n[        U" U5      5       H  nUR                  XG   5        M     U[        U5      :X  d   SU SU< SU< S35       e[        X5      R                  5       n/ n UR                  5       nU(       d  OUR                  US   5        M.  U[        U5      :X  d   SU SU< SU< S35       eg )Nc                 V    [        U S5      n[        U[        5      (       a  U" 5       $ U$ )NCount)getattr
isinstancer   )r[   rs     r   	_getcount$_DoTestCollection.<locals>._getcount   s'    B a""3Jr   zCollection z didn't have z (had )zCollection 2nd time around zCollection iterator z 2nd time around (had zK2nd time around Collection iterator {col_name} wasn't empty (had {check!r})z	 __len__(z) wasn't==Count(r   )ra   r'   r/   iterlenrange_NewEnumNext)	rY   col_nameexpectedrd   ccheckitemr+   ns	            r   _DoTestCollectionrr      sg    	!AET DN" 
hZ}XLuiqI" ET DN" 
%hZ}XLuiWXY"
 	WV&'AET DN" 
xjh\AWX]W``ab" ET B; U; 	!Aq6Yq\! 
hZyQ
2B9Q<BRRST! 	!AE9Q< QT !DN" 
hZ}XLuiqI"
 	!**,AE
FFHQqT	 
 DN" 
hZ}XLuiqI"r   c                 0   [        U S/ SQ5        U R                  S   S:X  d   S5       e[        U S/ 5        U R                  R                  S5        U R                  R                  S5        U R                  R                  S5        [        U S/ SQ5        g )	NCollectionProperty)r   Two3r   r   z;The CollectionProperty[0] element was not the default valueEnumerableCollectionPropertyru   rv   )rr   rt   rw   Add)rY   s    r   rN   rN      s    f2OD$$Q'1, E, f<bA
''++A.
''++E2
''++C0f<oNr   c                      Xl         Ub   SU S35       e U R                   nX1:X  d   SU< SU< 35       eg ! U a     g f = f)Nz
Expected ''z-Could not set the array data correctly - got z, expected )ArrayProperty)rY   dataexpected_exceptiongots       r   _DoTestArrayr      sk    #!)MZ8J7K1+MM) 

C; 
7wk$R;  s   8 A Ac           	         [        U S5        [        U S5        [        U [        [        SS5      5      5        [        U S5        [        U [        SR                  5       5      5        [        X U 45        [        U S5        [        U SX 4S45        [        U S	5        [        X X 4X U 445        S
nX 4X 4X 44X 4X 4X 444n[        X5        [        X SS45        [        U SSU 45        S nSn[        XU5        X 44U 444n[        XU5        Sn[        XU5        [	        [        5       [        S9n[        S5         U R                  U5        U(       Ga<  SR                  5       nU R                  U5      u  pxU[        U5      :X  d
   SU 35       eU[        U5      :X  d
   SU 35       e/ SQnU R                  U5      u  pxU[        U5      :X  d   eU[        U5      :X  d   e/ SQnU R                  U5      u  pxU[        U5      :X  d    SR                  U[        U5      5      5       eU[        U5      :X  d    SR                  U[        U5      5      5       e/ SQnU R                  U5      u  pxU[        U5      :X  d   eU[        U5      :X  d   e[        S5        g ! [        R                   a)  nUR                  S   S:X  d   SU S35       e S nAGNS nAff = f)Nr   )r   r   r   d   rA   r@   )r   rB   rv   )rv   4))r   rC      )         ))rF   r   r   r   r   )      )	   r?   )      rB   rv   )))r   rC   r   r   r   r   ))rF   r   )r   r   r   r   rD   z9** Expecting a 'ValueError' exception to be printed next:z Python COM Server Internal Errorz$Didn't get the correct exception - 'rz   zMark was herez3The safe array data was not what we expected - got )hifromPythonzExpected '{}', got '{}'zArray tests passed)r   tupleri   splitr   r   rE   printDoCallbackSafeArraySizeFail	pythoncom	com_error	excepinfoPassSAFEARRAYr/   PassSAFEARRAYVariantformat)	rY   rZ   	arrayDatar}   r\   exctestData
resultData
byRefParams	            r   rL   rL     s/    "uQ}-.)288:;< &)*'!f-z:;02F3ff5MNPGI
	F+f-=>
	F+f-=>I # #s+,!S&)* JI$67"$yl3I$67JI$67 z|=AK	
EF
**;7 
 #((*!'!5!5h!?
4
++ 	
A*N	
+ 4
++ 	
A*N	
+ #!'!<!<X!F
4
++++4
+++++!'!<!<X!F
4
++ 	
-F-M-M.
 	
+ 4
++ 	
-F-M-M.
 	
+
 !!'!<!<X!F
4
++++4
++++	
K  
}}Q#EE 	
23%q9	
E
s   ;J K0KKc                     SU l         [        S5      e! [        R                   a/  nUR                  [
        R                  :X  d   S5       e S nAOS nAff = fU R                  nUR                  S:X  a  [        UR                  5      S:X  d   S5       eSUl
        SUl        UR                  S:X  a  [        UR                  5      S:X  d   S	5       eUR                  R                  S
:X  a#  [        UR                  R                  5      S:X  d   S5       eUR                  nSUl        UR                  S:X  d   S[        UR                  5      45       eUR                  R                  S:X  d&   S[        UR                  R                  5      45       eUR                  R                  S   R                  S:X  a0  [        UR                  R                  S   R                  5      S:X  d3   S[        UR                  R                  S   R                  5      45       eSUR                  R                  S   l        S
UR                  R                  S   l        UR                  R                  S   R                  S:X  a'  UR                  R                  S   R                  S
:X  d^   S[        UR                  R                  S   R                  5      [        UR                  R                  S   R                  5      45       eX l        U R                  nUR                  S:X  a  [        UR                  5      S:X  d   S5       eUR                  R                  S   R                  S:X  d   S5       eX":X  d   eUc   e US :    [        S5      e! [         a     Of = f S U:    [        S5      e! [         a     Of = fX"R                  :w  d   eSS KnUR                  U5      nX%Ld   eX%:X  d   eSUl        X%:w  d   eU R                  5       nX%:X  d   eU R!                  U5        ["        R$                  R'                  SU 5      nUR                  S:X  d   S5       eSUl        U R!                  U5        U R                  5       R                  S:X  d   S5       eU R(                  nUb   S5       eU R+                  S5        U R(                  n[-        U5      S:X  d   e[/        [-        U5      5       H  nXg   R                  U:X  d   eXg   R                  R                  U:X  d   eXg   R                  R                  S   R                  U:X  d   eXg   R                  R                  S   R                  US-   :X  d   eXg   R                  R                  S   R                  US-   :X  a  M   e    UR0                    [        S 5      e! [2         a     Of = fUR4                  nUS   S!:X  a  US   S":X  a  US   S#:X  a	  US   S$:X  d   U5       e UR6                    [        S%5      e! [2         a   nS&[        U5      ;   d   U5       e S nAOS nAff = fS'R9                  UR                  UR                  UR:                  UR                  5      n	[=        U5      n
X:w  a#  [?        S(U	5        [?        S)U
5        [        S*5      e[?        S+5        g ),NOnezShould have failed by nowzExpected DISP_E_TYPEMISMATCHc   helloz The struct value was not correctzHi from Pythonr   z The struct value didn't persist!B   z	sub helloz$The sub-struct value was not correct   z$The sub-struct value didn't persist!z1The sub-struct value (re-fetched) didn't persist!r   zeroz The array element wasn't correctr   z"The array elements didn't persist.z5After sending to VB, the struct value didn't persist!z;After sending to VB, the struct array value didn't persist!Expected type error{   VBStructz&new struct inst initialized correctly!r.   z&new struct didn't make the round trip!z-Expected None from the uninitialized VB arrayr   rC   zCould get a bad attributeint_valstr_valob_valsub_valzExpected attribute errorfoozAcom_struct(int_val={!r}, str_val={!r}, ob_val={!r}, sub_val={!r})zExpected repr:zActual repr  :zrepr() of record object failedzStruct/Record tests passed) rH   AssertionErrorr   r   hresultwinerrorDISP_E_TYPEMISMATCHStructPropertyr   strr   r   	array_val	TypeErrorcopyGetStructFuncSetStructSubwin32comclientRecordStructArrayPropertyMakeStructArrayPropertyrh   ri   bad_attributeAttributeError__members__r   r   r   reprr   )rY   r   ssubr   s2s_arrayr+   mrm   repr_ss              r   rM   rM   a  s~   
"899 
{{h::: 	
*	
:

 	A99?s199~8 *8 !AIAI99?s199~1AA *A 99"s199+<+<'='L .L ))CCK;;" 
.CKK  99" ;AII% "
 	
		A&&!+		##A&../69Q 	+C		0C0CA0F0N0N,OPQ	: &(AII"%'AII"			A&&",1D1DQ1G1O1OSU1U 	-AII"**+AII"**+U A99?s199~1AA ?A 99q!))R/ E/
 6M6==	D233 q233 		>>	1B;;7N7BJ7N7				B7N7
 	z62A99>CCC>AI
!))R/ 0/ ((G?KKK?
""1%((Gw<13w< z!!Q&&&z!!))Q...z!!++A.66!;;;z!!++A.66!a%???z!!++A.66!a%??? !	899 	A	!	aDIaDHaDI		
 			&	788 &C %#% &
 	LRRIIIIHHII		
  !WF)'=>>	
&'sb    A%AAN 
N#"N#'N7 7
OO=W 
W! W!X3 3
Y=YYc                     U R                  S5      nUR                  5       S:X  d   S5       eUR                  S5        UR                  5       S:X  d   S5       eg )NrC   zInitial value wrongr   zNew value wrong)GetInterfaceTestergetnsetn)r[   ts     r   rW   rW     sM    
a A668q=///=FF1I668q=+++=r   c                    X R                   :X  d   eX R                   :w  a   eU R                   U :X  d   eU R                   U :w  a   eU R                   U R                   R                  [        R                  5      :X  d   eU R                   U R                   R                  [        R                  5      :w  a   eU R                   c   eS U R                   :w  d   eU c   eS U :w  d   e U S :    [	        S5      e! [
         a     Of = f S U :    [	        S5      e! [
         a     Of = fU R                   R                  [        R                  5      U R                   :X  d   eU R                   R                  [        R                  5      U R                   :w  a   eU R                   U R                   R                  [        R                  5      :X  d   eU R                   U R                   R                  [        R                  5      :w  a   eU R                   R                  [        R                  5      U R                   :X  d   eU R                   R                  [        R                  5      U R                   :w  a   e[        S5        g )Nr   zObject semantic tests passed)rR   QueryInterfacer   IID_IUnknownr   r   IID_IDispatchr   )r[   s    r   TestObjectSemanticsr     s   [[   ;;"{{b    ;;"++44Y5K5KLLLL{{bkk889O9OPPPP;;"""2;;>>2::
T	233 r	233  ;;%%i&<&<=LLL{{)))*@*@AR[[PPP;;"++44Y5L5LMMMM{{bkk889P9PQQQQ;;%%i&=&=>"++MMM{{)))*A*ABbkkQQQ	
()s$   (C8 8
DD	D 
D&%D&c                      [         R                  R                  S5      n [        U 5        [	        U S5        [         R                  R
                  R                  S5      n [        U 5        [	        U S5        g )NPyCOMVBTest.Testerr   r   )r   r   Dispatchr   r]   dynamicDumbDispatch)os    r   	DoTestAllr     sT      !56A
1aL,,-ABA
1aLr   c                      [         R                  R                  R                  S5          [        5         [        S5        g !   [        S5        [        R                  " 5         e = f)Nr   z All tests appear to have worked!zTestAll() failed!!)	r   r   gencacheEnsureDispatchRuntimeErrorr   r   	traceback	print_excr   r   r   TestAllr   &  sR     OO++,@A01"#s   A #A%c                      SS K n [        R                  " [        SS9nU R	                  5       nUR                  U5        U$ )Nr   zVB tests)description)unittestr   CapturingFunctionTestCaser   	TestSuiteaddTest)r   testsuites      r   r   r   8  s6    ))'zJD E	MM$Lr   __main__r   )r   collections.abcr   r   win32com.clientr   win32com.client.dynamicwin32com.client.gencacher   win32com.server.utilr   win32com.testr   rE   r   r]   rr   rN   r   rL   rM   rW   r   r   r   r   r8   testmainr   r   r   <module>r      s     $      %  0 0fTIx>BO	[ |J(Z,$*N$ zMMO r   