a „oe±ëã @sDdZddlZddlZddlZddlZddlZddlZddlZzddlZ dZ Wne ybdZ Yn0ddl Z ddlZddlZddlmZzddlmZWn>e yÖz ddlZWne yÐddlmZYn0Yn0dd„ZeZdd „ZGd d „d ejƒZGd d „d eƒZGdd„deƒZGdd„deƒZGdd„deƒZGdd„dejƒZe j �r`ddl!Z"Gdd„deƒZ#ddl$Z$Gdd„deƒZ%Gdd„deƒZ&gZ'e' (e )e&d¡¡e j �rÈe' (e )e#d¡¡e j*�râe' (e )e%d¡¡e j+�rüe' (e )ed¡¡e j,�re' (e )ed¡¡e j-�r0e' (e )ed¡¡e j.�rJe' (e )ed¡¡Gdd„de/ƒZ0e 1e'¡Z2e3dk�r@e 4e2¡Z5e0ƒ�°ej6Z7e8eƒe8d e7fƒe7Z6d!Z9e :¡ ;e5¡e j<�r e j*ej=d"fe j ej>d#ffD]H\Z?Z6Z9e?�rÖe 4e2¡Z5e6ƒej_6e8d$ƒe8ejj6ƒe :¡ ;e5¡�qÖWdƒn1�s60YdS)%z( Unit tests version 2.6.1.0 for adodbapiéNTF)Ú ado_constscCs | d¡S)NÚlatin1)Úencode)Zsval©rú;C:\Program Files\Certbot\pkgs\adodbapi\test\adodbapitest.pyÚ str2bytes9srcCsd dd„tdƒDƒ¡S)NÚcSsg|]}t tj¡‘qSr)ÚrandomÚchoiceÚstringÚ ascii_letters)Ú.0ÚnrrrÚ Aóz randomstring..é )ÚjoinÚrange)ÚlengthrrrÚ randomstring@src@szeZdZdZdd„Zdd„Zdd„Zdd „Zd d „Zd d „Z dd„Z dd„Z dd„Z dd„Z dd„Zdd„Zd]dd„Zdd„Zdd „Zd!d"„Zd#d$„Zd%d&„Zd'd(„Zd)d*„Zd+d,„Zd-d.„Zd/d0„Zd1d2„Zd3d4„Zd5d6„Zd7d8„Zd9d:„Zd;d<„Z d=d>„Z!d?d@„Z"dAdB„Z#dCdD„Z$dEdF„Z%dGdH„Z&dIdJ„Z'dKdL„Z(dMdN„Z)dOdP„Z*dQdR„Z+dSdT„Z,dUdV„Z-dWdX„Z.dYdZ„Z/d[d\„Z0dS)^Ú CommonDBTestszdSelf contained super-simple tests in easy syntax, should work on everything between mySQL and OraclecCs d|_dS)NÚunknown©Úengine©ÚselfrrrÚsetUpGszCommonDBTests.setUpcCs|jS©NrrrrrÚ getEngineJszCommonDBTests.getEnginecCst‚dSr©ÚNotImplementedErrorrrrrÚ getConnectionMszCommonDBTests.getConnectioncCs | ¡ ¡Sr)r!ÚcursorrrrrÚ getCursorPszCommonDBTests.getCursorcCs| ¡}|jjdksJ‚dS)NZCursor)r#Ú __class__Ú__name__©rÚcrsrrrrÚtestConnectionSszCommonDBTests.testConnectioncCs:|js6| ¡}dd„}||_| ¡}|j|ks6Jdƒ‚dS)NcSsdS©Nér©Ú connectionr"Z errorclassZ errorvaluerrrÚZrz8CommonDBTests.testErrorHandlerInherits..z5Error handler on crsr should be same as on connection)Úremoter!Ú errorhandlerr")rÚconnÚ mycallabler'rrrÚtestErrorHandlerInheritsWsÿþz&CommonDBTests.testErrorHandlerInheritscCs€|js|| ¡}|jdd…=z| ¡| ¡WnLt|jƒdksHJ‚t|jdƒdks^J‚|jddtjksvJ‚Yn0dS)Nr*ré)r.r!ÚmessagesÚcloseÚcommitÚlenÚapiZProgrammingError)rr0rrrÚ!testDefaultErrorHandlerConnectionas  z/CommonDBTests.testDefaultErrorHandlerConnectioncCs„|jr dSdd„}| ¡}||_| ¡| ¡t|jƒdksBJ‚d|_z| ¡| ¡Wn Yn0t|jƒdks€Jdƒ‚dS)NcSsdSr)rr+rrrr-qrz=CommonDBTests.testOwnErrorHandlerConnection..rúJSetting errorhandler to none should bring back the standard error handler)r.r!r/r5r6r7r4)rr1r0rrrÚtestOwnErrorHandlerConnectionms&ÿ  ÿþz+CommonDBTests.testOwnErrorHandlerConnectioncCs~| ¡ ¡}|jsz|jdd…=z| d¡WnLt|jƒdksFJ‚t|jdƒdks\J‚|jddtjkstJ‚Yn0dS)NúSELECT abbtytddrf FROM dasdasdr*rr3)r!r"r.r4Úexecuter7r8Ú DatabaseErrorr&rrrÚtestDefaultErrorHandlerCursor„s  z+CommonDBTests.testDefaultErrorHandlerCursorcCs||jr dSdd„}| ¡ ¡}||_| d¡t|jƒdks@J‚d|_z| d¡Wn Yn0t|jƒdksxJdƒ‚dS)NcSsdSr)rr+rrrr-“rz9CommonDBTests.testOwnErrorHandlerCursor..r<rr:)r.r!r"r/r=r7r4)rr1r'rrrÚtestOwnErrorHandlerCursor�s"ÿ   ÿþz'CommonDBTests.testOwnErrorHandlerCursorc sŽ|jr dS�z\dd„}|dƒdks&J‚| ¡| ¡‰| t‡fdd„dg¡|j�sHt tj¡ˆ_ˆ ¡}dt j }|  |¡|  dt j ¡|  d t j ¡|ˆjtj <|  d t j ¡|  ¡}|d }| |d d¡|d }| |d d ¡| |d d¡dd„}|dƒdk�sJ‚||jd <| |d d ¡| |d d¡Wzˆ`Wn Yn0| ¡n zˆ`Wn Yn0| ¡0dS)NcSs|dS)Nr3r©Z aStringFieldrrrr-¨rz:CommonDBTests.testUserDefinedConversions..ZgabbaZ gabbagabbacs ˆj|Sr)ÚvariantConversions©Úx©r0rrr-®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!Ú assertRaisesÚAttributeErrorÚcopyr8rBr"ÚconfigÚtmpr=ZadoStringTypesÚfetchallÚ assertEqualZ convertersÚhelpRollbackTblTemp)rZduplicatingConverterr'ÚtabdefZrowsÚrowZupcaseConverterrrErÚtestUserDefinedConversions¤sbÿÿ ÿÿÿ ÿ  üz(CommonDBTests.testUserDefinedConversionsc Cs²|js®tjdkr®tjtj}z‚tjtjtj<|jddddd�|jddddd�tj tjtj<| ddd¡d 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_infoÚadodbapirBrZ adNumericZcvtFloatÚhelpTestDataTypeZ cvtString)rZ oldconverterrrrÚ-testUserDefinedConversionForExactNumericTypesÛs>ÿÿÿÿ ÿü þÿþÿz;CommonDBTests.testUserDefinedConversionForExactNumericTypesNcCsÊ| ¡| ¡}| ¡}dtj|d} | | ¡| dtj¡| dtj¡| ¡} | | dd¡| ddks|J‚|jd} | ddvs¦Jd| dd fƒ‚|d krØ| dt j ksÔJd| dt j j fƒ‚�n|d k�r | dt j k�sàJd| dt j j fƒ‚nÔ|d k�r@| dt j k�sàJd| dt j j fƒ‚n |d k�rt| dt jk�sàJd| dt jj fƒ‚nl|dk�r¨| dt jk�sàJd| dt jj fƒ‚n8|dk�rÜ| dt jk�sàJd| dt jj fƒ‚nt‚|g} |�rö|  |¡t| ƒ} d} | D�]¼}| d7} z| dtj| |f¡Wn6|j�rV|jD]}t|ƒ�qDn| ¡‚Yn0| dtj| g¡| ¡} |�rÄtdd„|Dƒƒ}t| d|ƒ�sôJdt| dƒ|fƒ‚n0t| dt|ƒƒ�sôJdt| dƒt|ƒfƒ‚|�r.|d k�r.tj | d¡}tj |¡}| ||¡n”|�rtt|ƒ}t| dƒ}t||ƒ|dk�sÂJd| d|fƒ‚nN|�r¤d}|  | d|vdt!| dƒ|f¡n| | d|d| d|f¡�qdS)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"rbÚSTRINGrUÚBINARYÚDATETIMEÚROWIDÚUUIDz.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 %sgñh㈵øä>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Ú descriptionr8rcÚvaluesrUrdrerfZOTHERr ÚextendÚsetr.r4ÚprintÚprintADOerrorsÚtupleÚ isinstancerhr_Ú dateconverterÚDateObjectToIsoFormatStringÚfloatÚabsZ assertTrueÚrepr)rZsqlDataTypeStringZDBAPIDataTypeStringZpyDataZpyDataInputAlternativesrXr\r0r'rPÚrsZ descTupleÚinputsÚfldIdÚinParamÚmessageZ allowedTypesZiso1Ziso2ÚsÚvÚokrrrr`sä üûúÿ  þþ  þ  þ  þ  þ  þ   þ  ÿÿþ ÿ þþ  ÿþ þ ÿýzCommonDBTests.helpTestDataTypecCs(|jddddd�|jddddd�dS)NÚrealrUrVTrWrtgd¶‚FÔîªG©r`rrrrÚtestDataTypeFloatŒszCommonDBTests.testDataTypeFloatc Cs~|jdddddt d¡gd�|jdddddt d¡gd�|jddd d d t d ¡gd�| ¡d krz|jddddgd�dS)NrTrUrVrZz3,45r[rYz decimal(20,2)lG#xoW1z444444444444444444.00z444444444444444444,00Z444444444444444444ÚMSSQLZuniqueidentifierrgz&{71A4F49E-39F3-42B1-A41E-48FF154996E6})r`ÚdecimalÚDecimalrrrrrÚtestDataTypeDecmal�s8üüýü üz CommonDBTests.testDataTypeDecmalc Cs€| ¡dkr"| ddt d¡¡nZ| ¡dkrT|jddt d¡ddt d¡gd �n(| d dt d ¡¡| ddt d¡¡dS) NÚMySQLz DECIMAL(20,4)rUz-922337203685477.5808Ú PostgreSQLZmoneyTg-Cëâ6 Ã)rXr\Z smallmoneyz 214748.02)rr`rƒr„rrrrÚtestDataTypeMoney¯s$  ÿ þû  ÿzCommonDBTests.testDataTypeMoneycCsz| ¡dkr| ddd¡| ddd¡| ¡dvrB| ddd ¡| ¡d vrh|jd dd d td ƒgd �| ddd¡dS)Nr‡ZtinyintrUésZsmallinti€ÿÿ)ÚACCESSr‡Úbitr*)r‚r‡Zbigintl^ er[Úintiÿÿÿ)rr`rŒrrrrÚtestDataTypeIntÅs  ÿ  üzCommonDBTests.testDataTypeIntcCs$dD]}|j|ddgd¢d�qdS)N)zchar(6)znchar(6)rcúspam )Úspamr�rŽrŽr[r€)rÚ sqlDataTyperrrÚtestDataTypeCharÖsüzCommonDBTests.testDataTypeCharcCsT| ¡dkrddg}n| ¡dkr,gd¢}ngd¢}|D]}| |dddg¡q8dS) Nr†ú varchar(10)Útextr‡)r’r“zcharacter varying)r’z nvarchar(10)r“Zntextrcr�)rr`)rZ stringKindsr�rrrÚtestDataTypeVarCharßs    z!CommonDBTests.testDataTypeVarCharc Cs”| ¡dkrd}nd}|j|dt ddd¡dd �| ¡d vrZ|jd dt ddd¡dd �td kr�| ¡d vr�|j|dt dddd dd¡dd �dS)Nr‡Z timestampÚdatetimereéÒé éTrW)r†r‡Z smalldatetimeÚ pythontimeé ér*)rr`r_ÚDateÚtagÚ Timestamp)rÚdtrrrÚtestDataTypeDateïs( ÿ  üüzCommonDBTests.testDataTypeDatecCsštdƒ}|t |¡t|ƒg}| ¡dkrB|jddt |¡|d�nT|jddt |¡|d�|jddt |¡|d�| ¡dkr–|jd dt |¡|d�dS) Nuâ@*r‡Zbyteardr[z binary(5)zvarbinary(100)r†Zimage)rr_ZBinaryÚbytesrr`)rZbinfldZarvrrrÚtestDataTypeBinary s& ÿÿü ÿz CommonDBTests.testDataTypeBinarycCs | ¡dSr)rGrrrrrOsz!CommonDBTests.helpRollbackTblTempcCsd| ¡}| ¡�@}z"| dtj¡|js2| ¡Wn Yn0Wdƒn1sV0YdS)NzDROP TABLE xx_%s)r!r"r=rKrLÚ autocommitr6)rr0r'rrrrG"s  z$CommonDBTests.helpForceDropOnTblTempcCsfdtj}z| |¡Wn&tjy>| ¡| |¡Yn0tdƒD]}| dtj|f¡qHdS)Nz\ CREATE TABLE xx_%s ( fldData INTEGER ) é z'INSERT INTO xx_%s (fldData) VALUES (%i))rKrLr=r8r>rGr)rr'rPÚirrrÚhelpCreateAndPopulateTableTemp,sûÿ z,CommonDBTests.helpCreateAndPopulateTableTempcCst| ¡}| |¡| dtj¡| ¡}t|ƒdks:J‚d}|dd…D]}|d|ks^J‚|d7}qJ| ¡dS)NúSELECT fldData FROM xx_%sr¤rSéþÿÿÿrr*)r#r¦r=rKrLrMr7rO)rr'rwr¥rQrrrÚ testFetchAll>s  zCommonDBTests.testFetchAllcCsf| ¡}| |¡| dtj¡| |j¡| ¡}t|ƒdksFJ‚|dddksZJ‚|  ¡dS)Nr§r¤r3r) r#r¦ÚpreparerKrLr=ÚcommandrMr7rO©rr'rwrrrÚtestPreparedStatementKs  z#CommonDBTests.testPreparedStatementcCsd| ¡}| |¡| d¡| dtj¡| ¡}t|ƒdksDJ‚|dddksXJ‚| ¡dS)NzSELECT * FROM nowherer§r¤r3r) r#r¦rªr=rKrLrMr7rOr¬rrrÚtestWrongPreparedStatementUs  ÿz(CommonDBTests.testWrongPreparedStatementcCsP| ¡}| |¡| dtj¡t|ƒD]\}}|d|ks*J‚q*| ¡dS)Nr§r)r#r¦r=rKrLÚ enumeraterO)rr'r¥rQrrrÚ testIteratoras ÿ zCommonDBTests.testIteratorcCsŠ| ¡}| |¡ddg}| dtj|¡|jdkrHt| ¡dƒn| |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#r¦Z executemanyrKrLÚrowcountrnrrNr=rMr7rO)rr'Z seq_of_valuesrwrrrÚtestExecuteManyks"  ÿ ÿÿzCommonDBTests.testExecuteManycCsH| ¡}| |¡| dtj¡|jdkr.n| |jd¡| ¡dS)Nr§r³r¤)r#r¦r=rKrLrµrNrOr&rrrÚ testRowCount~s  zCommonDBTests.testRowCountcCsX| ¡}| |¡| dtj¡|jdkr>t| ¡dƒn| |jd¡|  ¡dS)Nz$DELETE FROM xx_%s WHERE fldData >= 5r³z/ Provider does not support rowcount (on DELETE)é) r#r¦r=rKrLrµrnrrNrOr&rrrÚtestRowCountNoRecordset‰s  z%CommonDBTests.testRowCountNoRecordsetcCs|| ¡}| |¡| dtj¡| d¡}t|ƒdksÚdb)rr0ÚkwrrrÚtestErrorConnect®s  zCommonDBTests.testErrorConnectc Csv| ¡| ¡}| ¡}dtj}| |¡ddg}d}|D�]d}|d7}z*| dtj||d|d|df¡Wn2|jr˜|jD] }t|ƒqˆn|  ¡‚Yn0| dtj|g¡|  ¡}t t |ƒƒD],} || || ksÐJd || || fƒ‚qÐt |ƒ|k�s$Jd t|ƒt|ƒfƒ‚t |dd …ƒ} t |dd…ƒ} | | k�sfJd t| ƒt| ƒfƒ‚|d |dk�s|J‚|j|dk�s�J‚|j|dksrvrO)rrír'rérwrQrrrÚtestAutoRollback*s8     ÿ   ÿÿzCommonDBTests.testAutoRollbackcCs¾z| ddi¡}Wnty&YdS0| ¡}| |¡| dtj¡| ¡| ¡�@}dtj}| |¡|  ¡}t |ƒdksŒJdƒ‚Wdƒn1s 0Y| ¡|  ¡dS)Nr£Trårçr—ú#all records should still be present) rìr r"r¦r=rKrLr5r#rMr7rO)rÚac_connr'rérwrrrÚtestAutoCommitGs"    ÿ2zCommonDBTests.testAutoCommitcCsÆz | ¡}Wnty YdS0d|_| ¡}| |¡| dtj¡| ¡|  ¡}| ¡|  ¡�@}dtj}| |¡|  ¡}t |ƒdksœJdƒ‚Wdƒn1s°0Y|  ¡dS)NTrårçr—rð)rìr r£r"r¦r=rKrLr5r!r#rMr7rO)rrñr'r0rérwrrrÚtestSwitchedAutoCommitZs&     ÿ2z$CommonDBTests.testSwitchedAutoCommitc Cs(Gdd„dtƒ}Gdd„dtƒ}Gdd„dtƒ}|tdƒƒ}|t dd ¡ƒ}|t ¡ƒ}| ¡| ¡}| ¡}d t j } |  | ¡|  d t j |||f¡|  ¡| ¡}|  ¡�V}d t j } |  | ¡| ¡} | | j|¡| | j|¡| | j|¡Wdƒn1�s0Y| ¡dS) Nc@s eZdZdS)z;CommonDBTests.testExtendedTypeHandling..XtendStringN©r%Ú __module__Ú __qualname__rrrrÚ XtendStringpsr÷c@s eZdZdS)z8CommonDBTests.testExtendedTypeHandling..XtendIntNrôrrrrÚXtendIntssrøc@s eZdZdS)z:CommonDBTests.testExtendedTypeHandling..XtendFloatNrôrrrrÚ XtendFloatvsrùrÝiœÿÿÿiôzŽ 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)ÚstrrŒrtrr ZrandintrGr!r"rKrLr=r5r#rirNr|r¥ZassertAlmostEqualÚfrO) rr÷rørùZxsZxiZxfr0r'rPrérQrrrÚtestExtendedTypeHandlingos:  ûÿ ÿ  ÿ.z&CommonDBTests.testExtendedTypeHandling)NNN)1r%rõröÚ__doc__rrr!r#r(r2r9r;r?r@rRrar`r�r…rˆr�r‘r”r r¢rOrGr¦r©r­r®r°r¶r·r¹r¼r½rÁrÊrÕrârãrärêrîrïròrórürrrrrDsd   70ù          IB24Qrc@sNeZdZdd„Zdd„Zdd„Zddd „Zd d „Zd d „Zdd„Z dd„Z dS)ÚTestADOwithSQLServercCsDtjtjditjd¤Ž|_d|j_d|_tj|_tjd|_dS)Nrr*rÝr‚r3)rKÚdbSqlServerconnectÚconnStrSQLServerr0Útimeoutrr¿r.rrrrršsÿÿzTestADOwithSQLServer.setUpcCsBz|j ¡Wn Yn0z|j ¡Wn Yn0d|_dSr©r0rèr5rrrrÚtearDown£szTestADOwithSQLServer.tearDowncCs|jSrrErrrrr!®sz"TestADOwithSQLServer.getConnectionNcCs2ttjdƒ}|r| |¡tjtjdi|¤ŽS©Nr*r)ÚdictrKrÚupdaterÿ©rÚaddkeysÚkeysrrrrì±s z)TestADOwithSQLServer.getAnotherConnectioncCs¸|j ¡}d}z| d¡|j ¡Wn Yn0| |¡| dd¡}|ddksjJdt|dƒƒ‚|dd ksŠJd t|dƒƒ‚|d d ksªJd t|d ƒƒ‚|j ¡dS)Na CREATE PROCEDURE sp_DeleteMeOnlyForTesting @theInput varchar(50), @theOtherInput varchar(50), @theOutput varchar(100) OUTPUT AS SET @theOutput=@theInput+@theOtherInput ú(DROP PROCEDURE sp_DeleteMeOnlyForTestingÚsp_DeleteMeOnlyForTesting)Ú DodsworthÚAnnez rr z%s is not "Dodsworth"r*r z%s is not "Anne"r3Z DodsworthAnnez%s is not "DodsworthAnne")r0r"r=r6Úcallprocrvrè)rr'ÚspdefÚ retvaluesrrrÚ$testVariableReturningStoredProcedure·s"   ÿ  ÿz9TestADOwithSQLServer.testVariableReturningStoredProcedurecCsì| ¡}| |¡dtjtjtjf}z| d¡|j ¡Wn Yn0| |¡| d¡}| ¡}|  |dd¡|  ¡dksŒJdƒ‚|  ¡rœJdƒ‚|  ¡dks°Jdƒ‚|  ¡}|  |ddd ¡|  ¡dksàJd ƒ‚|  ¡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 presentéz'No more return sets, should return None) r#r¦rKrLr=r0r6rrirNZnextsetrMrO)rr'rrrQZrowdescrrrÚtestMultipleSetReturnÒs0 ýú    z*TestADOwithSQLServer.testMultipleSetReturnc CsŠ|j ¡}d}z| d¡|j ¡Wn Yn0| |¡| dt dddddd¡d d g¡}|d d ks|Jd |d ƒ‚|j ¡dS)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 iÞršérr*ZBeepz r3zDec 25 2014 12:01AM Beepzvalue was="%s")r0r"r=r6rr_ržrè©rr'rÚresultrrrÚtestDatetimeProcedureParameterôs   þz3TestADOwithSQLServer.testDatetimeProcedureParametercCs²|j ¡}d}z| d¡|j ¡Wn Yn0| |¡t tjtjf|j dgdgd¢i¡}|dr�dt |dƒvs¤d t |ƒvs¤Jd ƒ‚n|ds¤J|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>rrúrèrrrrÚ%testIncorrectStoredProcedureParameter s,     üÿþz:TestADOwithSQLServer.testIncorrectStoredProcedureParameter)N) r%rõrörrr!rìrrrrrrrrrþ™s   "rþc@s6eZdZdd„Zdd„Zdd„Zd dd „Zd d „ZdS) ÚTestADOwithAccessDBcCsDtjtjditjd¤Ž|_d|j_d|_tj|_tjd|_dS)Nrr*rÝrŠr3)rKZdbAccessconnectÚ connStrAccessr0rrr¿r.rrrrr/sÿÿzTestADOwithAccessDB.setUpcCsBz|j ¡Wn Yn0z|j ¡Wn Yn0d|_dSrrrrrrr8szTestADOwithAccessDB.tearDowncCs|jSrrErrrrr!Csz!TestADOwithAccessDB.getConnectionNcCs tdƒ‚dS)Nz2Jet cannot use a second connection to the databaser)rrrrrrìFsz(TestADOwithAccessDB.getAnotherConnectioncCs4|jtjditjd¤Ž}|dks(J‚| ¡dS©Nrr*)r¿rKrr5©rÚcrrrÚ testOkConnectIs z!TestADOwithAccessDB.testOkConnect)N©r%rõrörrr!rìrrrrrr.s    rc@s6eZdZdd„Zdd„Zdd„Zd dd „Zd d „ZdS) ÚTestADOwithMySqlcCsDtjtjditjd¤Ž|_d|j_d|_tj|_tjd|_dS)Nrr*rÝr†r3)rKÚdbMySqlconnectÚ connStrMySqlr0rrr¿r.rrrrrPsÿÿzTestADOwithMySql.setUpcCsBz|j ¡Wn Yn0z|j ¡Wn Yn0d|_dSrrrrrrrYszTestADOwithMySql.tearDowncCs|jSrrErrrrr!dszTestADOwithMySql.getConnectionNcCs2ttjdƒ}|r| |¡tjtjdi|¤ŽSr)rrKr#rr"rrrrrìgs z%TestADOwithMySql.getAnotherConnectioncCs,|jtjditjd¤Ž}|dks(J‚dSr)r¿rKr#rrrrrmszTestADOwithMySql.testOkConnect)Nr rrrrr!Os    r!c@s6eZdZdd„Zdd„Zdd„Zd dd „Zd d „ZdS) ÚTestADOwithPostgrescCsDtjtjditjd¤Ž|_d|j_d|_tj|_tjd|_dS)Nrr*rÝr‡r3)rKÚdbPostgresConnectÚconnStrPostgresr0rrr¿r.rrrrr’sÿÿzTestADOwithPostgres.setUpcCsBz|j ¡Wn Yn0z|j ¡Wn Yn0d|_dSrrrrrrr›szTestADOwithPostgres.tearDowncCs|jSrrErrrrr!¦sz!TestADOwithPostgres.getConnectionNcCs2ttjdƒ}|r| |¡tjtjdi|¤ŽSr)rrKr&rr%rrrrrì©s z(TestADOwithPostgres.getAnotherConnectioncCs,|jtjditjd¤Ž}|dks(J‚dSr)r¿rKr&rrrrr¯sz!TestADOwithPostgres.testOkConnect)Nr rrrrr$‘s    r$c@sLeZdZdd„Zdd„Zdd„Zdd„Zd d „Zd d „Zd d„Z dd„Z dS)ÚTimeConverterInterfaceTestcCs|j ddd¡sJ‚dS)NéÆr3)ÚtcrœrrrrÚ testIDateÎsz$TimeConverterInterfaceTest.testIDatecCs|j ddd¡sJ‚dS)Né r3)r)ÚTimerrrrÚ testITimeÑsz$TimeConverterInterfaceTest.testITimecCs|j dddddd¡sJ‚dS)Nr(r3r+r*)r)ržrrrrÚtestITimestampÔsz)TimeConverterInterfaceTest.testITimestampcCs|j d¡sJ‚dS)Nç?…mUxGâ@)r)ÚDateObjectFromCOMDaterrrrÚtestIDateObjectFromCOMDate×sz5TimeConverterInterfaceTest.testIDateObjectFromCOMDatecCst|jdƒsJ‚dS)NÚCOMDate)Úhasattrr)rrrrÚ testICOMDateÚsz'TimeConverterInterfaceTest.testICOMDatecCs4|j ddd¡}|j |¡}d}||ks0J|ƒ‚dS)NéÊr´r›g ëà@)r)rœr2©rÚdZcomDateZcorrectrrrÚ testExactDateÝs z(TimeConverterInterfaceTest.testExactDatecCsh|j dddddd¡}|j |¡}d}| ||¡|j ddd d dd ¡}|j |¡}d }| ||¡dS) Nr5r´r›ršrg°ëà@éÓrºééégS¢œsnâ@)r)ržr2rNr6rrrÚtestExactTimestampãs   z-TimeConverterInterfaceTest.testExactTimestampcCsr|j dddddd¡}|j |¡}| t|dd…ƒd¡|j d d d ¡}|j |¡}| t|dd…ƒd ¡dS) Nr5r´r›ršrSr—éz1994-11-15 12:03:10r9rºr3z 2003-05-02)r)ržrsrNrúrœ)rr7ZisorŸrrrÚ testIsoFormatîs   z(TimeConverterInterfaceTest.testIsoFormatN) r%rõrör*r-r.r1r4r8r=r?rrrrr'Ís r'c@s<eZdZdd„Zdd„Zdd„Zdd„Zd d „Zd d „Zd S)ÚTestMXDateTimeConvertercCst ¡|_dSr)r8ÚmxDateTimeConverterr)rrrrrýszTestMXDateTimeConverter.setUpcCs6tj dddddd¡}|j |¡}|| ¡ks2J‚dS)Nr–r:r˜ér›r3)ÚmxÚDateTimer)r2©rÚtÚcmdrrrÚ testCOMDates z#TestMXDateTimeConverter.testCOMDatecCsV|j d¡}tj dddddd¡}tj dddddd¡}||krL|ksRnJ‚dS) Nr/r–r:r˜rBr›rr3)r)r0rCrD)rrGrFÚt2rrrÚtestDateObjectFromCOMDates z1TestMXDateTimeConverter.testDateObjectFromCOMDatecCs(tj ddd¡|j ddd¡ks$J‚dS)Ni¼r´r¸)rCrDrœr)rrrrÚtestDate sz TestMXDateTimeConverter.testDatecCs(tj ddd¡|j ddd¡ks$J‚dS)Nr+r´r¸)rCrDr,r)rrrrÚtestTimesz TestMXDateTimeConverter.testTimecCs<tj dddddd¡}|j dddddd¡}||ks8J‚dS)Nr–r:r˜rBr›r*)rCrDr)rž)rrFÚobjrrrÚ testTimestampsz%TestMXDateTimeConverter.testTimestampN© r%rõrörrHrJrKrLrNrrrrr@üs r@c@s<eZdZdd„Zdd„Zdd„Zdd„Zd d „Zd d „Zd S)ÚTestPythonTimeConvertercCst ¡|_dSr)r8ÚpythonTimeConverterr)rrrrrszTestPythonTimeConverter.setUpcCs@t d¡}t |¡}|j |¡}t|dƒdks|ksHnJ|ƒ‚dS)N) r–r:r˜rBr›r*r¸éµr) r–r:rÝrBr›r*r¸rRrr–r:rX)rTrUr)rœ©rrZrIrMrrrrK0s  z TestPythonTimeConverter.testDatecCs"| |j ddd¡t d¡¡dS)NrBr›r3i¦)rNr)r,rTrYrrrrrL6sÿz TestPythonTimeConverter.testTimecCsXt t d¡¡}t t d¡¡}|j dddddd¡}||krJ|ksTnJ|ƒ‚dS) N) r–r:r˜rBr;r*r¸rRr³) r–r:r˜rBér*r¸rRr³r–r:r˜rBr›r3)rTrVrUr)ržr\rrrrN;sÿÿz%TestPythonTimeConverter.testTimestampNrOrrrrrPs  rPc@s<eZdZdd„Zdd„Zdd„Zdd„Zd d „Zd d „Zd S)ÚTestPythonDateTimeConvertercCst ¡|_dSr)r8ZpythonDateTimeConverterr)rrrrrGsz!TestPythonDateTimeConverter.setUpcCs<t dddddd¡}|j |¡}t|dƒdks8Jd ƒ‚dS) Nr–r:r˜rBr›r*r/rSzmore than an hour wrong)r•r)r2rurErrrrHJs z'TestPythonDateTimeConverter.testCOMDatec Csž|j d¡}t dddddd¡}t dddddd¡}||krH|ksRnJ|ƒ‚t ddddddd ¡}|j |j |¡¡}||kr�|ksšnJ|ƒ‚dS) Nr/r–r:r˜rBr;r*r]i » )r)r0r•r2)rrGrZrIZtxZc1rrrrJPs ÿz5TestPythonDateTimeConverter.testDateObjectFromCOMDatecCsNt ddd¡}t ddd¡}|j ddd¡}||kr@|ksJnJ|ƒ‚dS)Nr–r:r˜rÝrX)r•Údater)rœr\rrrrK\sz$TestPythonDateTimeConverter.testDatecCs(| |j ddd¡ ¡dd…d¡dS)NrBr›r3rz18:15:02)rNr)r,Z isoformatrrrrrLbsz$TestPythonDateTimeConverter.testTimecCs`t dddddd¡}t dddddd¡}|j dddddd ¡}||krR|ks\nJ|ƒ‚dS) Nr–r:r˜rBr;r*r]r›r3)r•r)ržr\rrrrNesz)TestPythonDateTimeConverter.testTimestampNrOrrrrr^Fs  r^Útestc@seZdZdd„Zdd„ZdS)Úcleanup_managercCsdSrrrrrrÚ __enter__~szcleanup_manager.__enter__cCst tjtj¡dSr)rKZcleanupZ testfolderZmdb_name)rÚexc_typeZexc_valZexc_tbrrrÚ__exit__�szcleanup_manager.__exit__N)r%rõrörbrdrrrrra}sraÚ__main__zDefault Date Converter is %sr•r™rCzChanged dateconverter to )@rýrJr•rƒr r r]ZunittestZwin32com.clientZwin32comÚwin32Ú ImportErrorZadodbapitestconfigrKrr_Zadodbapi.apibaseZapibaser8Zadodbapi.ado_constsrrrŒZlongrZTestCaserrþrr!r$r'ZdoMxDateTimeTestZ mx.DateTimerCr@rTrPr^ZsuitesÚappendZ makeSuiteZ doTimeTestZ doAccessTestZdoSqlServerTestZ doMySqlTestZdoPostgresTestÚobjectraZ TestSuiteZsuiter%ÚdeepcopyZmysuiterrZdefaultDateConverterrnr�ZTextTestRunnerÚrunZiterateOverTimeTestsrQrAr`rrrrÚs¨      ]!B<+,&     þÿ