
    	h                        S r  SSKrSSKrSSKrSSKrSSKrSSKrSSKrSSKr	SSK
r
SSKrSSKJr  S r " S S\R                   5      r " S S\5      r " S S	\5      r " S
 S\5      r " S S\5      r " S S\R                   5      r " S S\5      r " S S\5      r\R2                  R5                  \S5      /r\	R8                  (       a+  \R;                  \R2                  R5                  \S5      5        \	R<                  (       a+  \R;                  \R2                  R5                  \S5      5        \	R>                  (       a+  \R;                  \R2                  R5                  \S5      5        \	R@                  (       a+  \R;                  \R2                  R5                  \S5      5        \	RB                  (       a+  \R;                  \R2                  R5                  \S5      5         " S S5      r"\RF                  " \5      r$\%S:X  a  \RL                  " \$5      r'\"" 5          \RP                  r)\*" \ 5        \*" S\)< 35        \)r(\RV                  " 5       RY                  \'5        \	R8                  (       av  \RL                  " \$5      r'\RZ                  " 5       \R                  l(        \*" S5        \*" \R                  RP                  5        \RV                  " 5       RY                  \'5        SSS5        gg! , (       d  f       g= f)z'Unit tests version 2.6.1.0 for adodbapi    Nc                     SR                  [        S5       Vs/ s H'  n[        R                  " [        R
                  5      PM)     sn5      $ s  snf )N     )joinrangerandomchoicestringascii_letters)lengthns     mC:\Users\julio\OneDrive\Documentos\Trabajo\Ideas Frescas\venv\Lib\site-packages\adodbapi/test/adodbapitest.pyrandomstringr   (   s6    77rKAFMM&"6"67KLLKs   .Ac                   *   \ rS rSrSrS rS rS rS rS r	S r
S	 rS
 rS rS rS r   S1S jrS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS r S  r!S! r"S" r#S# r$S$ r%S% r&S& r'S' r(S( r)S) r*S* r+S+ r,S, r-S- r.S. r/S/ r0S0r1g)2CommonDBTests,   zdSelf contained super-simple tests in easy syntax, should work on everything between mySQL and Oraclec                     SU l         g )Nunknownengineselfs    r   setUpCommonDBTests.setUp/   s	        c                     U R                   $ Nr   r   s    r   	getEngineCommonDBTests.getEngine2   s    {{r   c                     [         er   NotImplementedErrorr   s    r   getConnectionCommonDBTests.getConnection5   s    !!r   c                 >    U R                  5       R                  5       $ r   )r#   cursorr   s    r   	getCursorCommonDBTests.getCursor8   s    !!#**,,r   c                 \    U R                  5       nUR                  R                  S:X  d   eg )NCursor)r'   	__class____name__r   crsrs     r   testConnectionCommonDBTests.testConnection;   s&    ~~~~&&(222r   c                     U R                  5       nS nX!l        UR                  5       nUR                  U:X  d   S5       eg )Nc                     gN    
connectionr&   
errorclass
errorvalues       r   <lambda>8CommonDBTests.testErrorHandlerInherits.<locals>.<lambda>A   s    r   z5Error handler on crsr should be same as on connection)r#   errorhandlerr&   )r   conn
mycallabler.   s       r   testErrorHandlerInherits&CommonDBTests.testErrorHandlerInherits?   sD    !!#I
&{{}  J. 	
C	
.r   c                 P   U R                  5       nUR                  S S 2	  UR                  5         UR                  5         g !   [	        UR                  5      S:X  d   e[	        UR                  S   5      S:X  d   eUR                  S   S   [
        R                  :X  d   e g = f)Nr4   r      )r#   messagesclosecommitlenapiProgrammingErrorr   r=   s     r   !testDefaultErrorHandlerConnection/CommonDBTests.testDefaultErrorHandlerConnectionH   s    !!#MM!	?JJLKKM	?t}}%***t}}Q'(A---==#A&#*>*>>>>s    A A!B%c                 J   S nU R                  5       nXl        UR                  5         UR                  5         [	        UR
                  5      S:X  d   eS Ul         UR                  5         UR                  5         [	        UR
                  5      S:  d   S5       eg !    N%= f)Nc                     gr3   r5   r6   s       r   r:   =CommonDBTests.testOwnErrorHandlerConnection.<locals>.<lambda>U       qr   r   JSetting errorhandler to none  should bring back the standard error handler)r#   r<   rD   rE   rF   rC   )r   r>   r=   s      r   testOwnErrorHandlerConnection+CommonDBTests.testOwnErrorHandlerConnectionS   s    @ 	 !!#&

4==!Q&&& 	JJLKKM 4==!A% 	
X	
%	s    B B"c                 N   U R                  5       R                  5       nUR                  S S 2	  UR                  S5        g !   [	        UR                  5      S:X  d   e[	        UR                  S   5      S:X  d   eUR                  S   S   [
        R                  :X  d   e g = f)NSELECT abbtytddrf FROM dasdasdr4   r   rB   )r#   r&   rC   executerF   rG   DatabaseErrorr-   s     r   testDefaultErrorHandlerCursor+CommonDBTests.testDefaultErrorHandlerCursorh   s    !!#**,MM!	<LL9:	<t}}%***t}}Q'(A---==#A&#*;*;;;;s   A A!B$c                 *   S nU R                  5       R                  5       nXl        UR                  S5        [	        UR
                  5      S:X  d   eS Ul         UR                  S5        [	        UR
                  5      S:  d   S5       eg !    N%= f)Nc                     gr3   r5   r6   s       r   r:   9CommonDBTests.testOwnErrorHandlerCursor.<locals>.<lambda>t   rO   r   rT   r   rP   )r#   r&   r<   rU   rF   rC   )r   r>   r.   s      r   testOwnErrorHandlerCursor'CommonDBTests.testOwnErrorHandlerCursorr   s    @ 	 !!#**,&564==!Q&&& 	LL9: 4==!A% 	
X	
%	s   B Bc                   ^  S nU" S5      S:X  d   eU R                  5         U R                  5       mU R                  [        U4S jS/5        [        R                  " [
        R                  5      Tl        TR                  5       nS[        R                  -  nUR                  U5        UR                  S[        R                  -  5        UR                  S[        R                  -  5        UTR                  [
        R                  '   UR                  S	[        R                  -  5        UR                  5       nUS
   nU R                  US
   S5        US   nU R                  US
   S5        U R                  US   S5        S nU" S5      S:X  d   eXdR                  S'   U R                  US
   S5        U R                  US   S5         T?U R                  5         g !    N= f!  T?O!    O= fU R                  5         f = f)Nc                     U S-  $ )NrB   r5   aStringFields    r   r:   :CommonDBTests.testUserDefinedConversions.<locals>.<lambda>   s	    q8Hr   gabba
gabbagabbac                 "   > TR                   U    $ r   )variantConversions)xr=   s    r   r:   rb      s    8O8OPQ8Rr   rB   zDCREATE 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 fldDatar   r4   heyheyyoyoc                 "    U R                  5       $ r   )upperr`   s    r   r:   rb      s    <3E3E3Gr   upThisUPTHISYO)helpForceDropOnTblTempr#   assertRaisesAttributeErrorcopyrG   rf   r&   configtmprU   adoStringTypesfetchallassertEqual
convertershelpRollbackTblTemp)r   duplicatingConverterr.   tabdefrowsrowupcaseConverterr=   s          @r   testUserDefinedConversions(CommonDBTests.testUserDefinedConversions   s   .	'#H '0L@@@'')%%'Dn.RUVTWX&*ii0F0F&GD#;;=DV**  LL LLIFJJV LLDvzzQ ;OD##C$6$67LLJVZZWX==?Dq'CSV\2q'CSVX.SVV,GO"8,888 "1OOASVX.SVT*+ $$&+$$&s0   GG- G& &G*-H
/G21H
2G64H
Nc           
      	   U R                  5         U R                  5       nUR                  5       nS[        R                  -  U-   S-   n	UR                  U	5        UR                  S[        R                  -  5        UR                  S[        R                  -  5        UR                  5       n
U R                  U
S   S 5        U
S   S:X  d   eUR                  S   nUS   S;   d   SUS   < S	S
< S35       eUS:X  aD  US   [        R                  :X  d+   SUS   < S	[        R                  R                  < S35       eGOtUS:X  aD  US   [        R                  :X  d+   SUS   < S	[        R                  R                  < S35       eGO*US:X  aC  US   [        R                  :X  d+   SUS   < S	[        R                  R                  < S35       eOUS:X  aC  US   [        R                  :X  d+   SUS   < S	[        R                  R                  < S35       eOUS:X  aC  US   [        R                  :X  d+   SUS   < S	[        R                  R                  < S35       eOOUS:X  aC  US   [        R                   :X  d+   SUS   < S	[        R                   R                  < S35       eO["        eU/nU(       a  UR%                  U5        ['        U5      nSnU GH  nUS-  n UR                  S[        R                  -  X45        UR                  S[        R                  -  U/5        UR                  5       n
U(       aU  [+        U Vs/ s H  n[-        U5      PM     sn5      n[/        U
S   U5      (       d   S[-        U
S   5      < SU< 35       eOA[/        U
S   [-        U5      5      (       d$   S[-        U
S   5      < S[-        U5      < 35       eU(       a\  US:X  aV  [0        R2                  R5                  U
S   5      n[0        R2                  R5                  U5      nU R                  UU5        GMb  U(       a@  [7        U5      n[7        U
S   5      n[9        UU-
  5      U-  S:  d   SU
S   U4-  5       eGM  U(       a'  SnU R;                  U
S   U;   SU
S   < SU 35        GM  U R                  U
S   USU
S   < SU< S35        GM     g !   UR)                  5         e = fs  snf )Nzb
            CREATE TABLE xx_%s (
                fldId integer NOT NULL,
                fldData z)
z$INSERT INTO xx_%s (fldId) VALUES (1)zSELECT fldId,fldData FROM xx_%sr4   r   )fldDataflddatazwas "z" expected "r   "STRINGNUMBERBINARYDATETIMEROWIDUUIDz.INSERT INTO xx_%s (fldId,fldData) VALUES (?,?)z'SELECT fldData FROM xx_%s WHERE ?=fldIDzresult type "z" must be one of z" must be instance of gh㈵>z-Values not almost equal recvd=%s, expected=%fFzValue "z	" not in zValues are not equal recvd="z", expected=")ro   r#   r&   rs   rt   rU   fetchonerw   descriptionrG   r   valuesr   r   r   r   OTHERr"   extendsetprintADOerrorstupletype
isinstanceadodbapidateconverterDateObjectToIsoFormatStringfloatabs
assertTrue)r   sqlDataTypeStringDBAPIDataTypeStringpyDatapyDataInputAlternativescompareAlmostEqualallowedReturnValuesr=   r.   r{   rs	descTupleinputsfldIdinParamaRVallowedTypesiso1iso2svoks                         r   helpTestDataTypeCommonDBTests.helpTestDataType   s    	##%!!#{{} jj	
     	 	V 	;fjjHI6CD]]_A%!uzz $$Q'	|55 	
aL8
 	
5
 (*Q<3::- !

!!0 - !H,Q<3::- !

!!0 - !H,Q<3::- !

!!0 - !J.Q<3<</ !##2 / !G+Q<399, !		  / , !F*Q<399, !		  / ,
 &% "MM12VGQJEDvzzQ$ LL9FJJF B"$;N%O;NCd3i;N%OP!"Q%66 <@AKV6 ""Q%f66  RUV6 "&9Z&G--II"Q%P--II&Q  t,#&M"Q%L1q5zA~/ Cr!uajP/ 'BOO1!44!"Q%)4G3HI
 $$1a5&*] ##% &Ps   ,$S!S7
!S4c                 L    U R                  SSSSS9  U R                  SSSSS9  g )Nrealr   皙@Tr   r   gdFGr   r   s    r   testDataTypeFloatCommonDBTests.testDataTypeFloat9  s0    fhNgxTRr   c           
      J   U R                  SSSSS[        R                  " S5      /S9  U R                  SSSSS[        R                  " S5      /S9  U R                  SSS	S
S[        R                  " S5      /S9  U R                  5       S:X  a  U R                  SSSS/S9  g g )Nzdecimal(18,2)r   r   z3.45z3,45r   znumeric(18,2)zdecimal(20,2)l   G#xoW1z444444444444444444.00z444444444444444444,00444444444444444444MSSQLuniqueidentifierr   z&{71A4F49E-39F3-42B1-A41E-48FF154996E6})r   decimalDecimalr   r   s    r   testDataTypeDecmal CommonDBTests.testDataTypeDecmal=  s    !'1H I	 	 	
 	!'1H I	 	 	
 	'' 45!	 	 		
 >>w&!!"8%M$N	 "  'r   c           
         U R                  5       S:X  a(  U R                  SS[        R                  " S5      5        g U R                  5       S:X  a>  U R                  SS[        R                  " S5      SS[        R                  " S5      /S	9  g U R                  S
S[        R                  " S5      5        U R                  SS[        R                  " S5      5        g )NMySQLzDECIMAL(20,4)r   z-922337203685477.5808
PostgreSQLmoneyTg-C6
)r   r   
smallmoneyz	214748.02)r   r   r   r   r   s    r   testDataTypeMoneyCommonDBTests.testDataTypeMoney\  s    >>w&!!7??;R+S ^^-!! 78#')OO$;<% " 	 !!,'//+:VW!!7??3J#Kr   c                 <   U R                  5       S:w  a  U R                  SSS5        U R                  SSS5        U R                  5       S;  a  U R                  SSS	5        U R                  5       S
;   a  U R                  SSSSS/S9  U R                  SSS5        g )Nr   tinyintr   s   smallinti )ACCESSr   bitr4   )r   r   bigintl    ^e r   intir   r   r   s    r   testDataTypeIntCommonDBTests.testDataTypeIntr  s    >>|+!!)Xs;j(F;>>#;;!!x >>66!!%/$<	 "  	eXz:r   c                 >    S H  nU R                  USS/ SQS9  M     g )N)zchar(6)znchar(6)r   spam  )spamr   r   r   r   r   )r   sqlDataTypes     r   testDataTypeCharCommonDBTests.testDataTypeChar  s+    2K!!$H	 "  3r   c                     U R                  5       S:X  a  SS/nOU R                  5       S:X  a  / SQnO/ SQnU H  nU R                  USSS/5        M     g )	Nr   varchar(10)textr   )r   r   zcharacter varying)r   znvarchar(10)r   ntextr   r   r   )r   stringKindsr   s      r   testDataTypeVarChar!CommonDBTests.testDataTypeVarChar  sX    >>w&(&1K^^-FKK 'K!!+x&J 'r   c                    U R                  5       S:X  a  SnOSnU R                  US[        R                  " SSS5      SS	9  U R                  5       S
;  a(  U R                  SS[        R                  " SSS5      SS	9  [        S:w  aA  U R                  5       S
;  a,  U R                  US[        R
                  " SSSSSS5      SS	9  g g g )Nr   	timestampdatetimer     
      Tr   )r   r   smalldatetime
pythontime      r4   )r   r   r   Datetag	Timestamp)r   dts     r   testDataTypeDateCommonDBTests.testDataTypeDate  s    >>|+BB
HMM$B7D 	 	
 >>#::!!dB+#'	 "  ,4>>#3 <
 $
 !!""4RR;#'	 " 	$
r   c                    SnU[         R                  " U5      [        U5      /nU R                  5       S:X  a'  U R	                  SS[         R                  " U5      US9  g U R	                  SS[         R                  " U5      US9  U R	                  SS[         R                  " U5      US9  U R                  5       S:w  a'  U R	                  S	S[         R                  " U5      US9  g g )
Ns    @*r   bytear   r   z	binary(5)zvarbinary(100)r   image)r   Binarybytesr   r   )r   binfldarvs      r   testDataTypeBinary CommonDBTests.testDataTypeBinary  s    %xv.f>>>|+!!8??6#:PS "  !!Xxv'>TW "  !! '$'	 "  ~~7*%%Xxv'>TW &  +r   c                 $    U R                  5         g r   )ro   r   s    r   ry   !CommonDBTests.helpRollbackTblTemp  s    ##%r   c                    U R                  5       nUR                  5        n UR                  S[        R                  -  5        UR
                  (       d  UR                  5         S S S 5        g !    N= f! , (       d  f       g = f)NzDROP TABLE xx_%s)r#   r&   rU   rs   rt   
autocommitrE   )r   r=   r.   s      r   ro   $CommonDBTests.helpForceDropOnTblTemp  s_    !!#[[]d/&**<=KKM	 ]
 ]s   A6AA//A31A66
Bc                 0   S[         R                  -  n UR                  U5        [        S5       H'  nUR                  S[         R                  U4-  5        M)     g ! [        R                   a$    U R                  5         UR                  U5         Nnf = f)Nz\
            CREATE TABLE xx_%s (
                fldData INTEGER
            )
            	   z'INSERT INTO xx_%s (fldData) VALUES (%i))rs   rt   rU   rG   rV   ro   r   )r   r.   r{   is       r   helpCreateAndPopulateTableTemp,CommonDBTests.helpCreateAndPopulateTableTemp  s    
 jj 		!LL  qALLBfjjRS_TU     	!'')LL 	!s   A 5BBc                 (   U R                  5       nU R                  U5        UR                  S[        R                  -  5        UR                  5       n[        U5      S:X  d   eSnUSS  H  nUS   U:X  d   eUS-  nM     U R                  5         g )NSELECT fldData FROM xx_%sr      r   r4   )r'   r   rU   rs   rt   rv   rF   ry   )r   r.   r   r   r}   s        r   testFetchAllCommonDBTests.testFetchAll  s    ~~++D106::=>]]_2w!||a8Cq6Q;;FA  	  "r   c                 >   U R                  5       nU R                  U5        UR                  S[        R                  -  5        UR                  UR                  5        UR                  5       n[        U5      S:X  d   eUS   S   S:X  d   eU R                  5         g )Nr  r   rB   r   )
r'   r   preparers   rt   rU   commandrv   rF   ry   r   r.   r   s      r   testPreparedStatement#CommonDBTests.testPreparedStatement  s}    ~~++D106::=>T\\"]]_2w!||!uQx1}}  "r   c                 *   U R                  5       nU R                  U5        UR                  S5        UR                  S[        R
                  -  5        UR                  5       n[        U5      S:X  d   eUS   S   S:X  d   eU R                  5         g )NzSELECT * FROM nowherer  r   rB   r   )	r'   r   r  rU   rs   rt   rv   rF   ry   r
  s      r   testWrongPreparedStatement(CommonDBTests.testWrongPreparedStatement  s~    ~~++D1,-'&**4	
 ]]_2w!||!uQx1}}  "r   c                     U R                  5       nU R                  U5        UR                  S[        R                  -  5        [        U5       H  u  p#US   U:X  a  M   e   U R                  5         g )Nr  r   )r'   r   rU   rs   rt   	enumeratery   )r   r.   r   r}   s       r   testIteratorCommonDBTests.testIterator  sf    ~~++D106::=>
FA q6Q;;
 	  "r   c                    U R                  5       nU R                  U5        SS/nUR                  S[        R                  -  U5        UR
                  S:X  a  [        U R                  5       S-   5        OU R                  UR
                  S5        UR                  S[        R                  -  5        UR                  5       n[        U5      S:X  d   eU R                  5         g )	N)o   )   z&INSERT INTO xx_%s (fldData) VALUES (?)z7 Provider does not support rowcount (on .executemany())rB   r     )r'   r   executemanyrs   rt   rowcountprintr   rw   rU   rv   rF   ry   )r   r.   seq_of_valuesr   s       r   testExecuteManyCommonDBTests.testExecuteMany  s    ~~++D1(4vzzA=	
 ==B KL
 T]]A.06::=>]]_2w"}}  "r   c                    U R                  5       nU R                  U5        UR                  S[        R                  -  5        UR
                  S:X  a  OU R                  UR
                  S5        U R                  5         g )Nr  r  r   )r'   r   rU   rs   rt   r  rw   ry   r-   s     r   testRowCountCommonDBTests.testRowCount+  sa    ~~++D106::=>==BT]]A.  "r   c                 <   U R                  5       nU R                  U5        UR                  S[        R                  -  5        UR
                  S:X  a  [        U R                  5       S-   5        OU R                  UR
                  S5        U R                  5         g )Nz$DELETE FROM xx_%s WHERE fldData >= 5r  z/ Provider does not support rowcount (on DELETE)   )
r'   r   rU   rs   rt   r  r  r   rw   ry   r-   s     r   testRowCountNoRecordset%CommonDBTests.testRowCountNoRecordset6  ss    ~~++D1;fjjHI==B$.."%VVWT]]A.  "r   c                 v   U R                  5       nU R                  U5        UR                  S[        R                  -  5        UR                  S5      n[        U5      S:X  d   eUR                  S5      n[        U5      S:X  d   eUR                  S5      n[        U5      S:X  d   eU R                  5         g )Nr  r     r4   )r'   r   rU   rs   rt   	fetchmanyrF   ry   r
  s      r   testFetchManyCommonDBTests.testFetchMany@  s    ~~++D106::=>^^A2w!||^^A2w!||^^A2w!||  "r   c                    U R                  5       nU R                  U5        UR                  S[        R                  -  5        UR                  5       n[        U5      S:X  d   eSUl        UR                  5       n[        U5      S:X  d   eUR                  5       n[        U5      S:X  d   eUR                  5       n[        U5      S:X  d   eU R                  5         g )Nr  r4   r#  r   )	r'   r   rU   rs   rt   r(  rF   	arraysizery   r
  s      r   testFetchManyWithArraySize(CommonDBTests.testFetchManyWithArraySizeL  s    ~~++D106::=>^^2w!||^^2w!||^^2w!||^^2w!||  "r   c                     U R                  5       nUR                  5         U R                  [        R                  U R
                  S0 5        g )Nznot a valid connect string)r#   rD   rp   rG   rV   dbrI   s     r   testErrorConnectCommonDBTests.testErrorConnect[  s9    !!#

#++TWW6RTVWr   c           	         U R                  5         U R                  5       nUR                  5       nS[        R                  -  nUR                  U5        SS/nSnU GH.  nUS-  n UR                  S[        R                  -  XVS   US   US   45        UR                  S[        R                  -  U/5        UR                  5       n[        [        U5      5       H!  nXx   Xh   :X  a  M   S	Xx   < S
Xh   < S35       e   [        U5      U:X  d   S	U< S
U< S35       e[        US S 5      n	[        USS 5      n
X:X  d   S	U	< S
U
< S35       eUS   US   :X  d   eUR                  US   :X  d   eUR                  US   :X  a  GM/   e   UR                  S[        R                  -  5        UR                  5       nUS   S   S:X  d   eUS   S   S:X  d   eUS   S   S:X  d   eUS   S:X  d   eUS   S:X  d   eUS   S:X  d   e[        S5       H&  n[        S5       H  nX   U   XU4   :X  a  M   e   M(     g !   UR                  5         e = f)Nz
            CREATE TABLE xx_%s (
                fldId integer NOT NULL,
                fldTwo integer,
                fldThree integer,
                fldFour integer)
                )rB   r  r#  )f   g   h   r4   zBINSERT INTO xx_%s (fldId,fldTwo,fldThree,fldFour) VALUES (?,?,?,?)r   rB   z7SELECT fldTwo,fldThree,fldFour FROM xx_%s WHERE ?=fldIDreturned value:"" != test value:"r   r  fldTwoz)select fldThree,fldFour,fldTwo from xx_%sr5  r#  fldFourr6  )r   r   r  )r   r9  )r4   rB   r4  )ro   r#   r&   rs   rt   rU   r   r   r   rF   r   fldThreer:  rv   )r   r=   r.   r{   r   r   r   recjslice1slice2recsr   s                r   testRowIteratorCommonDBTests.testRowIterator`  s   ##%!!#{{} jj 	 	V_-GQJEXjj!AJ
GAJ? LLIFJJV --/C3w<(v+ @C
S+ )
 :( "3'):7+QG( 3s8_F71Q<(F# "6*,=fZqI# x=GAJ...<<71:---;;'!*,,,E J 	@6::MN}}AwqzS   AwqzQAwy!S(((DzQK A%%%DzS   qA1XwqzTQ$Z///  K##%s   '/IIc           
         U R                  5         U R                  5       nSUl        UR                  5       nS[        R
                  -  nUR                  U5        / SQnSnU H  nUS-  nS[        R
                  -   S-   n UR                  XuU45        UR                  S[        R
                  -   S	-   U/5        UR                  5       nU R                  US
   USUS
   < SU< S35        U R                  US   S5        M     S[        R
                  -   S-   n	Sn
UR                  X5        SUR                  ;   d   SS< SUR                  < S35       eUR                  U	:X  d   SU	< SUR                  < S35       eU R                  UR                  U
5        UR                  S[        R
                  -  5        UR                  5       nU R                  US
   S5        g !   UR                  5         e = f)Nformat
            CREATE TABLE xx_%s (
                fldId integer NOT NULL,
                fldData varchar(10),
                fldConst varchar(30))
                onetwothreerB   r4   INSERT INTO xx_zE (fldId,fldConst,fldData) VALUES (%s,'thi%s :may cause? trouble', %s)!SELECT fldData, fldConst FROM xx_z WHERE %s=fldIDr   r7  r8  r   zthi%s :may cause? troublezinsert into xx_z) (fldId,fldData) VALUES (%s,'four%sfive'))   z(?,z
expected:"z" in "z" but found "z(SELECT fldData FROM xx_%s WHERE fldID=20z
four%sfive)ro   r#   
paramstyler&   rs   rt   rU   r   r   rw   queryr	  
parameters)r   r=   r.   r{   r   r   r   sqlr<  selparamss              r   testFormatParamstyle"CommonDBTests.testFormatParamstyle  s   ##%!!#"{{} jj 	 	V(GQJE!**YZ 
S'"23 LL3fjj@CTT --/CA<?FGL
 SV%@A- 4 

*-XX 	 S! 

"Qudjj$QQ"||s"Xc4<<$XX" 	&1?&**LMmmoQ.A##%s   G))G<c           
         U R                  5         U R                  5       nUR                  5       nSUl        S[        R
                  -  nUR                  U5        / SQnSnU H  nUS-  n UR                  S[        R
                  -  XeS.5        UR                  S[        R
                  -  S	U05        UR                  5       nU R                  US
   USUS
   < SU< S35        M     UR                  S[        R
                  -  SS05        UR                  S[        R
                  -  5        UR                  5       nU R                  US
   S5        g !   UR                  5         e = f)Nnamed
            CREATE TABLE xx_%s (
                fldId integer NOT NULL,
                fldData varchar(10))
                fourfivesixr   r4   5INSERT INTO xx_%s (fldId,fldData) VALUES (:Id,:f_Val)f_ValIdz)SELECT fldData FROM xx_%s WHERE fldID=:Idr_  r   r7  r8  r   :insert into xx_%s (fldId,fldData) VALUES (:xyz,'six:five')xyz   (SELECT fldData FROM xx_%s WHERE fldID=30six:five
ro   r#   r&   rM  rs   rt   rU   r   r   rw   r   r=   r.   r{   r   r   r   r<  s           r   testNamedParamstyle!CommonDBTests.testNamedParamstyle  sW   ##%!!#{{}!
 jj 	 	V(GQJEKjj!%3 LL;fjjH4QV- --/CA<?FGL * 	H6::UBK	
 	?&**LMmmoQ,'##%   -%EE-c           
         U R                  5         U R                  5       nUR                  5       nSUl        S[        R
                  -  nUR                  U5        / SQnSnU H  nUS-  n UR                  S[        R
                  -  XeS.5        UR                  S[        R
                  -  S	U05        UR                  5       nU R                  US
   USUS
   < SU< S35        M     UR                  S[        R
                  -  SS05        UR                  S[        R
                  -  5        UR                  5       nU R                  US
   S5        g !   UR                  5         e = f)NpyformatrW  rX  r   r4   z=INSERT INTO xx_%s (fldId,fldData) VALUES (%%(Id)s,%%(f_Val)s)r]  z-SELECT fldData FROM xx_%s WHERE fldID=%%(Id)sr_  r   r7  r8  r   z?insert into xx_%s (fldId,fldData) VALUES (%%(xyz)s,'six%%five')ra  rb  rc  zsix%fivere  rf  s           r   testPyformatParamstyle$CommonDBTests.testPyformatParamstyle  sZ   ##%!!#{{}$
 jj 	 	V(GQJESjj!%3 LL?&**Lu --/CA<?FGL! , 	MjjBK	

 	?&**LMmmoQ,+##%ri  c           
         U R                  5         U R                  5       nSUl        UR                  5       nS[        R
                  -  nUR                  U5        / SQnSnU H  nUS-  n UR                  S[        R
                  -   S-   XV45        SnUR                  S	[        R
                  -   S
-   U/5        UR                  5       nU R                  US   USUS   < SU< S35        U R                  US   U5        M     SnU H  nUS-  n UR                  S[        R
                  -  XeS.5        UR                  S[        R
                  -  SU05        UR                  5       nU R                  US   USUS   < SU< S35        M     S[        R
                  -  n	UR                  U	5        UR                  U	SS05        UR                  S[        R
                  -  5        UR                  5       nU R                  US   S5        g !   UR                  5         e = f!   UR                  5         e = f)NdynamicrE  rF  rB   r4   rJ  zD (fldId,fldConst,fldData) VALUES (?,'thi%s :may cause? troub:1e', ?)zthi%s :may cause? troub:1erK  z WHERE ?=fldIDr   r7  r8  r   r   r\  r]  z)SELECT fldData FROM xx_%s WHERE :Id=fldIDr_  r`  ra  rb  rc  rd  )ro   r#   rM  r&   rs   rt   rU   r   r   rw   r  )
r   r=   r.   r{   r   r   r   troubler<  ppdcmds
             r   testAutomaticParamstyle%CommonDBTests.testAutomaticParamstyle>  s:   ##%!!##{{} jj 	 	V(GQJE	%jj!\] $	 3GLL3fjj@CSS --/CA<?FGL
 SVW-/ 2 GQJEKjj!%3 LL;fjjH4QV- --/CA<?FGL , I6::U 	 	VVeR[)?&**LMmmoQ,[##%.##%s   -'H%H+H(+H>c                    U R                  5       nUR                  5       nUR                  R                  (       a   S5       eU R	                  U5        UR                  R                  5         UR                  S[        R                  -  5        S[        R                  -  nUR                  U5        UR                  5       n[        U5      S:X  d   eU R                  R                  5         UR                  U5        UR                  5       b   S5       eUR                  S[        R                  -  5        UR                  5       n[        U5      S:X  d   S5       eU R                  5         g )	NzUnexpected beginning condition'INSERT INTO xx_%s (fldData) VALUES(100)+SELECT fldData FROM xx_%s WHERE fldData=100r4   z?cursor.fetchone should return None if a query retrieves no rowsSELECT fldData from xx_%sr   z,the original records should still be present)r#   r&   r7   r   r   rE   rU   rs   rt   rv   rF   r=   rollbackr   ry   )r   r=   r.   	selectSqlr   s        r   testRollBackCommonDBTests.testRollBack  s   !!#{{}??--O/OO-++D1 >KLAFJJN	Y]]_2w!||		Y}}& 	
M	
& 	06::=>]]_2w!|KKK|  "r   c                     U R                  5       nUR                  (       a   S5       eUR                  5       nU R	                  U5        UR                  S[        R                  -  5        UR                  5         S[        R                  -  nUR                  U5        UR                  5       n[        U5      S:X  d   eUR                  5         UR                  5         U R                  5       nU R                  5       nUR                  5        nUR                  U5        UR                  5       n[        U5      S:X  d   eUS   S   S:X  d   e S S S 5        U R                  5         g ! [         a     g f = f! , (       d  f       N/= f)Nzdefault should be manual commitru  rv  r4   r   d   )getAnotherConnectionr"   r   r&   r   rU   rs   rt   rE   rv   rF   rD   r#   r'   ry   )r   con2r.   ry  r   r=   s         r   
testCommitCommonDBTests.testCommit  s8   	,,.D ??E$EE"{{}++D1>KLAFJJN	Y]]_2w!||



!!#~~[[]dLL#Br7a<<a58s?"?	 
 	  "- # 		" ]s   E- AE=-
E:9E:=
Fc                     U R                  5       nUR                  (       a   S5       eUR                  5       nU R	                  U5        UR                  S[        R                  -  5        S[        R                  -  nUR                  U5        UR                  5       n[        U5      S:X  d   eUR                  5         UR                  5         U R                  5       n UR                  U5        UR                  5       nUb   SU< 35       eU R                  5         g ! [         a     g f = f! [        R                   a    S n NGf = f)Nzunexpected beginning conditionru  rv  r4   zEcursor.fetchone should return None if a query retrieves no rows. Got )r~  r"   r   r&   r   rU   rs   rt   rv   rF   rD   r'   r   rG   rV   ry   )r   r  r.   ry  r   r}   s         r   testAutoRollbackCommonDBTests.testAutoRollback  s)   	,,.D ??D$DD"{{}++D1>KLAFJJN	Y]]_2w!||



~~	LL --/C { 	
STWSZ[	
{ 	  "/ # 		$    	C	s#   D# #!D3 #
D0/D03EEc                     U R                  SS05      nUR                  5       nU R                  U5        UR	                  S[
        R                  -  5        UR                  5         U R                  5        nS[
        R                  -  nUR	                  U5        UR                  5       n[        U5      S:X  d   S5       e S S S 5        UR                  5         U R                  5         g ! [         a     g f = f! , (       d  f       N?= f)Nr   Tru  rw  r   #all records should still be present)r~  r"   r&   r   rU   rs   rt   rD   r'   rv   rF   ry   )r   ac_connr.   ry  r   s        r   testAutoCommitCommonDBTests.testAutoCommit  s    	//t0DEG ~~++D1>KL

^^3fjj@ILL Br7b=G"GG=  	  " # 		 s   C- 8AC=-
C:9C:=
Dc                 D    U R                  5       nSUl        UR                  5       nU R	                  U5        UR                  S[        R                  -  5        UR                  5         U R                  5       nUR                  5         U R                  5        nS[        R                  -  nUR                  U5        UR                  5       n[        U5      S:X  d   S5       e S S S 5        U R                  5         g ! [         a     g f = f! , (       d  f       N/= f)NTru  rw  r   r  )r~  r"   r   r&   r   rU   rs   rt   rD   r#   r'   rv   rF   ry   )r   r  r.   r=   ry  r   s         r   testSwitchedAutoCommit$CommonDBTests.testSwitchedAutoCommit  s    	//1G "~~++D1>KL

!!#^^3fjj@ILL Br7b=G"GG=  	  "! # 		 s   D AD
DD
Dc                     " S S[         5      n " S S[        5      n " S S[        5      nU" [        S5      5      nU" [        R
                  " SS	5      5      nU" [        R                  " 5       5      nU R                  5         U R                  5       nUR                  5       nS
[        R                  -  n	UR                  U	5        UR                  S[        R                  -  XEU45        UR                  5         U R                  5       nU R                  5        nS[        R                  -  n
UR                  U
5        UR                  5       nU R                  UR                   U5        U R                  UR"                  U5        U R%                  UR&                  U5        S S S 5        U R)                  5         g ! , (       d  f       N= f)Nc                       \ rS rSrSrg);CommonDBTests.testExtendedTypeHandling.<locals>.XtendStringi  r5   Nr,   
__module____qualname____firstlineno____static_attributes__r5   r   r   XtendStringr        r   r  c                       \ rS rSrSrg)8CommonDBTests.testExtendedTypeHandling.<locals>.XtendInti  r5   Nr  r5   r   r   XtendIntr    r  r   r  c                       \ rS rSrSrg):CommonDBTests.testExtendedTypeHandling.<locals>.XtendFloati  r5   Nr  r5   r   r   
XtendFloatr    r  r   r  rb  ii  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 (?, ?, ?)zSELECT s, i, f from xx_%s)strr   r   r   r   randintro   r#   r&   rs   rt   rU   rD   r'   r   rw   r   r   assertAlmostEqualfry   )r   r  r  r  xsxixfr=   r.   r{   ry  r}   s               r   testExtendedTypeHandling&CommonDBTests.testExtendedTypeHandling  sm   	# 		s 		 	 b)*fnnT3/0(##%!!#{{}$
 jj 	 	V:VZZG"RT	
 	

!!#^^3fjj@ILL --/CSUUB'SUUB'""355"-  	  " s    B	G
Gr   )NNN)2r,   r  r  r  __doc__r   r   r#   r'   r/   r?   rJ   rQ   rW   r\   r   r   r   r   r   r   r   r   r   r   ry   ro   r   r  r  r  r  r  r   r$  r)  r-  r1  rA  rS  rg  rl  rr  rz  r  r  r  r  r  r  r5   r   r   r   r   ,   s    j "-3
	?
*<
&/'l !% AFS>,;"K 4,&V$##
###&	##
##X
A0F;/z,-\.-`G-R#.#6#8#&#*'#r   r   c                   H    \ rS rSrS rS rS rSS jrS rS r	S	 r
S
 rSrg)TestADOwithSQLServeri'  c                     [         R                  " [         R                  S   0 [         R                  S   D6U l        SU R                  l        SU l        [         R                  U l        g )Nr   r4   rb  r   )rs   dbSqlServerconnectconnStrSQLServerr=   timeoutr   r0  r   s    r   r   TestADOwithSQLServer.setUp(  sW    --$$Q'
+1+B+B1+E
	 		++r   c                      U R                   R                  5          U R                   R                  5         S U l         g !    N'= f!    N= fr   r=   rx  rD   r   s    r   tearDownTestADOwithSQLServer.tearDown0  F    	II 	IIOO 			   ? A AA
c                     U R                   $ r   r=   r   s    r   r#   "TestADOwithSQLServer.getConnection;      yyr   Nc                     [         R                  S   R                  5       nU(       a  UR                  U5        [         R                  " [         R                  S   0 UD6$ Nr4   r   )rs   r  rr   updater  r   addkeyskeyss      r   r~  )TestADOwithSQLServer.getAnotherConnection>  sK    &&q)..0KK ((&*A*A!*DMMMr   c                    U R                   R                  5       nSn UR                  S5        U R                   R                  5         UR                  U5        UR	                  SS5      nUS   S:X  d   US   < S35       eUS   S	:X  d   US   < S
35       eUS   S:X  d   US   < S35       eU R                   R                  5         g !    N= f)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              r   r  z is not "Dodsworth"r4   r  z is not "Anne"rB   DodsworthAnnez is not "DodsworthAnne")r=   r&   rU   rE   callprocrx  )r   r.   spdef	retvaluess       r   $testVariableReturningStoredProcedure9TestADOwithSQLServer.testVariableReturningStoredProcedureD  s    yy!	LLCDII 	UMM')P
	 |{*Ry|.>>Q,RR*|v%H)A,)9'HH%|. 	
|56	
. 				s   +C Cc                    U R                  5       nU R                  U5        S[        R                  < S[        R                  < S[        R                  < S3n UR	                  S5        U R
                  R                  5         UR	                  U5        UR                  S5      nUR                  5       nU R                  US   S5        UR                  5       S:X  d   S	5       eUR                  5       (       a   S
5       eUR                  5       S:X  d   S5       eUR                  5       nU R                  US   S   S5        UR                  5       b   S5       eU R                  5         g !    N= f)Nzo
            CREATE PROCEDURE sp_DeleteMe_OnlyForTesting
            AS
                SELECT fldData FROM xx_z= ORDER BY fldData ASC
                SELECT fldData From xx_z> where fldData = -9999
                SELECT fldData FROM xx_z+ ORDER BY fldData DESC
                    z)DROP PROCEDURE sp_DeleteMe_OnlyForTestingsp_DeleteMe_OnlyForTestingr   TzOperation should succeedzShould be an empty second setzthird set should be present   z'No more return sets, should return None)r'   r   rs   rt   rU   r=   rE   r  r   rw   nextsetrv   ry   )r   r.   r  r  r}   rowdescs         r   testMultipleSetReturn*TestADOwithSQLServer.testMultipleSetReturn_  s4   ~~++D1 JJJJJJ

	LLDEII 	UMM">?	mmoQ#||~%A'AA%==??C$CC"||~%D'DD%--/A*||~%P'PP%  "	s   +E1 1E5c                    U R                   R                  5       nSn UR                  S5        U R                   R                  5         UR                  U5        UR	                  S[
        R                  " SSSSSS5      S	S
/5      nUS   S:X  d   SUS   -  5       eU R                   R                  5         g !    Nt= f)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      r   r4   Beepz                              rB   zDec 25 2014 12:01AM Beepzvalue was="%s")r=   r&   rU   rE   r  r   r   rx  r   r.   r  results       r   testDatetimeProcedureParameter3TestADOwithSQLServer.testDatetimeProcedureParameter  s    yy!	LLCDII 	U'b"aA6I

 ay66T8H6RS98TT6			s   +B9 9B=c                    U R                   R                  5       nSn UR                  S5        U R                   R                  5         UR                  U5        [        R
                  " [        R                  [        R                  4UR                  S/S/ SQ05      nUS   (       a)  S[        US   5      ;   d  S	[        U5      ;   d   S
5       eOUS   (       d
   US   5       eU R                   R                  5         g !    N= f)Na.  
            CREATE PROCEDURE sp_DeleteMeOnlyForTesting
                @theInput DATETIME,
                @theOtherInput varchar(50),
                @theOutput varchar(100) OUTPUT
            AS
                SET @theOutput = CONVERT(CHARACTER(20), @theInput) + @theOtherInput
                    r  r  rO  )zthis is wrongr  z	not Alicer   z	@theInputr4   rV   z(Identifies the wrong erroneous parameter)r=   r&   rU   rE   tryconnection%try_operation_with_expected_exceptionrG   	DataErrorrV   r  r  rx  r  s       r   %testIncorrectStoredProcedureParameter:TestADOwithSQLServer.testIncorrectStoredProcedureParameter  s    yy!	LLCDII 	U DD]]C--.MM()AB	
 !9#fQi.0Os6{4R :R !9'fQi'9		#	s   +D Dr=   r0  r   r   )r,   r  r  r  r   r  r#   r~  r  r  r  r  r  r5   r   r   r  r  '  s,    ,	N6 #D2r   r  c                   6    \ rS rSrS rS rS rS	S jrS rSr	g)
TestADOwithAccessDBi  c                     [         R                  " [         R                  S   0 [         R                  S   D6U l        SU R                  l        SU l        [         R                  U l        g )Nr   r4   rb  r   )rs   dbAccessconnectconnStrAccessr=   r  r   r0  r   s    r   r   TestADOwithAccessDB.setUp  sW    **!!!$
(.(<(<Q(?
	 		((r   c                      U R                   R                  5          U R                   R                  5         S U l         g !    N'= f!    N= fr   r  r   s    r   r  TestADOwithAccessDB.tearDown  r  r  c                     U R                   $ r   r  r   s    r   r#   !TestADOwithAccessDB.getConnection  r  r   Nc                     [        S5      e)Nz2Jet cannot use a second connection to the databaser!   )r   r  s     r   r~  (TestADOwithAccessDB.getAnotherConnection  s    !"VWWr   c                     U R                   " [        R                  S   0 [        R                  S   D6nUc   eUR                  5         g Nr   r4   )r0  rs   r  rD   r   cs     r   testOkConnect!TestADOwithAccessDB.testOkConnect  s>    GGV))!,H0D0DQ0GH}}		r   r  r   
r,   r  r  r  r   r  r#   r~  r  r  r5   r   r   r  r    s    )	Xr   r  c                   6    \ rS rSrS rS rS rS	S jrS rSr	g)
TestADOwithMySqli  c                     [         R                  " [         R                  S   0 [         R                  S   D6U l        SU R                  l        SU l        [         R                  U l        g )Nr   r4   rb  r   )rs   dbMySqlconnectconnStrMySqlr=   r  r   r0  r   s    r   r   TestADOwithMySql.setUp  sW    ))  #
'-':':1'=
	 		''r   c                      U R                   R                  5          U R                   R                  5         S U l         g !    N'= f!    N= fr   r  r   s    r   r  TestADOwithMySql.tearDown  r  r  c                     U R                   $ r   r  r   s    r   r#   TestADOwithMySql.getConnection  r  r   Nc                     [         R                  S   R                  5       nU(       a  UR                  U5        [         R                  " [         R                  S   0 UD6$ r  )rs   r  rr   r  r  r  s      r   r~  %TestADOwithMySql.getAnotherConnection  sK    ""1%**,KK $$f&9&9!&<EEEr   c                 v    U R                   " [        R                  S   0 [        R                  S   D6nUc   eg r  )r0  rs   r  r  s     r   r  TestADOwithMySql.testOkConnect  s5    GGV((+Fv/B/B1/EF}}r   r  r   r  r5   r   r   r  r    s    (	Fr   r  c                   6    \ rS rSrS rS rS rS	S jrS rSr	g)
TestADOwithPostgresi  c                     [         R                  " [         R                  S   0 [         R                  S   D6U l        SU R                  l        SU l        [         R                  U l        g )Nr   r4   rb  r   )rs   dbPostgresConnectconnStrPostgresr=   r  r   r0  r   s    r   r   TestADOwithPostgres.setUp  sW    ,,##A&
*0*@*@*C
	 		"**r   c                      U R                   R                  5          U R                   R                  5         S U l         g !    N'= f!    N= fr   r  r   s    r   r  TestADOwithPostgres.tearDown&  r  r  c                     U R                   $ r   r  r   s    r   r#   !TestADOwithPostgres.getConnection1  r  r   Nc                     [         R                  S   R                  5       nU(       a  UR                  U5        [         R                  " [         R                  S   0 UD6$ r  )rs   r  rr   r  r  r  s      r   r~  (TestADOwithPostgres.getAnotherConnection4  sK    %%a(--/KK '')?)?)BKdKKr   c                 v    U R                   " [        R                  S   0 [        R                  S   D6nUc   eg r  )r0  rs   r  r  s     r   r  !TestADOwithPostgres.testOkConnect:  s5    GGV++A.L&2H2H2KL}}r   r  r   r  r5   r   r   r  r    s    +	Lr   r  c                   D    \ rS rSrS rS rS rS rS rS r	S r
S	 rS
rg)TimeConverterInterfaceTesti\  c                 L    U R                   R                  SSS5      (       d   eg )N  rB   )tcr   r   s    r   	testIDate$TimeConverterInterfaceTest.testIDate]  s    ww||D!Q''''r   c                 L    U R                   R                  SSS5      (       d   eg )N   rB   )r  Timer   s    r   	testITime$TimeConverterInterfaceTest.testITime`  s    ww||B1%%%%r   c                 R    U R                   R                  SSSSSS5      (       d   eg )Nr  rB   r  r4   )r  r   r   s    r   testITimestamp)TimeConverterInterfaceTest.testITimestampc  s'    ww  q!RA6666r   c                 H    U R                   R                  S5      (       d   eg )N?mUxG@)r  DateObjectFromCOMDater   s    r   testIDateObjectFromCOMDate5TimeConverterInterfaceTest.testIDateObjectFromCOMDatef  s    ww,,];;;;r   c                 >    [        U R                  S5      (       d   eg )NCOMDate)hasattrr  r   s    r   testICOMDate'TimeConverterInterfaceTest.testICOMDatei  s    tww	****r   c                     U R                   R                  SSS5      nU R                   R                  U5      nSnX#:X  d   U5       eg )N  r  r   g    @)r  r   r#  r   dcomDatecorrects       r   testExactDate(TimeConverterInterfaceTest.testExactDatel  s@    GGLLr2&''//!$!*7*!r   c                 <   U R                   R                  SSSSSS5      nU R                   R                  U5      nSnU R                  X#5        U R                   R                  SSS	S
SS5      nU R                   R                  U5      nSnU R                  X#5        g )Nr(  r  r   r   r   g    @  r'           gSsn@)r  r   r#  rw   r)  s       r   testExactTimestamp-TimeConverterInterfaceTest.testExactTimestampr  s    GGdBB15''//!$*GGdAq"b"5''//!$$*r   c                 b   U R                   R                  SSSSSS5      nU R                   R                  U5      nU R                  [	        US S 5      S5        U R                   R                  S	S
S5      nU R                   R                  U5      nU R                  [	        US S 5      S5        g )Nr(  r  r   r   r  r      z1994-11-15 12:03:10r0  r'  rB   z
2003-05-02)r  r   r   rw   r  r   )r   r*  isor   s       r   testIsoFormat(TimeConverterInterfaceTest.testIsoFormat}  s    GGdBB26gg11!4S"X(=>WW\\$1%gg11"5S"X5r   r5   N)r,   r  r  r  r  r  r  r   r%  r-  r4  r9  r  r5   r   r   r  r  \  s*    (&7<++	+6r   r  c                   8    \ rS rSrS rS rS rS rS rS r	Sr
g	)
TestPythonTimeConverteri  c                 8    [         R                  " 5       U l        g r   )rG   pythonTimeConverterr  r   s    r   r   TestPythonTimeConverter.setUp  s    ))+r   c                     [         R                  " S5      n[         R                  " U5      nU R                  R	                  U5      n[        US-
  5      S:  d
   SU-  5       eg )N)	r   r1  r      r   r4   r#     r  r  UUUUUU?z%f more than an hour wrong)timemktime	localtimer  r#  r   )r   mktcmds       r   testCOMDate#TestPythonTimeConverter.testCOMDate  sU    [[UVNN2ggooa 3&'(2V4PSV4VV2r   c                    U R                   R                  S5      n[        R                  " [        R                  " S5      5      n[        R                  " [        R                  " S5      5      nX!s=:  a  U:  d  O   SU S35       eg )Nr  )	r   r1  r   r   r2  r4   r#  rB  r  )	r   r1     r   r2  rB   r#  rB  r  r   z$" should be about 2002-6-28 12:15:01)r  r  rD  gmtimerE  )r   rI  t1t2s       r   testDateObjectFromCOMDate1TestPythonTimeConverter.testDateObjectFromCOMDate  sm    gg++M:[[KKST
 [[KKTU
 }"}K#&JKK}r   c                     [         R                  " S5      n[         R                  " S5      nU R                  R                  SSS5      nU[         R                  " U5      s=:  a  U:  d   U5       e   U5       eg )N)	r   r1  r   rA  r   r4   r#     r   )	r   r1  rb  rA  r   r4   r#  rB  r   r   r1  rM  )rD  rE  r  r   r   rO  rP  objs       r   testDate TestPythonTimeConverter.testDate  sb    [[TU[[TUggll4B'DKK$)r).3.).3.)r   c                     U R                  U R                  R                  SSS5      [        R                  " S5      5        g )NrA  r   rB   i  )rw   r  r  rD  rN  r   s    r   testTime TestPythonTimeConverter.testTime  s0    GGLLR#T[[1K%L	
r   c                 "   [         R                  " [         R                  " S5      5      n[         R                  " [         R                  " S5      5      nU R                  R	                  SSSSSS5      nXs=:  a  U:  d   U5       e   U5       eg )	N)	r   r1  r   rA  r2  r4   r#  rB  r  )	r   r1  r   rA     r4   r#  rB  r  r   r1  r   rA  r   rB   )rD  rF  rE  r  r   rU  s       r   testTimestamp%TestPythonTimeConverter.testTimestamp  sw    ^^KKTU
 ^^KKTU
 ggaRQ7}"}!c!}!c!}r   r  Nr,   r  r  r  r   rJ  rQ  rW  rZ  r^  r  r5   r   r   r<  r<    s"    ,W	L/

"r   r<  c                   8    \ rS rSrS rS rS rS rS rS r	Sr
g	)
TestPythonDateTimeConverteri  c                 8    [         R                  " 5       U l        g r   )rG   pythonDateTimeConverterr  r   s    r   r   !TestPythonDateTimeConverter.setUp  s    --/r   c                     [         R                   " SSSSSS5      nU R                  R                  U5      n[        US-
  5      S:  d   S	5       eg )
Nr   r1  r   rA  r   r4   r  rC  zmore than an hour wrong)r   r  r#  r   )r   rH  rI  s      r   rJ  'TestPythonDateTimeConverter.testCOMDate  sL    dAr2r15ggooa 3&'(2M4MM2r   c           	         U R                   R                  S5      n[        R                  " SSSSSS5      n[        R                  " SSSSSS5      nX!s=:  a  U:  d   U5       e   U5       e[        R                  " SSSSSSS	5      nU R                   R                  U R                   R                  U5      5      nX%s=:  a  U:  d   U5       e   U5       eg )
Nr  r   r1  r   rA  r2  r4   r]  i )r  r  r   r#  )r   rI  rO  rP  txc1s         r   rQ  5TestPythonDateTimeConverter.testDateObjectFromCOMDate  s    gg++M:tQBA6tQBA6}"}!c!}!c!}!RRF
 WW**477??2+>?||R|R|r   c                     [         R                  " SSS5      n[         R                  " SSS5      nU R                  R                  SSS5      nXs=:  a  U:  d   U5       e   U5       eg )Nr   r1  r   rb  rM  )r   dater  r   rU  s       r   rW  $TestPythonDateTimeConverter.testDate  sY    ]]4B']]4B'ggll4B'}"}!c!}!c!}r   c                     U R                  U R                  R                  SSS5      R                  5       S S S5        g )NrA  r   rB   r  z18:15:02)rw   r  r  	isoformatr   s    r   rZ  $TestPythonDateTimeConverter.testTime  s3    b"a0::<Ra@*Mr   c                     [         R                   " SSSSSS5      n[         R                   " SSSSSS5      nU R                  R                  SSSSSS	5      nXs=:  a  U:  d   U5       e   U5       eg )
Nr   r1  r   rA  r2  r4   r]  r   rB   )r   r  r   rU  s       r   r^  )TestPythonDateTimeConverter.testTimestamp  sq    tQBA6tQBA6ggaRQ7}"}!c!}!c!}r   r`  Nra  r5   r   r   rc  rc    s"    0N
 "N"r   rc  testc                        \ rS rSrS rS rSrg)cleanup_manageri  c                     g r   r5   r   s    r   	__enter__cleanup_manager.__enter__  s    r   c                 j    [         R                  " [         R                  [         R                  5        g r   )rs   cleanup
testfoldermdb_name)r   exc_typeexc_valexc_tbs       r   __exit__cleanup_manager.__exit__  s    v((&//:r   r5   N)r,   r  r  r  ry  r  r  r5   r   r   rw  rw    s    ;r   rw  __main__zDefault Date Converter is zChanged dateconverter to ).r  rr   r   r   r   r
   rD  unittestadodbapitestconfigrs   r  r   adodbapi.apibaseapibaserG   r   TestCaser   r  r  r  r  r  r<  rc  defaultTestLoaderloadTestsFromModulesuites
doTimeTestappenddoAccessTestdoSqlServerTestdoMySqlTestdoPostgresTestrw  	TestSuitesuiter,   deepcopymysuiter   defaultDateConverterr  TextTestRunnerrunr>  r5   r   r   <module>r     s   -,        #   Mx#H%% x#vQ= Qh- @} D- ~(6!2!2 (6V)"8 )"X#""< #"N 223NPVW
 

MM""667NPVW 

MM""667JFS 

MM""667KVT 

MM""667GP 

MM""667JFS
; ; 	6"zmmE"G		'55g0DFG,!%%g.mmG /2.E.E.GH+-.(##112##%))'2 
	 		s   %C
K99
L