
    %
iP                         d dl Z d dlm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
 d dlmZ dZ G d d          Zd Zd Zd	 Zdd
Zd Zd Zd Zd Zd Zd Zd Zedk    r ej                     dS dS )    N)Callable)wrap)utilc                   L    e Zd Zg dZd Zd Zd Zd Zd Zd Z	d Z
d	 Zd
 ZdS )
TestObject)	CallbackVoidOneByRefCallbackResultOneByRefCallbackVoidTwoByRefCallbackString#CallbackResultOneByRefButReturnNone!CallbackVoidOneByRefButReturnNoneCallbackArrayResult CallbackArrayResultOneArrayByRefCallbackArrayResultWrongSizec                     |dz   S N    selfintVals     C:\Users\Dell Inspiron 16\Desktop\tws\AgrotaPowerBi\back-agrota-powerbi\mcp-client-agrota\venv\Lib\site-packages\win32com/test/testvb.pyr   zTestObject.CallbackVoidOneByRef&   s    z    c                     ||dz   fS r   r   r   s     r   r	   z!TestObject.CallbackResultOneByRef)   s    vz!!r   c                     ||z   ||z
  fS Nr   )r   int1int2s      r   r
   zTestObject.CallbackVoidTwoByRef,   s    d{D4K''r   c                     d|dz   fS )Nr   z has visited Pythonr   )r   strVals     r   r   zTestObject.CallbackString/   s    &0000r   c                 D    g }|D ]}|                     |dz              |S r   )appendr   arrayValretis       r   r   zTestObject.CallbackArrayResult2   s6     	 	AJJq1u 
r   c                 0    t          |d d                   S )N)list)r   r$   s     r   r   z'TestObject.CallbackArrayResultWrongSize;   s    HSbSM"""r   c                 b    g }|D ]}|                     |dz              t          |          |fS r   )r"   r)   r#   s       r   r   z+TestObject.CallbackArrayResultOneArrayByRef>   s@     	 	AJJq1uH~~s""r   c                     d S r   r   r   s     r   r   z.TestObject.CallbackResultOneByRefButReturnNoneE       r   c                     d S r   r   r   s     r   r   z,TestObject.CallbackVoidOneByRefButReturnNoneH   r,   r   N)__name__
__module____qualname___public_methods_r   r	   r
   r   r   r   r   r   r   r   r   r   r   r      s        
 
 
  " " "( ( (1 1 1  # # ## # #      r   r   c                 H   d| _         | j         dk    s
J d            d| _        | j        dk    s
J d            d| _        | j        dk    s
J d            t          d          | _        | j        t          d          k    s
J d            d| _        | j        dk    s
J d	            d| _        | j        dk    s
J d
            d| _        | j        dk    sJ d| j         d            t          | |           t          |            t          |            |                     |           | k    sJ |r| 	                    |           }|d         | k    r|d         | k    sJ | | _
        | j
        j        | j        k    s
J d            |                     d          dk    s
J d            |                     d          dk    s J d|                     d                       |                     d          dk    s
J d            t          t                      t                     }|                     |           |                     d          }|dk    sJ d|             t'          |            |r(|                     d          }|dk    sJ d|             d S d S )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   r7   )LongPropertyIntPropertyVariantProperty
memoryviewStringProperty
TestArraysTestStructsTestCollectionsTakeByValObjectTakeByRefObjectVariantPutref_oleobj_IncrementIntegerParamIncrementVariantParamr   r   r9   DoSomeCallbacksPassIntByValTestVBInterfacePassIntByRef)vbtestbUseGeneratedobcallback_obr%   s        r   TestVBrQ   L   s>   F"$$$&R$$$F###%T###F!R'''? ('' (55F!Z%=%====> >== 0F $77776 877 1F!%8888> 988 -F!_444kQWQgkkk 544 v}%%%F!!&))V3333  ',##F++!u2a5F???2  &#,???A @??  ++A..!3335V333 ++A..!333UF4P4PQR4S4SUU 433 ++C00C7772 877 :<<}EEE{+++


a
 
 C!888?#??888F I !!!$$f}}}H3HH}}}	I I }r   c           	         d }t          | |          }g }|D ]}|                    |           |t          |          k    sJ d| d|d|d            g }|D ]}|                    |           |t          |          k    sJ d| d|d|d            t          t          | |                    }g }|D ]}|                    |           |t          |          k    sJ d| d|d|d            g }|D ]}|                    |           |g k    s
J d	            t          | |          }t	          |           ||          k    s*J d| d
t	          |          d ||          d            t          | |          }g }t           ||                    D ]}|                    ||                    |t          |          k    sJ d| d|d|d            t          | |                                          }g }	 |                                }|sn|                    |d                    3|t          |          k    sJ d| d|d|d            d S )Nc                 d    t          | d          }t          |t                    r
 |            S |S )NCount)getattr
isinstancer   )rO   rs     r   	_getcountz$_DoTestCollection.<locals>._getcount   s3    B  a"" 	133J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   r   )rU   r"   r)   iterlenrange_NewEnumNext)	rM   col_nameexpectedrX   ccheckitemr&   ns	            r   _DoTestCollectionre      s@      	!!AE  TDNN"""IhIIXIIuIII #"" E  TDNN"""YhYYXYYuYYY #""
 	WVX&&''AE  TDNN"""bxbbhbbX]bbb #"" E  TB;;;U ;; 	!!Aq66YYq\\!!!ThTTQTT99Q<<TTT "!! 	!!AE99Q<<    QqTDNN"""IhIIXIIuIII #""
 	!!**,,AEFFHH 	QqT	
 DNN"""IhIIXIIuIII #""""r   c                 F   t          | dg d           | j        d         dk    s
J d            t          | dg            | j                            d           | j                            d           | j                            d           t          | dg d           d S )	NCollectionProperty)r   Two3r   r   z;The CollectionProperty[0] element was not the default valueEnumerableCollectionPropertyrh   ri   )re   rg   rj   Add)rM   s    r   rB   rB      s    f2OOODDD$Q'1,,,E -,, f<bAAA
'++A...
'++E222
'++C000f<oooNNNNNr   c                     	 || _         |J d| d            n# |$ r Y d S w xY w| j         }||k    sJ d|d|            d S )Nz
Expected ''z-Could not set the array data correctly - got z, expected )ArrayProperty)rM   dataexpected_exceptiongots       r   _DoTestArrayrr      s    #!))+M8J+M+M+M))))   

C$;;;RRR$RR ;;;;s    ##c           	      B   t          | d           t          | d           t          | t          t          dd                               t          | d           t          | t          d                                                     t          | | | f           t          | d           t          | d| | fdf           t          | d	           t          | | | | f| | | ff           d
}| | f| | f| | ff| | f| | f| | fff}t          | |           t          | | ddf           t          | dd| f           d }d}t          | ||           | | ff| fff}t          | ||           d}t          | ||           t	          t                      t                    }t          d           	 |                     |           n;# t          j
        $ r)}|j        d         dk    sJ d| d            Y d }~nd }~ww xY w|rd                                }|                     |          \  }}|t          |          k    sJ d|             |t          |          k    sJ d|             g d}|                     |          \  }}|t          |          k    sJ |t          |          k    sJ g d}|                     |          \  }}|t          |          k    s+J d                    |t          |                                |t          |          k    s+J d                    |t          |                                g d}|                     |          \  }}|t          |          k    sJ |t          |          k    sJ t          d           d S )Nr   )r   r   r   d   r5   r4   )r   r6   ri   )ri   4))r   r7      )         ))r:   rv   rw   rx   ry   )      )	   r3   )      r6   ri   )))r   r7   r   rz   r{   r|   ))r:   rz   )rx   ry   r~   r|   r8   z9** Expecting a 'ValueError' exception to be printed next:z Python COM Server Internal Errorz$Didn't get the correct exception - 'rm   zMark was herez3The safe array data was not what we expected - got )hifromPythonzExpected '{}', got '{}'zArray tests passed)rr   tupler\   splitr   r   r9   printDoCallbackSafeArraySizeFail	pythoncom	com_error	excepinfoPassSAFEARRAYr)   PassSAFEARRAYVariantformat)	rM   rN   	arrayDatarp   rP   exctestData
resultData
byRefParams	            r   r@   r@     sh    """uQ}}--...)))288::;;<<< &&)***'''!ff-z:;;;0222FFF3fff5MNPPPGI
&	FF+ff-=>
&	FF+ff-=>I ### &#s+,,,!S&)*** JI$67776"$yl3I$6777JI$6777 z||=AAAK	
EFFF
**;7777 
 
 
}Q#EEEE93999 FEEEEEEE

  ,
 #((**!'!5!5h!?!?
J4
+++++N*NN ,++ 4
+++++N*NN ,++ #??!'!<!<X!F!F
J4
++++++4
+++++++++!'!<!<X!F!F
J4
+++++-F-M-M.
 .
+++ 4
+++++-F-M-M.
 .
+++
 !==!'!<!<X!F!F
J4
++++++4
++++++	
s   ,G G:G55G:c                    	 d| _         t          d          # t          j        $ r)}|j        t
          j        k    s
J d            Y d }~nd }~ww xY w| j        }|j        dk    rt          |j
                  dk    s
J d            d|_
        d|_        |j        dk    rt          |j
                  dk    s
J d	            |j        j        d
k    rt          |j        j
                  dk    s
J d            |j        }d|_        |j        dk    sJ dt          |j                  f            |j        j        dk    s#J dt          |j        j                  f            |j        j        d         j        dk    r(t          |j        j        d         j
                  dk    s.J dt          |j        j        d         j                  f            d|j        j        d         _        d
|j        j        d         _        |j        j        d         j        dk    r|j        j        d         j        d
k    sQJ dt          |j        j        d         j                  t          |j        j        d         j                  f            || _        | j        }|j        dk    rt          |j
                  dk    s
J d            |j        j        d         j        dk    s
J d            ||k    sJ |J 	 |d k      t          d          # t          $ r Y nw xY w	 d |k      t          d          # t          $ r Y nw xY w||j        k    sJ dd l}|                    |          }||usJ ||k    sJ d|_        ||k    sJ |                                 }||k    sJ |                     |           t"          j                            d|           }|j        dk    s
J d            d|_        |                     |           |                                 j        dk    s
J d            | j        }|
J d            |                     d           | j        }t-          |          dk    sJ t/          t-          |                    D ]}||         j        |k    sJ ||         j        j        |k    sJ ||         j        j        d         j        |k    sJ ||         j        j        d         j        |dz   k    sJ ||         j        j        d         j        |dz   k    sJ 	 |j         t          d           # t2          $ r Y nw xY w|j        }|d         d!k    r$|d         d"k    r|d         d#k    r|d         d$k    s
J |            	 |j         t          d%          # t2          $ r%}d&t          |          v s
J |            Y d }~nd }~ww xY wd'                    |j        |j
        |j        |j                  }	t=          |          }
|
|	k    r/t?          d(|	           t?          d)|
           t          d*          t?          d+           d S ),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 arrayrv   r7   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) r<   AssertionErrorr   r   hresultwinerrorDISP_E_TYPEMISMATCHStructPropertyr   strr   r   	array_val	TypeErrorcopyGetStructFuncSetStructSubwin32comclientRecordStructArrayPropertyMakeStructArrayPropertyr[   r\   bad_attributeAttributeError__members__r   r   r   reprr   )rM   r   ssubr   s2s_arrayr&   mr`   repr_ss              r   rA   rA   a  s/   
"8999 
 
 
{h::::* ;:::::::

 	A9??s19~~888*  988 !AIAI9??s19~~1AAAA*  BAA 9""s19+<'='='L'L'L. (M'LL )CCK;"/CK 9""";AI%"""
 	
	A&!++	#A&.//6999*C	0CA0F0N,O,OP :9	: &(AI"%'AI"		A&",,1DQ1G1OSU1U1U1U,AI"*++AI"*++ 2V1UU FA9??s19~~1AAAA?  BAA 9q!)R///E 0//
 6666===	D2333   q2333   	>>>>KKK	1BB;;;;7777BJ7777					B7777
 	z622A9>>>C>>>AI
!!)R///0 0// (G??K???
""1%%%(Gw<<13w<<   @ @qz!Q&&&&qz!)Q....qz!+A.6!;;;;qz!+A.6!a%????qz!+A.6!a%?????	8999   	A	!	aDIaDHaDI 	&	7888 & & &C   #        &
 	LRRIIHI		
 	
  !WWF)))'''=>>>	
&'''''sb    AAA6L 
LLL1 1
L>=L>+U 
UUV) )
W3WWc                     |                      d          }|                                dk    s
J d            |                    d           |                                dk    s
J d            d S )Nr7   zInitial value wrongrv   zNew value wrong)GetInterfaceTestergetnsetn)rO   ts     r   rK   rK     s`    
a  A6688q===/===FF1III6688q===+=====r   c                 X   | | j         k    sJ | | j         k    rJ | j         | k    sJ | j         | k    rJ | j         | j                             t          j                  k    sJ | j         | j                             t          j                  k    rJ | j         J d | j         k    sJ | J d | k    sJ 	 | d k      t	          d          # t
          $ r Y nw xY w	 d | k      t	          d          # t
          $ r Y nw xY w| j                             t          j                  | j         k    sJ | j                             t          j                  | j         k    rJ | j         | j                             t          j                  k    sJ | j         | j                             t          j                  k    rJ | j                             t          j                  | j         k    sJ | j                             t          j                  | j         k    rJ t          d           d S )Nr   zObject semantic tests passed)rF   QueryInterfacer   IID_IUnknownr   r   IID_IDispatchr   )rO   s    r   TestObjectSemanticsr     sH   R[    ;"{b     ;"+44Y5KLLLLLL{bk889OPPPPPP;"""2;>>>2::::
T		2333   r		2333    ;%%i&<==LLLL{)))*@AAR[PPPP;"+44Y5LMMMMMM{bk889PQQQQQQ;%%i&=>>"+MMMM{)))*ABBbkQQQQ	
()))))s$   6C 
CCC1 1
C>=C>c                     t           j                            d          } t          |            t	          | d           t           j        j                            d          } t          |            t	          | d           d S )NPyCOMVBTest.Testerr   r   )r   r   Dispatchr   rQ   dynamicDumbDispatch)os    r   	DoTestAllr     sk      !566A
1aLLL,,-ABBA
1aLLLLLr   c                      t           j        j                            d           	 	 t                       t          d           d S #  t          d           t          j                      xY w)Nr   Fz/This must be run in debug mode - we use assert!z All tests appear to have worked!zTestAll() failed!!)	r   r   gencacheEnsureDispatchRuntimeErrorr   r   	traceback	print_excr   r   r   TestAllr   &  sq     O++,@AAAN011111"###s   A %A+c                      dd l } t          j        t          d          }|                                 }|                    |           |S )Nr   zVB tests)description)unittestr   CapturingFunctionTestCaser   	TestSuiteaddTest)r   testsuites      r   r   r   8  sH    OOO)'zJJJD  E	MM$Lr   __main__r   )r   collections.abcr   r   win32com.clientr   win32com.client.dynamicwin32com.client.gencacher   win32com.server.utilr   win32com.testr   r9   r   rQ   re   rB   rr   r@   rA   rK   r   r   r   r   r.   testmainr   r   r   <module>r      s       $ $ $ $ $ $                  % % % % % %       0 0 0 0 0 0 0 0fTI TI TIx> > >BO O O	 	 	 	[  [  [ |J( J( J(Z, , ,$* $* $*N    $   zDMOOOOO r   