a oe|q@sNddlZde_ddlZddlZddlZddlZddlZddlZddlZddl Z ddl Z ddl Z ddl Z ddl mZddlmZmZmZmZddlmZmZdZeZeejejedddd dd lmZzed dd d Wn.ej ye!d e!ee"eYn0ddl m#Z#e#$d dd d dZ%ddZ&ddZ'ddZ(ddZ)ddZ*GdddZ+Gddde,Z-ddZ.dd Z/d!d"Z0d#d$Z1d%d&Z2dAd'd(Z3d)d*Z4d+d,Z5d-d.Z6d/d0Z7ej8fd1d2Z9d3d4Z:d5d6Z;dBd8d9Zj?Z@eAdZBddlCZCeCDeBd?d@ejEvr>d Z%e j=j>FdS)CN) str2memory)VARIANTCastToDispatchBaseClass constants) CheckCleanRegisterPythonServerz**** 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.pyPython.Test.PyCOMTest)gencachez&{6BCDCB60-5605-11D0-AE5F-CADD4C000000}z5The PyCOMTest module can not be located or generated.) universalcCs&||}||kr"td|||fdS)Nz%s failed - expected %r, got %rerror)funcarggotrd t%d?d@t%dAdt%dBdCtdDt&'} | j(ddE} | t)j*ddF} t|j+| | f| |,dGt)j)-dHks$JtdIdt._/|j0dkrNtdJ|j0fdKD]6} t12| |_0|j0t12| krRtdL| |j0fqRt12dM} t|j3| f| d t12dN} t|j4| | f| | t5||tdOt6||dS)PNzGetting counterzChecking default args)defrr gQ @g{Gz?z)Did not get the optional values correctlyHir4皙?)rHr4rIz3Did not get the specified optional values correctlyr)rr 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 argsfoolzunsigned -1 failedil zChecking structsczHello from C++foofoozChecking var argsThereFromPython)rHrQrRrSr zVarArgs failed -zChecking arraysr r4rIrL)rTzfoobarzChecking propertiesz Property value wrong - got %d/%dl^ez+Property value wrong - got %d (expected %d))UnusedrO)rWrFrW)rWrZ ULongTest1Z ULongTest2Z LongTest1iZ LongTest2Z UCharTestZCharTestZ StringTestu Hello Wo®ldzChecking dates and times)Z microsecond)ZsecondsgF@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 TestOptionalsabsrrZTestOptionals2rZ GetSetUnknown __class__r$ isinstanceZGetSetDispatchZGetSetInterfaceZ GetSetVariant GetSetIntZGetSetUnsignedInt GetSetLongZGetSetUnsignedLongZ GetStructZ int_valuerZ str_value DoubleStringZ SetVarArgsZGetLastVarArgsr#SetVariantSafeArraylenZCheckVariantSafeArraySetBinSafeArrayrZLongPropZIntPropZ ULongPropZTestr% win32timezonenowreplacedatetimeZ timedeltaZ EarliestDateZMakeDateZ fromisoformatr6Z__future_currency__Z CurrencyPropdecimalDecimalZDoubleCurrencyZ AddCurrenciesTestTrickyTypesWithVariants TestPyVariant)o is_generatedcounterr"Zexpected_classZbiglrcheckreZlatervalZv1Zv2rrr TestCommons $$ &                                    rscCs|r|d}n"ttjtjBd}|||j}|dkrBtd|rR|d}n"ttjtjBd}|||j}|dkrtdgd}|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|kr~td |r|d }n"ttjtjBd }|||j}|d ksJ|td}|r||}n"ttjtjB|}|||j}||dksJdS)Nr4rLzTestByRefVariant failedZFooZFooFoozTestByRefString failedrT)rrJ皙@ffffff @)rJrtru皙@)rtrvgffffff@g!@z)ChangeDoubleSafeArray got the wrong valuerMrPrY)ZTestByRefVariantrr6VT_BYREF VT_VARIANTvaluerZTestByRefStringVT_BSTRVT_ARRAYVT_UI1r#rcrbZVT_R8ZSetDoubleSafeArrayVT_R4ZSetFloatSafeArrayZChangeDoubleSafeArrayZDoubleInOutStringrhriZDoubleCurrencyByValZVT_CY)rlrmrvZvalsrZexpectedrrrrrrjQsb           rjc Cstdddl}|jjd}t|d|jjd}t|dztt|j dt dWn4t j y}z|j tjkrzWYd}~n d}~00tt jt jBd}tt jt jBd }tt jt jBd }|||||jd ksJ||jdksJ|jd ksJdS) NzTesting DynamicrPyCOMTest.PyCOMTestFPyCOMTest.SimpleCounterrMzno exception raised@TrL@)rZwin32com.client.dynamicclientZdynamicZ DumbDispatchrsrZr ValueErrorr^rr6 com_errorZhresultwinerrorZDISP_E_TYPEMISMATCHrr}rwZVT_BOOLZVT_I4 TestInOutry)win32comrlrnrZarg1Zarg2Zarg3rrr TestDynamics&    rc Csdddlm}|d}t|d|d}t|dddlm}|d}t|dt|s\J|d}t|d|\}}t|t rt|t st d ||f~~t t |j d t t |jd t t|j d t t|jd z|d t d WntyYn0z|d t d Wnty2Yn0|dt|jdttdttdttdttdf}t|jd|g} t|j| ft| gd} t|j| ft| gd} t|j| ft| t|j| ft| t|jtjftjt|jtjftjt|jtjftjt|j tjftjt|j!tj"ftj"t|j!tj#ftj#t|j!tj$ftj$t|j!tj%ftj%t|j!tj&ftj&t|j'dd|(dd|)ddkrt*|+dt,|d} || krt dt-dt.j/0|t1} t2| | t.j/0|t3} t2| | t.j/4|t1} t2|| t.j/4|t3} t2|| t-ddS)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 errorir' )NNNrT)r r4rIl)rTrL)rFrr IPyCOMTestz+CastTo should have returned the same objectzTesting connection pointszFinished generated .py test.)5Zwin32com.client.gencacherrsrZZwin32com.client.CLSIDToClassrr9ZGetMultipleInterfacesr]rrr OverflowErrorr^r_rra TypeErrorZGetSimpleSafeArrayr#tuplerangeZ GetSafeArraysZSetIntSafeArrayrbZSetLongLongSafeArrayZSetULongLongSafeArrayZTest2rZAttr2ZTest3ZTest4ZTest5ZTest6Z WideAttr1Z WideAttr2Z WideAttr3Z WideAttr4Z WideAttr5rZ SetParamPropZ ParamProp RuntimeErrorZ paramProprrrrZDispatchWithEventsr& TestEventsrEZ WithEvents) rrlrnrZ coclass_oZcoclassZi1Zi2Z resultCheckroZllZo2handlerrrr TestGenerateds                "       rc Csg}|zRtdD]}|}||qtdW|D]}||q>||n&|D]}||qd||0dS)NrIg?) r,rZStartappendtimesleepZStopr@close)rlrZsessionsiZsessionrrrr"s      rc Cs|r||\}}n>ttjtjBd}ttjtjBd}|||||j}|j}|durf||dS||jks~J||jft|jt t fvrdd|jD}t |}n|j}t|t|ksJt|t|f||ksJ||fdS)NrcSs g|]}t|tr|jn|qSr)r]rry).0r~rrr Ez"_TestPyVariant..) ZGetVariantAndTyperr6ZVT_UI2rwrxryZ varianttyper8rlist) rlrmrrZcheckerZvtrZvar_vtZ var_resultrqrrr_TestPyVariant2s" $rcCs8z t|||td||fWn|y2Yn0dS)NzSetting %r didn't raise %s)rr)rlrmrrrrrr_TestPyVariantFailsNs   rcCst||ttjdt||ttjtjBgdt||ttjdt||ttjtjBddgdd}t||ttj||t||ttjtjB|gttjtjBttjdttjdttjdg}t|||t ||ttjd t dS) Nr )r r4rIZhelloZtherecSst|jtjtjsJdSr')r]Z_oleobj_r6ZTypeIIDs IID_IDispatch)rrrrcheck_dispatchbsz%TestPyVariant..check_dispatchr4rIrM) rrr6r|r{ZVT_UI4rzZ VT_DISPATCHrxrr)rlrmrr~rrrrkVs0     rkc Cstdt|ddl}tdD]x}t|t|}z@|rL||d}n||}||dkrttd|t|fWqtytd|Yq0qd}|r| dd|_ | dd|j dkrtd| ddkrtdnd|_ d |_|j dks |jd krtd |rX|}|ddks<|dd krDtd ||d|d|D]}|d}q\|t|krtd |d krtd zt|j}WntytdYdS0|d}|D]}|d}q|d krtd|tddS)NzTesting counterr2r z4Random access into element %d failed - return was %sz-** IndexError accessing collection element %dr4zUnexpected property set value!rz.** 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)rreprrandomrintrbZItemr IndexErrorZSetTestPropertyZ TestPropertyZTestPropertyWithDefZTestPropertyNoDefZLBoundZUBoundrZ GetBoundsZ SetBoundsiterZ_iter_ZCloneAttributeErrorZReset)rnZ bIsGeneratedrrZnumretZboundsitemrrrrZxsh             rZcCs|ddkrtddS)NrMrPzcouldn't foofoo)r`r)obrrrTestLocalVTablesrc Csvtjd}t|tjd}tdd|tj}z|dWn&tjyf}z WYd}~n d}~00||dS)Nr r) rrDispatchrr6CoCreateInstance IID_IUnknownZTestMyInterfacer)clsctxrtestertesteeZdetailsrrr TestVTables   rcCsLtjd}tjd}d}tj}zt|d||}WntyFYn0dS)Nr r)rrrr6InterfaceNames CLSCTX_SERVERrr)riidZclsidrrrrr TestVTable2s   rcCsltj}tdd|tj}|tj|tj|tjtjd}z||Wnt yfYn0dS)NzPython.Test.PyCOMTestMIr) r6rrrZQueryInterfaceZ IID_IStreamZ IID_IStoragerrr)rrrrrr TestVTableMIs      rrcCs`tjd}|r"tjjdtjd}ddg}t|D](}t||dk|d|f|q2dS)Nrr )rzCTesting QueryInterface without long-lived local-server #%d of %d...z@Testing QueryInterface with long-lived local-server #%d of %d...rr )rrrr6CLSCTX_LOCAL_SERVERrrTestQueryInterface)Zlong_lived_serverZ iterationsrZt0promptrrrrrs  rc@sDeZdZddZddZddZddZd d Zd d Zd dZ dS)TestercCs,tdD]}td|dttjqdS)NrIz!Testing VTables in-process #%d...r )rrrr6ZCLSCTX_INPROC_SERVERr+rrrrtestVTableInProcs zTester.testVTableInProccCs,tdD]}td|dttjqdS)NrIz%Testing VTables out-of-process #%d...r )rrrr6rrrrrtestVTableLocalServers zTester.testVTableLocalServercCstdD] }tqdSNrI)rrrrrr testVTable2s zTester.testVTable2cCstdD] }tqdSr)rrrrrr testVTableMI s zTester.testVTableMIcCstddtdddS)Nrr )rr*rrrtestMultiQueryInterface$s zTester.testMultiQueryInterfacecCs tdSr')rr*rrr testDynamic/szTester.testDynamiccCs tdSr')rr*rrr testGenerated2szTester.testGeneratedN) rBrCrDrrrrrrrrrrrrs r__main__cCsdSr'rrrrrNullThreadFunc9srrz-v)N)rr)GsysZ coinit_flagsrgrhosrr6Z pywintypesZwin32apirZwin32com.client.connectrdrZpywin32_testutilrZwin32com.clientrrrrZwin32com.test.utilrrZ importMsg Exceptionrpathjoindirname__file__r Z EnsureModulerrrr ZRegisterInterfacesrrrrr#r%r&objectrErsrjrrrrrrkrZrZ CLSCTX_ALLrrrrtestutilZTestCaserrBr_thread start_newargvZtestmainrrrrsz        .G!i "D  &