a „oe|qã@sNddlZde_ddlZddlZddlZddlZddlZddlZddlZddl Z ddl Z ddl Z ddl Z ddl mZddlmZmZmZmZddlmZmZdZeZeej ej e¡ddd¡d ƒdd lmZze d dd d ¡Wn.ej �ye!d ƒe!eƒe"eƒ‚Yn0ddl m#Z#e# $d dd d ¡dZ%dd„Z&dd„Z'dd„Z(dd„Z)dd„Z*Gdd„dƒZ+Gdd„de,ƒZ-dd„Z.dd „Z/d!d"„Z0d#d$„Z1d%d&„Z2dAd'd(„Z3d)d*„Z4d+d,„Z5d-d.„Z6d/d0„Z7ej8fd1d2„Z9d3d4„Z:d5d6„Z;dBd8d9„Zj?ƒZ@eAd„ZBddlCZCeC DeBd?¡d@ejEv�r>d Z%e j=j> F¡dS)CéN)Ú str2memory)ÚVARIANTÚCastToÚDispatchBaseClassÚ constants)Ú CheckCleanÚRegisterPythonServerzú**** 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++z..Zserversztest_pycomtest.pyúPython.Test.PyCOMTest)Úgencachez&{6BCDCB60-5605-11D0-AE5F-CADD4C000000}éz5The PyCOMTest module can not be located or generated.)Ú universalcCs&||ƒ}||kr"td|||fƒ‚dS)Nz%s failed - expected %r, got %r©Úerror)ÚfuncÚargÚgot©rúd ƒt%d?d@ƒt%dAdƒt%dBdCƒtdDƒt& '¡} | j(ddE�} | t)j*ddF�} t|j+| | f| ƒ| ,dG¡t)j) -dH¡k�s$J‚tdIƒdt._/|j0dk�rNtdJ|j0fƒ‚dKD]6} t1 2| ¡|_0|j0t1 2| ¡k�rRtdL| |j0fƒ‚�qRt1 2dM¡} t|j3| f| d ƒt1 2dN¡} t|j4| | f| | ƒt5||ƒtdOƒt6||ƒdS)PNzGetting counterzChecking default argséÿÿÿÿ)Údefrr g…ëQ¸ @g{®Gáz„?z)Did not get the optional values correctlyÚHir4éçš™™™™™ñ?)rHr4rIz3Did not get the specified optional values correctlyr)rÚr z*Did not get the optional2 values correctlyr )rHr4z4Did not get the specified optional2 values correctlyz!Checking getting/passing IUnknownz"Checking getting/passing IDispatchZdefault_interfacezGetSetDispatch failed: %rz0Checking getting/passing IDispatch of known typezGetSetDispatch failedzChecking misc argséÚfooìlÿÿzunsigned -1 failediÿÿÿl zChecking structséczHello from C++ÚfoofoozChecking var argsÚThereÚFromÚPython)rHrQrRrSr zVarArgs failed -zChecking arrays©r r4rIrL)rTzfoobarézChecking propertiesz Property value wrong - got %d/%déýÿÿÿl^ ez+Property value wrong - got %d (expected %d))ÚUnusedrO)rWrFrW)rWrZ ULongTest1Z ULongTest2Z LongTest1i€Z LongTest2Z UCharTestéÿZCharTestZ StringTestu Hello Wo®ldzChecking dates and times)Z microsecond)Zsecondsg…·¥¹FÒ@z1951-03-25 07:23:49+00:00zChecking currencyzExpecting 0, got %r)ú 1234.5678z1234.56Z1234z %s got %rrYz 9012.3456z Checking win32com.client.VARIANT)7rZGetSimpleCounterÚ TestCounterZ TestOptionalsÚabsrrZTestOptionals2rZ GetSetUnknownÚ __class__r$Ú isinstanceZGetSetDispatchZGetSetInterfaceZ GetSetVariantÚ GetSetIntZGetSetUnsignedIntÚ GetSetLongZGetSetUnsignedLongZ GetStructZ int_valuerZ str_valueÚ DoubleStringZ SetVarArgsZGetLastVarArgsr#ÚSetVariantSafeArrayÚlenZCheckVariantSafeArrayÚSetBinSafeArrayrZLongPropZIntPropZ ULongPropZTestr%Ú win32timezoneÚnowÚreplaceÚdatetimeZ timedeltaZ EarliestDateZMakeDateZ fromisoformatr6Z__future_currency__Z CurrencyPropÚdecimalÚDecimalZDoubleCurrencyZ AddCurrenciesÚTestTrickyTypesWithVariantsÚ TestPyVariant)ÚoÚ is_generatedÚcounterr"Zexpected_classZbigÚlÚrÚcheckreZlaterÚvalZv1Zv2rrrÚ TestCommon¤sö $$ &                   ö   ÿ        ÿ      rscCs|r| d¡}n"ttjtjBdƒ}| |¡|j}|dkrBtdƒ‚|rR| d¡}n"ttjtjBdƒ}| |¡|j}|dkr„tdƒ‚gd¢}|r–|}nttj tj B|ƒ}t |j |ft |ƒƒgd¢}|rÎ|}nttj tjB|ƒ}t |j|ft |ƒƒ|rþ|}nttj tjB|ƒ}t |j|ft |ƒƒgd ¢}d }|�rHt |j|f|ƒn6ttjtj BtjB|ƒ}| |¡|j|k�r~td ƒ‚|�r�| d ¡}n"ttjtjBd ƒ}| |¡|j}|d k�sÄJ|ƒ‚t d¡}|�rà| |¡}n"ttjtjB|ƒ}| |¡|j}||dk�sJ‚dS)Nr4rLzTestByRefVariant failedZFooZFooFoozTestByRefString failedrT)rrJçš™™™™™@çffffff @)rJrtruçš™™™™™@)rtrvgffffff@gš™™™™™!@z)ChangeDoubleSafeArray got the wrong valuerMrPrY)ZTestByRefVariantrr6ÚVT_BYREFÚ VT_VARIANTÚvaluerZTestByRefStringÚVT_BSTRÚVT_ARRAYÚVT_UI1r#rcrbZVT_R8ZSetDoubleSafeArrayÚVT_R4ZSetFloatSafeArrayZChangeDoubleSafeArrayZDoubleInOutStringrhriZDoubleCurrencyByValZVT_CY)rlrmrÚvZvalsrZexpectedrrrrrrjQsb           rjc Cstdƒddl}|jj d¡}t|dƒ|jj d¡}t|dƒztt|j dƒt dƒ‚Wn4t j yŽ}z|j tjkrz‚WYd}~n d}~00tt jt jBdƒ}tt jt jBd ƒ}tt jt jBd ƒ}| |||¡|jd ksæJ|ƒ‚|jdksôJ‚|jd k�sJ‚dS) NzTesting DynamicrúPyCOMTest.PyCOMTestFúPyCOMTest.SimpleCounterrMzno exception raisedç@TrLç@é)rZwin32com.client.dynamicÚclientZdynamicZ DumbDispatchrsrZrÚ ValueErrorr^rr6Ú com_errorZhresultÚwinerrorZDISP_E_TYPEMISMATCHrr}rwZVT_BOOLZVT_I4Ú TestInOutry)Úwin32comrlrnrZarg1Zarg2Zarg3rrrÚ TestDynamic˜s&    rŠc Csdddlm}|dƒ}t|dƒ|dƒ}t|dƒddlm}|dƒƒ}t|dƒt|ƒs\J‚|dƒƒ}t|dƒ| ¡\}}t|t ƒr�t|t ƒs t d ||fƒ‚~~t t |j d ƒt t |jd ƒt t|j d ƒt t|jd ƒz| d ¡t d ƒ‚Wnt�yYn0z| d ¡t d ƒ‚Wnt�y2Yn0| d¡t|jdttdƒƒƒttdƒƒttdƒƒttdƒƒf}t|jd|ƒg} t|j| ft| ƒƒgd¢} t|j| ft| ƒƒgd¢} t|j| ft| ƒƒt|j| ft| ƒƒt|jtjftjƒt|jtjftjƒt|jtjftjƒt|j tjftjƒt|j!tj"ftj"ƒt|j!tj#ftj#ƒt|j!tj$ftj$ƒt|j!tj%ftj%ƒt|j!tj&ftj&ƒt|j'ddƒ| (dd¡| )d¡dk�rÔt*| +d¡ƒ‚t,|dƒ} || k�rðt dƒ‚t-dƒt.j/ 0|t1¡} t2| | ƒt.j/ 0|t3¡} t2| | ƒt.j/ 4|t1¡} t2|| ƒt.j/ 4|t3¡} t2|| ƒt-dƒdS)Nr)ÚEnsureDispatchrTr€)ÚGetClassz&{8EE0C520-5605-11D0-AE5F-CADD4C000000}z&{B88DD310-BAE8-11D0-AE86-76F2C1000000}z?GetMultipleInterfaces did not return instances - got '%s', '%s'rNrMzExpected a type errorišr'é éé)NNNrT)r r4rIl)r�TrL)r‚Frƒr Ú IPyCOMTestz+CastTo should have returned the same objectzTesting connection pointszFinished generated .py test.)5Zwin32com.client.gencacher‹rsrZZwin32com.client.CLSIDToClassrŒr9ZGetMultipleInterfacesr]rrrÚ OverflowErrorr^r_r…raÚ TypeErrorZGetSimpleSafeArrayr#ÚtupleÚrangeZ GetSafeArraysZSetIntSafeArrayrbZSetLongLongSafeArrayZSetULongLongSafeArrayZTest2rZAttr2ZTest3ZTest4ZTest5ZTest6Z WideAttr1Z WideAttr2Z WideAttr3Z WideAttr4Z WideAttr5rˆZ SetParamPropZ ParamPropÚ RuntimeErrorZ paramProprrr‰r„ZDispatchWithEventsr&Ú TestEventsrEZ WithEvents) r‹rlrnrŒZ coclass_oZcoclassZi1Zi2Z resultCheckroZllZo2ÚhandlerrrrÚ TestGenerated¹sŠ           ÿ     "       r˜c CsŠg}| ¡zRtdƒD]}| ¡}| |¡qt d¡W|D]}| |¡q>| ¡| ¡n&|D]}| |¡qd| ¡| ¡0dS)NrIgà?) r,r”ZStartÚappendÚtimeÚsleepZStopr@Úclose)rlr—ZsessionsÚiZsessionrrrr–"s     ý r–c Csì|r| |¡\}}n>ttjtjBdƒ}ttjtjBdƒ}| |||¡|j}|j}|durf||ƒdS||jks~J||jfƒ‚t|jƒt t fvrªdd„|jDƒ}t |ƒ}n|j}t|ƒt|ƒksÔJt|ƒt|ƒfƒ‚||ksèJ||fƒ‚dS)NrcSs g|]}t|tƒr|jn|‘qSr)r]rry)Ú.0r~rrrÚ Eóz"_TestPyVariant..) ZGetVariantAndTyperr6ZVT_UI2rwrxryZ varianttyper8r“Úlist) rlrmrrZcheckerZvtrZvar_vtZ var_resultrqrrrÚ_TestPyVariant2s" $r¢cCs8z t|||ƒtd||fƒ‚Wn|y2Yn0dS)NzSetting %r didn't raise %s)r¢r)rlrmrrrrrrÚ_TestPyVariantFailsNs   r£cCsôt||ttjdƒƒt||ttjtjBgd¢ƒƒt||ttjdƒƒt||ttjtjBddgƒƒdd„}t||ttj|ƒ|ƒt||ttjtjB|gƒƒttjtjBttjdƒttjdƒttjdƒgƒ}t|||ƒt ||ttjd ƒt ƒdS) Nr )r r4rIZhelloZtherecSst|jtjtjƒsJ‚dSr')r]Z_oleobj_r6ZTypeIIDsÚ IID_IDispatch)rrrrÚcheck_dispatchbsz%TestPyVariant..check_dispatchr4rIrM) r¢rr6r|r{ZVT_UI4rzZ VT_DISPATCHrxr£r…)rlrmr¥r~rrrrkVs0ÿýÿ    ýþ rkc Cstdt|ƒƒddl}tdƒD]x}t| ¡t|ƒƒ}z@|rL| |d¡}n||}||dkrttd|t|ƒfƒ‚Wqty”td|ƒ‚Yq0qd}|ræ|  d¡d|_ |  dd¡|j dkrÎtdƒ‚|  d¡dkrætdƒ‚nd|_ d |_|j dk�s |jd k�rtd ƒ|�rX| ¡}|ddk�s<|dd k�rDtd ƒ‚| |d|d¡|D]}|d}�q\|t|ƒk�r‚td ƒ‚|d k�r”td ƒ‚zt|ƒj ¡}Wnt�yÄtdƒYdS0| ¡d}|D]}|d}�qÖ|d k�rütd|ƒ‚tdƒdS)NzTesting counterré2r z4Random access into element %d failed - return was %sz-** IndexError accessing collection element %dr4zUnexpected property set value!r�z.** Error - counter did not keep its propertiesz8** Error - counter did not give the same properties backz8*** Length of counter and loop iterations dont match ***z,*** Unexpected number of loop iterations ***z8Finished testing counter (but skipped the iterator stuffz5*** Unexpected number of loop iterations - got %d ***zFinished testing counter)rÚreprÚrandomr”ÚintrbZItemrÚ IndexErrorZSetTestPropertyZ TestPropertyZTestPropertyWithDefZTestPropertyNoDefZLBoundZUBoundrZ GetBoundsZ SetBoundsÚiterZ_iter_ZCloneÚAttributeErrorZReset)rnZ bIsGeneratedr¨r�ZnumÚretZboundsÚitemrrrrZxsh   ÿÿ          rZcCs| d¡dkrtdƒ‚dS)NrMrPzcouldn't foofoo)r`r)ÚobrrrÚTestLocalVTable¼sr°c Csvtj d¡}t|ƒtj d¡}t dd|tj¡}z| d¡Wn&tjyf}z WYd}~n d}~00| |¡dS)Nr r) r‰r„ÚDispatchr°r6ÚCoCreateInstanceÚ IID_IUnknownZTestMyInterfacer†)Úclsctxr¯ÚtesterÚtesteeZdetailsrrrÚ TestVTableÆs   ÿr·cCsLtj d¡}tjd}d}tj}zt |d||¡}WntyFYn0dS)Nr r�)r‰r„r±r6ÚInterfaceNamesÚ CLSCTX_SERVERr²r’)r¯ÚiidZclsidr´r¶rrrÚ TestVTable2Ùs   r»cCsltj}t dd|tj¡}| tj¡| tj¡| tj¡tjd}z| |¡Wnt yfYn0dS)NzPython.Test.PyCOMTestMIr�) r6r¹r²r³ZQueryInterfaceZ IID_IStreamZ IID_IStorager¤r¸r’)r´r¯rºrrrÚ TestVTableMIés ÿ     r¼rŽcCs`tj d¡}|r"tjjdtjd�}ddg}t|ƒD](}t||dk|d|fƒ| ¡q2dS)Nrr )r´zCTesting QueryInterface without long-lived local-server #%d of %d...z@Testing QueryInterface with long-lived local-server #%d of %d...rr )r‰r„r±r6ÚCLSCTX_LOCAL_SERVERr”rÚTestQueryInterface)Zlong_lived_serverZ iterationsrµZt0Úpromptr�rrrr¾þs ÿþ r¾c@sDeZdZdd„Zdd„Zdd„Zdd„Zd d „Zd d „Zd d„Z dS)ÚTestercCs,tdƒD]}td|dƒttjƒqdS)NrIz!Testing VTables in-process #%d...r )r”rr·r6ZCLSCTX_INPROC_SERVER©r+r�rrrÚtestVTableInProcs zTester.testVTableInProccCs,tdƒD]}td|dƒttjƒqdS)NrIz%Testing VTables out-of-process #%d...r )r”rr·r6r½rÁrrrÚtestVTableLocalServers zTester.testVTableLocalServercCstdƒD] }tƒqdS©NrI)r”r»rÁrrrÚ testVTable2s zTester.testVTable2cCstdƒD] }tƒqdSrÄ)r”r¼rÁrrrÚ testVTableMI s zTester.testVTableMIcCstddƒtddƒdS)Nrér )r¾r*rrrÚtestMultiQueryInterface$s zTester.testMultiQueryInterfacecCs tƒdSr')rŠr*rrrÚ testDynamic/szTester.testDynamiccCs tƒdSr')r˜r*rrrÚ testGenerated2szTester.testGeneratedN) rBrCrDrÂrÃrÅrÆrÈrÉrÊrrrrrÀs rÀÚ__main__cCsdSr'rrrrrÚNullThreadFunc9srÌrz-v)N)rrŽ)GÚsysZ coinit_flagsrgrhÚosršr6Z pywintypesZwin32apir‰Zwin32com.client.connectrdr‡Zpywin32_testutilrZwin32com.clientrrrrZwin32com.test.utilrrZ importMsgÚ ExceptionrÚpathÚjoinÚdirnameÚ__file__r Z EnsureModuler†rr•r ZRegisterInterfacesrrrrr#r%r&ÚobjectrErsrjrŠr˜r–r¢r£rkrZr°Z CLSCTX_ALLr·r»r¼r¾ÚtestÚutilZTestCaserÀrBrÌÚ_threadÚ start_newÚargvZtestmainrrrrÚsz þ       .G!i "D  &