a oe @sDdZddlZddlZddlZddlZddlZddlZddlZzddlZ dZ Wne ybdZ Yn0ddl Z ddlZddlZddlmZzddlmZWn>e yz ddlZWne yddlmZYn0Yn0ddZeZdd ZGd d d ejZGd d d eZGdddeZGdddeZGdddeZGdddejZe j r`ddl!Z"GdddeZ#ddl$Z$GdddeZ%GdddeZ&gZ'e'(e)e&de j re'(e)e#de j*re'(e)e%de j+re'(e)ede j,re'(e)ede j-r0e'(e)ede j.rJe'(e)edGddde/Z0e1e'Z2e3dkr@e4e2Z5e0ej6Z7e8ee8d e7fe7Z6d!Z9e:;e5e j<r e j*ej=d"fe j ej>d#ffD]H\Z?Z6Z9e?re4e2Z5e6ej_6e8d$e8ejj6e:;e5qWdn1s60YdS)%z( Unit tests version 2.6.1.0 for adodbapiNTF) ado_constscCs |dS)Nlatin1)encode)Zsvalr;C:\Program Files\Certbot\pkgs\adodbapi\test\adodbapitest.py str2bytes9srcCsdddtdDS)NcSsg|]}ttjqSr)randomchoicestring ascii_letters).0nrrr Az randomstring.. )joinrange)lengthrrr randomstring@src@szeZdZdZddZddZddZdd Zd d Zd d Z ddZ ddZ ddZ ddZ ddZddZd]ddZddZdd Zd!d"Zd#d$Zd%d&Zd'd(Zd)d*Zd+d,Zd-d.Zd/d0Zd1d2Zd3d4Zd5d6Zd7d8Zd9d:Zd;d<Z d=d>Z!d?d@Z"dAdBZ#dCdDZ$dEdFZ%dGdHZ&dIdJZ'dKdLZ(dMdNZ)dOdPZ*dQdRZ+dSdTZ,dUdVZ-dWdXZ.dYdZZ/d[d\Z0dS)^ CommonDBTestszdSelf contained super-simple tests in easy syntax, should work on everything between mySQL and OraclecCs d|_dS)NunknownengineselfrrrsetUpGszCommonDBTests.setUpcCs|jSNrrrrr getEngineJszCommonDBTests.getEnginecCstdSrNotImplementedErrorrrrr getConnectionMszCommonDBTests.getConnectioncCs |Sr)r!cursorrrrr getCursorPszCommonDBTests.getCursorcCs|}|jjdksJdS)NZCursor)r# __class____name__rcrsrrrrtestConnectionSszCommonDBTests.testConnectioncCs:|js6|}dd}||_|}|j|ks6JddS)NcSsdSNr connectionr"Z errorclassZ errorvaluerrrZrz8CommonDBTests.testErrorHandlerInherits..z5Error handler on crsr should be same as on connection)remoter! errorhandlerr")rconn mycallabler'rrrtestErrorHandlerInheritsWsz&CommonDBTests.testErrorHandlerInheritscCs|js||}|jdd=z||WnLt|jdksHJt|jddks^J|jddtjksvJYn0dS)Nr*r)r.r!messagesclosecommitlenapiZProgrammingError)rr0rrr!testDefaultErrorHandlerConnectionas  z/CommonDBTests.testDefaultErrorHandlerConnectioncCs|jr dSdd}|}||_||t|jdksBJd|_z||Wn Yn0t|jdksJddS)NcSsdSr)rr+rrrr-qrz=CommonDBTests.testOwnErrorHandlerConnection..rJSetting errorhandler to none should bring back the standard error handler)r.r!r/r5r6r7r4)rr1r0rrrtestOwnErrorHandlerConnectionms&  z+CommonDBTests.testOwnErrorHandlerConnectioncCs~|}|jsz|jdd=z|dWnLt|jdksFJt|jddks\J|jddtjkstJYn0dS)NSELECT abbtytddrf FROM dasdasdr*rr3)r!r"r.r4executer7r8 DatabaseErrorr&rrrtestDefaultErrorHandlerCursors  z+CommonDBTests.testDefaultErrorHandlerCursorcCs||jr dSdd}|}||_|dt|jdks@Jd|_z|dWn Yn0t|jdksxJddS)NcSsdSr)rr+rrrr-rz9CommonDBTests.testOwnErrorHandlerCursor..r<rr:)r.r!r"r/r=r7r4)rr1r'rrrtestOwnErrorHandlerCursors"   z'CommonDBTests.testOwnErrorHandlerCursorc s|jr dSz\dd}|ddks&J|||tfdddg|jsHttj_}dt j }| || dt j | d t j |jtj <| d t j | }|d }||d d|d }||d d ||d ddd}|ddksJ||jd <||d d ||d dWz`Wn Yn0|n z`Wn Yn0|0dS)NcSs|dS)Nr3rZ aStringFieldrrrr-rz:CommonDBTests.testUserDefinedConversions..ZgabbaZ gabbagabbacs j|Sr)variantConversionsxr0rrr-rr3zDCREATE TABLE xx_%s (fldData VARCHAR(100) NOT NULL, fld2 VARCHAR(20))z7INSERT INTO xx_%s(fldData,fld2) VALUES('gabba','booga')z2INSERT INTO xx_%s(fldData,fld2) VALUES('hey','yo')z/SELECT fldData,fld2 FROM xx_%s ORDER BY fldDatarr*ZheyheyZyoyocSs|Sr)upperrArrrr-rZupThisZUPTHISZYO)r.helpForceDropOnTblTempr! assertRaisesAttributeErrorcopyr8rBr"configtmpr=ZadoStringTypesfetchall assertEqualZ convertershelpRollbackTblTemp)rZduplicatingConverterr'tabdefZrowsrowZupcaseConverterrrErtestUserDefinedConversionssb    z(CommonDBTests.testUserDefinedConversionsc Cs|jstjdkrtjtj}ztjtjtj<|jddddd|jdddddtj tjtj<|dddd d tjtj<|jdddd gd W|tjtj<n|tjtj<0dS) N)r decimal(18,2)NUMBER皙 @r*compareAlmostEqual numeric(18,2)3.45cSsd|S)Nz3!!This function returns a funny unicode string %s!!rrCrrrr-rzMCommonDBTests.testUserDefinedConversionForExactNumericTypes..z5!!This function returns a funny unicode string 3.45!!allowedReturnValues) r.sys version_infoadodbapirBrZ adNumericZcvtFloathelpTestDataTypeZ cvtString)rZ oldconverterrrr-testUserDefinedConversionForExactNumericTypess>  z;CommonDBTests.testUserDefinedConversionForExactNumericTypesNcCs||}|}dtj|d} || |dtj|dtj|} || dd| ddks|J|jd} | ddvsJd| dd f|d kr| dt j ksJd| dt j j fn|d kr | dt j ksJd| dt j j fn|d kr@| dt j ksJd| dt j j fn|d krt| dt jksJd| dt jj fnl|dkr| dt jksJd| dt jj fn8|dkr| dt jksJd| dt jj fnt|g} |r| |t| } d} | D]}| d7} z|dtj| |fWn6|jrV|jD]}t|qDn|Yn0|dtj| g|} |rtdd|D}t| d|sJdt| d|fn0t| dt|sJdt| dt|f|r.|d kr.tj| d}tj|}|||n|rtt|}t| d}t|||dksJd| d|fnN|rd}| | d|vdt!| d|fn|| d|d| d|fqdS)Nzb CREATE TABLE xx_%s ( fldId integer NOT NULL, fldData z) z$INSERT INTO xx_%s (fldId) VALUES (1)zSELECT fldId,fldData FROM xx_%sr*r)fldDataZflddatazwas "%s" expected "%s"rbSTRINGrUBINARYDATETIMEROWIDUUIDz.INSERT INTO xx_%s (fldId,fldData) VALUES (?,?)z'SELECT fldData FROM xx_%s WHERE ?=fldIDcSsg|] }t|qSr)type)r ZaRVrrrrgrz2CommonDBTests.helpTestDataType..z"result type "%s" must be one of %sz'result type "%s" must be instance of %sgh㈵>z-Values not almost equal recvd=%s, expected=%fFzValue "%s" not in %sz.Values are not equal recvd="%s", expected="%s")"rGr!r"rKrLr=fetchonerN descriptionr8rcvaluesrUrdrerfZOTHERr extendsetr.r4printprintADOerrorstuple isinstancerhr_ dateconverterDateObjectToIsoFormatStringfloatabsZ assertTruerepr)rZsqlDataTypeStringZDBAPIDataTypeStringZpyDataZpyDataInputAlternativesrXr\r0r'rPrsZ descTupleinputsfldIdinParammessageZ allowedTypesZiso1Ziso2svokrrrr`s                        zCommonDBTests.helpTestDataTypecCs(|jddddd|jddddddS)NrealrUrVTrWrtgdFGr`rrrrtestDataTypeFloatszCommonDBTests.testDataTypeFloatc Cs~|jdddddtdgd|jdddddtdgd|jddd d d td gd|d krz|jddddgddS)NrTrUrVrZz3,45r[rYz decimal(20,2)lG#xoW1z444444444444444444.00z444444444444444444,00Z444444444444444444MSSQLZuniqueidentifierrgz&{71A4F49E-39F3-42B1-A41E-48FF154996E6})r`decimalDecimalrrrrrtestDataTypeDecmals8 z CommonDBTests.testDataTypeDecmalc Cs|dkr"|ddtdnZ|dkrT|jddtdddtdgd n(|d dtd |ddtddS) NMySQLz DECIMAL(20,4)rUz-922337203685477.5808 PostgreSQLZmoneyTg-C6 )rXr\Z smallmoneyz 214748.02)rr`rrrrrrtestDataTypeMoneys$     zCommonDBTests.testDataTypeMoneycCsz|dkr|ddd|ddd|dvrB|ddd |d vrh|jd dd d td gd |ddddS)NrZtinyintrUsZsmallinti)ACCESSrbitr*)rrZbigintl^er[inti)rr`rrrrrtestDataTypeInts    zCommonDBTests.testDataTypeIntcCs$dD]}|j|ddgddqdS)N)zchar(6)znchar(6)rcspam )spamrrrr[r)r sqlDataTyperrrtestDataTypeCharszCommonDBTests.testDataTypeCharcCsT|dkrddg}n|dkr,gd}ngd}|D]}||dddgq8dS) Nr varchar(10)textr)rrzcharacter varying)rz nvarchar(10)rZntextrcr)rr`)rZ stringKindsrrrrtestDataTypeVarChars    z!CommonDBTests.testDataTypeVarCharc Cs|dkrd}nd}|j|dtddddd |d vrZ|jd dtddddd td kr|d vr|j|dtdddd dddd dS)NrZ timestampdatetimere TrW)rrZ smalldatetime pythontime r*)rr`r_Datetag Timestamp)rdtrrrtestDataTypeDates(   zCommonDBTests.testDataTypeDatecCstd}|t|t|g}|dkrB|jddt||dnT|jddt||d|jddt||d|dkr|jd dt||ddS) Nuâ@*rZbyteardr[z binary(5)zvarbinary(100)rZimage)rr_ZBinarybytesrr`)rZbinfldZarvrrrtestDataTypeBinary s&  z CommonDBTests.testDataTypeBinarycCs |dSr)rGrrrrrOsz!CommonDBTests.helpRollbackTblTempcCsd|}|@}z"|dtj|js2|Wn Yn0Wdn1sV0YdS)NzDROP TABLE xx_%s)r!r"r=rKrL autocommitr6)rr0r'rrrrG"s  z$CommonDBTests.helpForceDropOnTblTempcCsfdtj}z||Wn&tjy>|||Yn0tdD]}|dtj|fqHdS)Nz\ CREATE TABLE xx_%s ( fldData INTEGER ) z'INSERT INTO xx_%s (fldData) VALUES (%i))rKrLr=r8r>rGr)rr'rPirrrhelpCreateAndPopulateTableTemp,s z,CommonDBTests.helpCreateAndPopulateTableTempcCst|}|||dtj|}t|dks:Jd}|ddD]}|d|ks^J|d7}qJ|dS)NSELECT fldData FROM xx_%srrSrr*)r#rr=rKrLrMr7rO)rr'rwrrQrrr testFetchAll>s  zCommonDBTests.testFetchAllcCsf|}|||dtj||j|}t|dksFJ|dddksZJ| dS)Nrrr3r) r#rpreparerKrLr=commandrMr7rOrr'rwrrrtestPreparedStatementKs  z#CommonDBTests.testPreparedStatementcCsd|}|||d|dtj|}t|dksDJ|dddksXJ|dS)NzSELECT * FROM nowhererrr3r) r#rrr=rKrLrMr7rOrrrrtestWrongPreparedStatementUs  z(CommonDBTests.testWrongPreparedStatementcCsP|}|||dtjt|D]\}}|d|ks*Jq*|dS)Nrr)r#rr=rKrL enumeraterO)rr'rrQrrr testIteratoras  zCommonDBTests.testIteratorcCs|}||ddg}|dtj||jdkrHt|dn||jd| dtj| }t |dks~J| dS) N)o)z&INSERT INTO xx_%s (fldData) VALUES (?)z7 Provider does not support rowcount (on .executemany())r3r ) r#rZ executemanyrKrLrowcountrnrrNr=rMr7rO)rr'Z seq_of_valuesrwrrrtestExecuteManyks"   zCommonDBTests.testExecuteManycCsH|}|||dtj|jdkr.n||jd|dS)Nrrr)r#rr=rKrLrrNrOr&rrr testRowCount~s  zCommonDBTests.testRowCountcCsX|}|||dtj|jdkr>t|dn||jd| dS)Nz$DELETE FROM xx_%s WHERE fldData >= 5rz/ Provider does not support rowcount (on DELETE)) r#rr=rKrLrrnrrNrOr&rrrtestRowCountNoRecordsets  z%CommonDBTests.testRowCountNoRecordsetcCs||}|||dtj|d}t|dksdb)rr0kwrrrtestErrorConnects  zCommonDBTests.testErrorConnectc Csv||}|}dtj}||ddg}d}|D]d}|d7}z*|dtj||d|d|dfWn2|jr|jD] }t|qn| Yn0|dtj|g| }t t |D],} || || ksJd || || fqt ||ks$Jd t|t|ft |dd } t |dd} | | ksfJd t| t| f|d |dks|J|j|dksJ|j|dksrvrO)rrr'rrwrQrrrtestAutoRollback*s8        zCommonDBTests.testAutoRollbackcCsz|ddi}Wnty&YdS0|}|||dtj||@}dtj}||| }t |dksJdWdn1s0Y|| dS)NrTrrr#all records should still be present) rr r"rr=rKrLr5r#rMr7rO)rac_connr'rrwrrrtestAutoCommitGs"    2zCommonDBTests.testAutoCommitcCsz |}Wnty YdS0d|_|}|||dtj|| }|| @}dtj}||| }t |dksJdWdn1s0Y| dS)NTrrrr)rr rr"rr=rKrLr5r!r#rMr7rO)rrr'r0rrwrrrtestSwitchedAutoCommitZs&     2z$CommonDBTests.testSwitchedAutoCommitc Cs(Gdddt}Gdddt}Gdddt}|td}|tdd }|t}||}|}d t j } | | | d t j |||f| |}| V}d t j } | | |} || j||| j||| j|Wdn1s0Y|dS) Nc@s eZdZdS)z;CommonDBTests.testExtendedTypeHandling..XtendStringNr% __module__ __qualname__rrrr XtendStringpsrc@s eZdZdS)z8CommonDBTests.testExtendedTypeHandling..XtendIntNrrrrrXtendIntssrc@s eZdZdS)z:CommonDBTests.testExtendedTypeHandling..XtendFloatNrrrrr XtendFloatvsrriiz CREATE TABLE xx_%s ( s VARCHAR(40) NOT NULL, i INTEGER NOT NULL, f REAL NOT NULL)z,INSERT INTO xx_%s (s, i, f) VALUES (?, ?, ?)zSELECT s, i, f from xx_%s)strrrtrr ZrandintrGr!r"rKrLr=r5r#rirNr|rZassertAlmostEqualfrO) rrrrZxsZxiZxfr0r'rPrrQrrrtestExtendedTypeHandlingos:     .z&CommonDBTests.testExtendedTypeHandling)NNN)1r%rr__doc__rrr!r#r(r2r9r;r?r@rRrar`rrrrrrrrrOrGrrrrrrrrrrrrrrrrrrrrrrrrrrrDsd   70          IB24Qrc@sNeZdZddZddZddZddd Zd d Zd d ZddZ ddZ dS)TestADOwithSQLServercCsDtjtjditjd|_d|j_d|_tj|_tjd|_dS)Nrr*rrr3)rKdbSqlServerconnectconnStrSQLServerr0timeoutrrr.rrrrrszTestADOwithSQLServer.setUpcCsBz|jWn Yn0z|jWn Yn0d|_dSrr0rr5rrrrtearDownszTestADOwithSQLServer.tearDowncCs|jSrrErrrrr!sz"TestADOwithSQLServer.getConnectionNcCs2ttjd}|r||tjtjdi|SNr*r)dictrKrupdaterraddkeyskeysrrrrs z)TestADOwithSQLServer.getAnotherConnectioncCs|j}d}z|d|jWn Yn0|||dd}|ddksjJdt|d|dd ksJd t|d|d d ksJd t|d |jdS)Na CREATE PROCEDURE sp_DeleteMeOnlyForTesting @theInput varchar(50), @theOtherInput varchar(50), @theOutput varchar(100) OUTPUT AS SET @theOutput=@theInput+@theOtherInput (DROP PROCEDURE sp_DeleteMeOnlyForTestingsp_DeleteMeOnlyForTesting) DodsworthAnnez rr z%s is not "Dodsworth"r*r z%s is not "Anne"r3Z DodsworthAnnez%s is not "DodsworthAnne")r0r"r=r6callprocrvr)rr'spdef retvaluesrrr$testVariableReturningStoredProcedures"     z9TestADOwithSQLServer.testVariableReturningStoredProcedurecCs|}||dtjtjtjf}z|d|jWn Yn0|||d}|}| |dd| dksJd| rJd| dksJd| }| |ddd | dksJd | dS) Na CREATE PROCEDURE sp_DeleteMe_OnlyForTesting AS SELECT fldData FROM xx_%s ORDER BY fldData ASC SELECT fldData From xx_%s where fldData = -9999 SELECT fldData FROM xx_%s ORDER BY fldData DESC z)DROP PROCEDURE sp_DeleteMe_OnlyForTestingZsp_DeleteMe_OnlyForTestingrTzOperation should succeedzShould be an empty second setzthird set should be presentz'No more return sets, should return None) r#rrKrLr=r0r6rrirNZnextsetrMrO)rr'rrrQZrowdescrrrtestMultipleSetReturns0     z*TestADOwithSQLServer.testMultipleSetReturnc Cs|j}d}z|d|jWn Yn0|||dtddddddd d g}|d d ks|Jd |d |jdS)Na1 CREATE PROCEDURE sp_DeleteMeOnlyForTesting @theInput DATETIME, @theOtherInput varchar(50), @theOutput varchar(100) OUTPUT AS SET @theOutput = CONVERT(CHARACTER(20), @theInput, 0) + @theOtherInput r r irrr*ZBeepz r3zDec 25 2014 12:01AM Beepzvalue was="%s")r0r"r=r6rr_rrrr'rresultrrrtestDatetimeProcedureParameters   z3TestADOwithSQLServer.testDatetimeProcedureParametercCs|j}d}z|d|jWn Yn0||ttjtjf|j dgdgdi}|drdt |dvsd t |vsJd n|dsJ|d|j dS) Na. CREATE PROCEDURE sp_DeleteMeOnlyForTesting @theInput DATETIME, @theOtherInput varchar(50), @theOutput varchar(100) OUTPUT AS SET @theOutput = CONVERT(CHARACTER(20), @theInput) + @theOtherInput r r r)z this is wrongr z not Alicerz @theInputr*r>z(Identifies the wrong erroneous parameter) r0r"r=r6 tryconnectionZ%try_operation_with_expected_exceptionr8Z DataErrorr>rrrrrrr%testIncorrectStoredProcedureParameter s,     z:TestADOwithSQLServer.testIncorrectStoredProcedureParameter)N) r%rrrrr!rrrrrrrrrrs   "rc@s6eZdZddZddZddZd dd Zd d ZdS) TestADOwithAccessDBcCsDtjtjditjd|_d|j_d|_tj|_tjd|_dS)Nrr*rrr3)rKZdbAccessconnect connStrAccessr0rrrr.rrrrr/szTestADOwithAccessDB.setUpcCsBz|jWn Yn0z|jWn Yn0d|_dSrrrrrrr8szTestADOwithAccessDB.tearDowncCs|jSrrErrrrr!Csz!TestADOwithAccessDB.getConnectionNcCs tddS)Nz2Jet cannot use a second connection to the databaser)rrrrrrFsz(TestADOwithAccessDB.getAnotherConnectioncCs4|jtjditjd}|dks(J|dSNrr*)rrKrr5rcrrr testOkConnectIs z!TestADOwithAccessDB.testOkConnect)Nr%rrrrr!rrrrrrr.s    rc@s6eZdZddZddZddZd dd Zd d ZdS) TestADOwithMySqlcCsDtjtjditjd|_d|j_d|_tj|_tjd|_dS)Nrr*rrr3)rKdbMySqlconnect connStrMySqlr0rrrr.rrrrrPszTestADOwithMySql.setUpcCsBz|jWn Yn0z|jWn Yn0d|_dSrrrrrrrYszTestADOwithMySql.tearDowncCs|jSrrErrrrr!dszTestADOwithMySql.getConnectionNcCs2ttjd}|r||tjtjdi|Sr)rrKr#rr"rrrrrgs z%TestADOwithMySql.getAnotherConnectioncCs,|jtjditjd}|dks(JdSr)rrKr#rrrrrmszTestADOwithMySql.testOkConnect)Nr rrrrr!Os    r!c@s6eZdZddZddZddZd dd Zd d ZdS) TestADOwithPostgrescCsDtjtjditjd|_d|j_d|_tj|_tjd|_dS)Nrr*rrr3)rKdbPostgresConnectconnStrPostgresr0rrrr.rrrrrszTestADOwithPostgres.setUpcCsBz|jWn Yn0z|jWn Yn0d|_dSrrrrrrrszTestADOwithPostgres.tearDowncCs|jSrrErrrrr!sz!TestADOwithPostgres.getConnectionNcCs2ttjd}|r||tjtjdi|Sr)rrKr&rr%rrrrrs z(TestADOwithPostgres.getAnotherConnectioncCs,|jtjditjd}|dks(JdSr)rrKr&rrrrrsz!TestADOwithPostgres.testOkConnect)Nr rrrrr$s    r$c@sLeZdZddZddZddZddZd d Zd d Zd dZ ddZ dS)TimeConverterInterfaceTestcCs|jdddsJdS)Nr3)tcrrrrr testIDatesz$TimeConverterInterfaceTest.testIDatecCs|jdddsJdS)N r3)r)Timerrrr testITimesz$TimeConverterInterfaceTest.testITimecCs|jddddddsJdS)Nr(r3r+r*)r)rrrrrtestITimestampsz)TimeConverterInterfaceTest.testITimestampcCs|jdsJdS)N?mUxG@)r)DateObjectFromCOMDaterrrrtestIDateObjectFromCOMDatesz5TimeConverterInterfaceTest.testIDateObjectFromCOMDatecCst|jdsJdS)NCOMDate)hasattrr)rrrr testICOMDatesz'TimeConverterInterfaceTest.testICOMDatecCs4|jddd}|j|}d}||ks0J|dS)Nrrg@)r)rr2rdZcomDateZcorrectrrr testExactDates z(TimeConverterInterfaceTest.testExactDatecCsh|jdddddd}|j|}d}||||jddd d dd }|j|}d }|||dS) Nr5rrrrg@rgSsn@)r)rr2rNr6rrrtestExactTimestamps   z-TimeConverterInterfaceTest.testExactTimestampcCsr|jdddddd}|j|}|t|ddd|jd d d }|j|}|t|ddd dS) Nr5rrrrSrz1994-11-15 12:03:10r9rr3z 2003-05-02)r)rrsrNrr)rr7Zisorrrr testIsoFormats   z(TimeConverterInterfaceTest.testIsoFormatN) r%rrr*r-r.r1r4r8r=r?rrrrr's r'c@s<eZdZddZddZddZddZd d Zd d Zd S)TestMXDateTimeConvertercCst|_dSr)r8mxDateTimeConverterr)rrrrrszTestMXDateTimeConverter.setUpcCs6tjdddddd}|j|}||ks2JdS)Nrr:rrr3)mxDateTimer)r2rtcmdrrr testCOMDates z#TestMXDateTimeConverter.testCOMDatecCsV|jd}tjdddddd}tjdddddd}||krL|ksRnJdS) Nr/rr:rrBrrr3)r)r0rCrD)rrGrFt2rrrtestDateObjectFromCOMDates z1TestMXDateTimeConverter.testDateObjectFromCOMDatecCs(tjddd|jdddks$JdS)Nirr)rCrDrr)rrrrtestDate sz TestMXDateTimeConverter.testDatecCs(tjddd|jdddks$JdS)Nr+rr)rCrDr,r)rrrrtestTimesz TestMXDateTimeConverter.testTimecCs<tjdddddd}|jdddddd}||ks8JdS)Nrr:rrBrr*)rCrDr)r)rrFobjrrr testTimestampsz%TestMXDateTimeConverter.testTimestampN r%rrrrHrJrKrLrNrrrrr@s r@c@s<eZdZddZddZddZddZd d Zd d Zd S)TestPythonTimeConvertercCst|_dSr)r8pythonTimeConverterr)rrrrrszTestPythonTimeConverter.setUpcCs@td}t|}|j|}t|ddks|ksHnJ|dS)N) rr:rrBrr*rr) rr:rrBrr*rrRrrr:rX)rTrUr)rrrZrIrMrrrrK0s  z TestPythonTimeConverter.testDatecCs"||jdddtddS)NrBrr3i)rNr)r,rTrYrrrrrL6sz TestPythonTimeConverter.testTimecCsXttd}ttd}|jdddddd}||krJ|ksTnJ|dS) N) rr:rrBr;r*rrRr) rr:rrBr*rrRrrr:rrBrr3)rTrVrUr)rr\rrrrN;sz%TestPythonTimeConverter.testTimestampNrOrrrrrPs  rPc@s<eZdZddZddZddZddZd d Zd d Zd S)TestPythonDateTimeConvertercCst|_dSr)r8ZpythonDateTimeConverterr)rrrrrGsz!TestPythonDateTimeConverter.setUpcCs<tdddddd}|j|}t|ddks8Jd dS) Nrr:rrBrr*r/rSzmore than an hour wrong)rr)r2rurErrrrHJs z'TestPythonDateTimeConverter.testCOMDatec Cs|jd}tdddddd}tdddddd}||krH|ksRnJ|tddddddd }|j|j|}||kr|ksnJ|dS) Nr/rr:rrBr;r*r]i )r)r0rr2)rrGrZrIZtxZc1rrrrJPs z5TestPythonDateTimeConverter.testDateObjectFromCOMDatecCsNtddd}tddd}|jddd}||kr@|ksJnJ|dS)Nrr:rrrX)rdater)rr\rrrrK\sz$TestPythonDateTimeConverter.testDatecCs(||jdddddddS)NrBrr3rz18:15:02)rNr)r,Z isoformatrrrrrLbsz$TestPythonDateTimeConverter.testTimecCs`tdddddd}tdddddd}|jdddddd }||krR|ks\nJ|dS) Nrr:rrBr;r*r]rr3)rr)rr\rrrrNesz)TestPythonDateTimeConverter.testTimestampNrOrrrrr^Fs  r^testc@seZdZddZddZdS)cleanup_managercCsdSrrrrrr __enter__~szcleanup_manager.__enter__cCsttjtjdSr)rKZcleanupZ testfolderZmdb_name)rexc_typeZexc_valZexc_tbrrr__exit__szcleanup_manager.__exit__N)r%rrrbrdrrrrra}sra__main__zDefault Date Converter is %srrrCzChanged dateconverter to )@rrJrrr r r]ZunittestZwin32com.clientZwin32comwin32 ImportErrorZadodbapitestconfigrKrr_Zadodbapi.apibaseZapibaser8Zadodbapi.ado_constsrrrZlongrZTestCaserrrr!r$r'ZdoMxDateTimeTestZ mx.DateTimerCr@rTrPr^ZsuitesappendZ makeSuiteZ doTimeTestZ doAccessTestZdoSqlServerTestZ doMySqlTestZdoPostgresTestobjectraZ TestSuiteZsuiter%deepcopyZmysuiterrZdefaultDateConverterrnrZTextTestRunnerrunZiterateOverTimeTestsrQrAr`rrrrs      ]!B<+,&