
    $
i                        d Z 	 ddlZddlZddlZddlZddlZddlZddlZddlZ	ddl
Z
ddlZddlmZ d Z G d dej                  Z G d de          Z G d d	e          Z G d
 de          Z G d de          Z G d dej                  Z G d de          Z G d de          Zej                            ed          gZe	j        r.e                    ej                            ed                     e	j        r.e                    ej                            ed                     e	j        r.e                    ej                            ed                     e	j         r.e                    ej                            ed                     e	j!        r.e                    ej                            ed                      G d d          Z" ej#        e          Z$e%dk    r ej&        e$          Z' e"            5  ej(        Z) e*e             e*de)           e)Z( ej+                    ,                    e'           e	j        rk ej&        e$          Z' ej-                    ej        _(         e*d            e*ej        j(                    ej+                    ,                    e'           ddd           dS # 1 swxY w Y   dS dS )z'Unit tests version 2.6.1.0 for adodbapi    Nc                 Z    d                     d t          d          D                       S )N c                 J    g | ] }t          j        t          j                  !S  )randomchoicestringascii_letters).0ns     C:\Users\Dell Inspiron 16\Desktop\tws\AgrotaPowerBi\back-agrota-powerbi\mcp-client-agrota\venv\Lib\site-packages\adodbapi/test/adodbapitest.py
<listcomp>z randomstring.<locals>.<listcomp>)   s%    KKKAFM&"677KKK        )joinrange)lengths    r   randomstringr   (   s)    77KKrKKKLLLr   c                   "   e Zd ZdZd Zd Zd Zd Zd Zd Z	d Z
d	 Zd
 Zd Zd Z	 	 	 d/dZd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Z d  Z!d! Z"d" Z#d# Z$d$ Z%d% Z&d& Z'd' Z(d( Z)d) Z*d* Z+d+ Z,d, Z-d- Z.d. Z/dS )0CommonDBTestszdSelf contained super-simple tests in easy syntax, should work on everything between mySQL and Oraclec                     d| _         d S )Nunknownengineselfs    r   setUpzCommonDBTests.setUp/   s    r   c                     | j         S Nr   r   s    r   	getEnginezCommonDBTests.getEngine2   s
    {r   c                     t           r   NotImplementedErrorr   s    r   getConnectionzCommonDBTests.getConnection5   s    !!r   c                 N    |                                                                  S r   )r$   cursorr   s    r   	getCursorzCommonDBTests.getCursor8   s     !!##**,,,r   c                 R    |                                  }|j        j        dk    sJ d S )NCursor)r'   	__class____name__r   crsrs     r   testConnectionzCommonDBTests.testConnection;   s-    ~~~&(222222r   c                     |                                  }d }||_        |                                }|j        |k    s
J d            d S )Nc                     dS N   r   
connectionr&   
errorclass
errorvalues       r   <lambda>z8CommonDBTests.testErrorHandlerInherits.<locals>.<lambda>A   s     r   z5Error handler on crsr should be same as on connection)r$   errorhandlerr&   )r   conn
mycallabler-   s       r   testErrorHandlerInheritsz&CommonDBTests.testErrorHandlerInherits?   sU    !!##II
&{{}} J...C /....r   c                 ^   |                                  }|j        d d = 	 |                                 |                                 d S #  t	          |j                  dk    sJ t	          |j        d                   dk    sJ |j        d         d         t
          j        k    sJ Y d S xY w)Nr2   r      )r$   messagesclosecommitlenapiProgrammingErrorr   r9   s     r   !testDefaultErrorHandlerConnectionz/CommonDBTests.testDefaultErrorHandlerConnectionH   s    !!##M!!!	?JJLLLKKMMMMM	?t}%%****t}Q'((A----=#A&#*>>>>>>>>s   (A
 
AB,c                 z   d }|                                  }||_        |                                 |                                 t	          |j                  dk    sJ d |_        	 |                                 |                                 n#  Y nxY wt	          |j                  dk    s
J d            d S )Nc                     dS r1   r   r3   s       r   r7   z=CommonDBTests.testOwnErrorHandlerConnection.<locals>.<lambda>U       q r   r   JSetting errorhandler to none  should bring back the standard error handler)r$   r8   r?   r@   rA   r>   )r   r:   r9   s      r   testOwnErrorHandlerConnectionz+CommonDBTests.testOwnErrorHandlerConnectionS   s    @@ 	 !!##&

4=!!Q&&&& 	JJLLLKKMMMM	D4=!!A%%%X &%%%%s   )(B Bc                 \   |                                                                  }|j        d d = 	 |                    d           d S #  t	          |j                  dk    sJ t	          |j        d                   dk    sJ |j        d         d         t
          j        k    sJ Y d S xY w)NSELECT abbtytddrf FROM dasdasdr2   r   r=   )r$   r&   r>   executerA   rB   DatabaseErrorr,   s     r   testDefaultErrorHandlerCursorz+CommonDBTests.testDefaultErrorHandlerCursorh   s    !!##**,,M!!!	<LL9:::::	<t}%%****t}Q'((A----=#A&#*;;;;;;;;s   A	 	AB+c                 R   d }|                                                                  }||_        |                    d           t	          |j                  dk    sJ d |_        	 |                    d           n#  Y nxY wt	          |j                  dk    s
J d            d S )Nc                     dS r1   r   r3   s       r   r7   z9CommonDBTests.testOwnErrorHandlerCursor.<locals>.<lambda>t   rH   r   rL   r   rI   )r$   r&   r8   rM   rA   r>   )r   r:   r-   s      r   testOwnErrorHandlerCursorz'CommonDBTests.testOwnErrorHandlerCursorr   s    @@ 	 !!##**,,&56664=!!Q&&&& 	LL9::::	D4=!!A%%%X &%%%%s   (A> >Bc                    	 d } |d          dk    sJ |                                   |                                 |                     t          fddg           t	          j        t
          j                  _                                        }dt          j	        z  }|
                    |           |
                    dt          j	        z             |
                    dt          j	        z             |j        t
          j        <   |
                    d	t          j	        z             |                                }|d
         }|                     |d
         d           |d         }|                     |d
         d           |                     |d         d           d } |d          dk    sJ ||j        d<   |                     |d
         d           |                     |d         d           	 `n#  Y nxY w|                                  d S # 	 `n#  Y nxY w|                                  w xY w)Nc                     | dz  S )Nr=   r   aStringFields    r   r7   z:CommonDBTests.testUserDefinedConversions.<locals>.<lambda>   s    q8H r   gabba
gabbagabbac                     j         |          S r   )variantConversions)xr9   s    r   r7   z:CommonDBTests.testUserDefinedConversions.<locals>.<lambda>   s    8OPQ8R r   r=   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   r2   heyheyyoyoc                 *    |                                  S r   )upperrU   s    r   r7   z:CommonDBTests.testUserDefinedConversions.<locals>.<lambda>   s    <3E3E3G3G r   upThisUPTHISYO)helpForceDropOnTblTempr$   assertRaisesAttributeErrorcopyrB   rZ   r&   configtmprM   adoStringTypesfetchallassertEqual
convertershelpRollbackTblTemp)r   duplicatingConverterr-   tabdefrowsrowupcaseConverterr9   s          @r   testUserDefinedConversionsz(CommonDBTests.testUserDefinedConversions   sh   .	'#H#H ''00L@@@@'')))%%''Dn.R.R.R.RUVTWXXX&*i0F&G&GD#;;==DV*  LL   LLIFJV   LLDvzQ   ;OD#C$67LLJVZWXXX==??Dq'CSV\222q'CSVX...SVV,,,GGO"?8,,8888 "1DOASVX...SVT***++$$&&&&&	++$$&&&&s0   G?H# H H
#I%H('I(H,*INc           
      @
   |                                   |                                 }|                                }dt          j        z  |z   dz   }	|                    |	           |                    dt          j        z             |                    dt          j        z             |                                }
|                     |
d         d            |
d         dk    sJ |j        d         }|d         dv sJ d|d         d	d
d            |dk    r>|d         t          j
        k    s&J d|d         d	t          j
        j        d            nW|dk    r>|d         t          j        k    s&J d|d         d	t          j        j        d            n|dk    r=|d         t          j        k    s&J d|d         d	t          j        j        d            n|dk    r=|d         t          j        k    s&J d|d         d	t          j        j        d            n|dk    r=|d         t          j        k    s&J d|d         d	t          j        j        d            nJ|dk    r=|d         t          j        k    s&J d|d         d	t          j        j        d            nt"          |g}|r|                    |           t'          |          }d}|D ]=}|dz  }	 |                    dt          j        z  ||f           n#  |                                  xY w|                    dt          j        z  |g           |                                }
|rSt+          d |D                       }t-          |
d         |          s#J dt/          |
d                   d|            nSt-          |
d         t/          |                    s0J dt/          |
d                   dt/          |                      |rb|dk    r\t0          j                            |
d                   }t0          j                            |          }|                     ||           |rTt7          |          }t7          |
d                   }t9          ||z
            |z  dk     sJ d|
d         |fz              |r.d}|                     |
d         |v d|
d         d|            |                     |
d         |d|
d         d|d           ?d S )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_%sr2   r   )fldDataflddatazwas "z" expected "ru   "STRINGNUMBERBINARYDATETIMEROWIDUUIDz.INSERT INTO xx_%s (fldId,fldData) VALUES (?,?)z'SELECT fldData FROM xx_%s WHERE ?=fldIDc                 ,    g | ]}t          |          S r   )type)r   aRVs     r   r   z2CommonDBTests.helpTestDataType.<locals>.<listcomp>  s    %O%O%OCd3ii%O%O%Or   z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=")rc   r$   r&   rg   rh   rM   fetchonerk   descriptionrB   rx   valuesry   rz   r{   r|   OTHERr#   extendsetprintADOerrorstuple
isinstancer   adodbapidateconverterDateObjectToIsoFormatStringfloatabs
assertTrue)r   sqlDataTypeStringDBAPIDataTypeStringpyDatapyDataInputAlternativescompareAlmostEqualallowedReturnValuesr9   r-   ro   rs	descTupleinputsfldIdinParamallowedTypesiso1iso2svoks                        r   helpTestDataTypezCommonDBTests.helpTestDataType   s    	##%%%!!##{{}} j	
     	 	V 	;fjHIII6CDDD]]__A%%%!uzzzz $Q'	|55555aLLLII8
555
 (**Q<3:----!
!!!0---- !H,,Q<3:----!
!!!0---- !H,,Q<3:----!
!!!0---- !J..Q<3<////!###2//// !G++Q<39,,,,!	   /,,,, !F**Q<39,,,,!	   /,,,,
 &% " 	3MM1222V 3	 3	GQJEDvzQG$   ##%%%LL9FJF   B" $%O%O;N%O%O%OPP!"Q%66   <@AKKKKV 6  ""Q%f66    RUV 6 " &9Z&G&G-II"Q%PP-II&QQ  t,,,,# &MM"Q%LL1q5zzA~///Cr!uajP 0/// ' BOO1!44I"Q%II4GII   
 $$1a555&&&*   ]3	 3	s   (%LL%c                 j    |                      dddd           |                      dddd           d S )Nrealry   皙@Tr   r   gdFGr   r   s    r   testDataTypeFloatzCommonDBTests.testDataTypeFloat9  sB    fhNNNgxTRRRRRr   c           
         |                      dddddt          j        d          g           |                      dddddt          j        d          g           |                      ddd	d
dt          j        d          g           |                                 dk    r|                      ddddg           d S d S )Nzdecimal(18,2)ry   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   testDataTypeDecmalz CommonDBTests.testDataTypeDecmal=  s   !'1H1H I	 	 	
 	
 	
 	!'1H1H I	 	 	
 	
 	
 	'' 455!	 	 		
 		
 		
 >>w&&!!"8%M$N	 "      '&r   c           
         |                                  dk    r+|                     ddt          j        d                     d S |                                  dk    rB|                     ddt          j        d          ddt          j        d          g	           d S |                     d
dt          j        d                     |                     ddt          j        d                     d S )NMySQLzDECIMAL(20,4)ry   z-922337203685477.5808
PostgreSQLmoneyTg-C6
)r   r   
smallmoneyz	214748.02)r    r   r   r   r   s    r   testDataTypeMoneyzCommonDBTests.testDataTypeMoney\  s   >>w&&!!7?;R+S+S     ^^--!! 788#')O$;<<% " 	 	 	 	 	 !!,'/+:V:VWWW!!7?3J#K#K    r   c                 |   |                                  dk    r|                     ddd           |                     ddd           |                                  dvr|                     ddd	           |                                  d
v r|                     dddddg           |                     ddd           d S )Nr   tinyintry   s   smallinti )ACCESSr   bitr2   )r   r   bigintl    ^e r   intir    r   r   s    r   testDataTypeIntzCommonDBTests.testDataTypeIntr  s    >>|++!!)Xs;;;j(F;;;>>#;;;!!x   >>666!!%/$<	 "    	eXz:::::r   c                 F    dD ]}|                      |ddg d           d S )N)zchar(6)znchar(6)rx   spam  )spamr   r   r   r   r   )r   sqlDataTypes     r   testDataTypeCharzCommonDBTests.testDataTypeChar  sO    2 	 	K!!$H$H$H	 "    	 	r   c                     |                                  dk    rddg}n!|                                  dk    rg d}ng d}|D ]}|                     |dddg           d S )	Nr   varchar(10)textr   )r   r   zcharacter varying)r   znvarchar(10)r   ntextrx   r   r   )r   stringKindsr   s      r   testDataTypeVarCharz!CommonDBTests.testDataTypeVarChar  s    >>w&&(&1KK^^--FFFKK  K ' 	K 	KK!!+x&JJJJ	K 	Kr   c                    |                                  dk    rd}nd}|                     |dt          j        ddd          d	           |                                  d
vr-|                     ddt          j        ddd          d	           t          dk    rH|                                  d
vr4|                     |dt          j        dddddd          d	           d S d S d S )Nr   	timestampdatetimer{     
      Tr   )r   r   smalldatetime
pythontime      r2   )r    r   r   Datetag	Timestamp)r   dts     r   testDataTypeDatezCommonDBTests.testDataTypeDate  s*   >>|++BBB
HM$B77D 	 	
 	
 	
 >>#:::!!dB++#'	 "    ,4>>#3#3 <
 $
 $
 !!"4RR;;#'	 "     	  $
 $
r   c                    d}|t          j        |          t          |          g}|                                 dk    r-|                     ddt          j        |          |           d S |                     ddt          j        |          |           |                     ddt          j        |          |           |                                 dk    r-|                     d	dt          j        |          |           d S d S )
Ns    @*r   bytearz   r   z	binary(5)zvarbinary(100)r   image)r   Binarybytesr    r   )r   binfldarvs      r   testDataTypeBinaryz CommonDBTests.testDataTypeBinary  s5   %xv..f>>>|++!!8?6#:#:PS "      !!Xxv'>'>TW "    !! ''$'	 "    ~~7**%%Xxv'>'>TW &      +*r   c                 .    |                                   d S r   )rc   r   s    r   rm   z!CommonDBTests.helpRollbackTblTemp  s    ##%%%%%r   c                    |                                  }|                                5 }	 |                    dt          j        z             |j        s|                                 n#  Y nxY wd d d            d S # 1 swxY w Y   d S )NzDROP TABLE xx_%s)r$   r&   rM   rg   rh   
autocommitr@   )r   r9   r-   s      r   rc   z$CommonDBTests.helpForceDropOnTblTemp  s    !!##[[]] 	d/&*<=== "KKMMM	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s(   A==A)(A=)A-+A==BBc                 :   dt           j        z  }	 |                    |           n># t          j        $ r, |                                  |                    |           Y nw xY wt          d          D ]&}|                    dt           j        |fz             'd S )Nz\
            CREATE TABLE xx_%s (
                fldData INTEGER
            )
            	   z'INSERT INTO xx_%s (fldData) VALUES (%i))rg   rh   rM   rB   rN   rc   r   )r   r-   ro   is       r   helpCreateAndPopulateTableTempz,CommonDBTests.helpCreateAndPopulateTableTemp  s    
 j 		!LL      	! 	! 	!'')))LL     	! q 	V 	VALLBfjRS_TUUUU	V 	Vs   ' 8A"!A"c                 Z   |                                  }|                     |           |                    dt          j        z             |                                }t          |          dk    sJ d}|dd         D ]}|d         |k    sJ |dz  }|                                  d S )NSELECT fldData FROM xx_%sr      r   r2   )r'   r   rM   rg   rh   rj   rA   rm   )r   r-   r   r   rq   s        r   testFetchAllzCommonDBTests.testFetchAll  s    ~~++D11106:=>>>]]__2ww!||||ad8 	 	Cq6Q;;;;FAA  """""r   c                 r   |                                  }|                     |           |                    dt          j        z             |                    |j                   |                                }t          |          dk    sJ |d         d         dk    sJ | 	                                 d S )Nr   r   r=   r   )
r'   r   preparerg   rh   rM   commandrj   rA   rm   r   r-   r   s      r   testPreparedStatementz#CommonDBTests.testPreparedStatement  s    ~~++D11106:=>>>T\"""]]__2ww!||||!uQx1}}}}  """""r   c                 h   |                                  }|                     |           |                    d           |                    dt          j        z             |                                }t          |          dk    sJ |d         d         dk    sJ |                                  d S )NzSELECT * FROM nowherer   r   r=   r   )	r'   r   r   rM   rg   rh   rj   rA   rm   r   s      r   testWrongPreparedStatementz(CommonDBTests.testWrongPreparedStatement  s    ~~++D111,---'&*4	
 	
 	
 ]]__2ww!||||!uQx1}}}}  """""r   c                 
   |                                  }|                     |           |                    dt          j        z             t          |          D ]\  }}|d         |k    sJ |                                  d S )Nr   r   )r'   r   rM   rg   rh   	enumeraterm   )r   r-   r   rq   s       r   testIteratorzCommonDBTests.testIterator  s    ~~++D11106:=>>>
 
 	 	FAs q6Q;;;;;  """""r   c                    |                                  }|                     |           ddg}|                    dt          j        z  |           |j        dk    r%t          |                                 dz              n|                     |j        d           |	                    dt          j        z             |
                                }t          |          dk    sJ |                                  d S )	N)o   )   z&INSERT INTO xx_%s (fldData) VALUES (?)z7 Provider does not support rowcount (on .executemany())r=   r      )r'   r   executemanyrg   rh   rowcountprintr    rk   rM   rj   rA   rm   )r   r-   seq_of_valuesr   s       r   testExecuteManyzCommonDBTests.testExecuteMany  s    ~~++D111(4vzA=	
 	
 	
 =B  KL   
 T]A...06:=>>>]]__2ww"}}}}  """""r   c                    |                                  }|                     |           |                    dt          j        z             |j        dk    rn|                     |j        d           |                                  d S )Nr   r   r   )r'   r   rM   rg   rh   r   rk   rm   r,   s     r   testRowCountzCommonDBTests.testRowCount+  s    ~~++D11106:=>>>=BT]A...  """""r   c                 Z   |                                  }|                     |           |                    dt          j        z             |j        dk    r%t          |                                 dz              n|                     |j        d           | 	                                 d S )Nz$DELETE FROM xx_%s WHERE fldData >= 5r   z/ Provider does not support rowcount (on DELETE)   )
r'   r   rM   rg   rh   r   r   r    rk   rm   r,   s     r   testRowCountNoRecordsetz%CommonDBTests.testRowCountNoRecordset6  s    ~~++D111;fjHIII=B$..""%VVWWWWT]A...  """""r   c                    |                                  }|                     |           |                    dt          j        z             |                    d          }t          |          dk    sJ |                    d          }t          |          dk    sJ |                    d          }t          |          dk    sJ |                                  d S )Nr   r      r2   )r'   r   rM   rg   rh   	fetchmanyrA   rm   r   s      r   testFetchManyzCommonDBTests.testFetchMany@  s    ~~++D11106:=>>>^^A2ww!||||^^A2ww!||||^^A2ww!||||  """""r   c                    |                                  }|                     |           |                    dt          j        z             |                                }t          |          dk    sJ d|_        |                                }t          |          dk    sJ |                                }t          |          dk    sJ |                                }t          |          dk    sJ |                                  d S )Nr   r2   r  r   )	r'   r   rM   rg   rh   r	  rA   	arraysizerm   r   s      r   testFetchManyWithArraySizez(CommonDBTests.testFetchManyWithArraySizeL  s    ~~++D11106:=>>>^^2ww!||||^^2ww!||||^^2ww!||||^^2ww!||||  """""r   c                     |                                  }|                                 |                     t          j        | j        di            d S )Nznot a valid connect string)r$   r?   rd   rB   rN   dbrD   s     r   testErrorConnectzCommonDBTests.testErrorConnect[  sG    !!##

#+TW6RTVWWWWWr   c           	         |                                   |                                 }|                                }dt          j        z  }|                    |           ddg}d}|D ]}|dz  }	 |                    dt          j        z  ||d         |d         |d         f           n#  |                                  xY w|                    dt          j        z  |g           |                                }t          t          |                    D ]1}||         ||         k    sJ d	||         d
||         d            2t          |          |k    sJ d	|d
|d            t          |d d                   }	t          |dd                   }
|	|
k    sJ d	|	d
|
d            |d         |d         k    sJ |j        |d         k    sJ |j        |d         k    sJ |                    dt          j        z             |                                }|d         d         dk    sJ |d         d         dk    sJ |d         d         dk    sJ |d         dk    sJ |d         dk    sJ |d         dk    sJ t          d          D ]0}t          d          D ]}||         |         |||f         k    sJ 1d S )Nz
            CREATE TABLE xx_%s (
                fldId integer NOT NULL,
                fldTwo integer,
                fldThree integer,
                fldFour integer)
                )r=   r   r  )f   g   h   r2   zBINSERT INTO xx_%s (fldId,fldTwo,fldThree,fldFour) VALUES (?,?,?,?)r   r=   z7SELECT fldTwo,fldThree,fldFour FROM xx_%s WHERE ?=fldIDreturned value:"" != test value:"rw   r   fldTwoz)select fldThree,fldFour,fldTwo from xx_%sr  r  fldFourr  )r   r   r   )r   r  )r2   r=   r  )rc   r$   r&   rg   rh   rM   r   r   r   rA   r   fldThreer  rj   )r   r9   r-   ro   r   r   r   recjslice1slice2recsr   s                r   testRowIteratorzCommonDBTests.testRowIterator`  s]   ##%%%!!##{{}} j 	 	V_- "	- "	-GQJEXj!GAJ
GAJ?   
##%%%LLIFJV   --//C3w<<((  1v++++@CAPQ


S ,+++ ::(((G3GG7GGG )(( 3ss8__F71Q3<((FV###I6IIfIII $## x=GAJ....<71:----;'!*,,,,, 	@6:MNNN}}AwqzS    AwqzQAwy!S((((DzQK A%%%%DzS    q 	0 	0A1XX 0 0AwqzT!Q$Z/////0	0 	0s   29B,,Cc           
      0   |                                   |                                 }d|_        |                                }dt          j        z  }|                    |           g d}d}|D ]}|dz  }dt          j        z   dz   }	 |                    |||f           n#  |                                  xY w|                    dt          j        z   d	z   |g           |                                }| 	                    |d
         |d|d
         d|d           | 	                    |d         d           dt          j        z   dz   }	d}
|                    |	|
           d|j
        v sJ ddd|j
        d            |j        |	k    sJ d|	d|j        d            | 	                    |j        |
           |                    dt          j        z             |                                }| 	                    |d
         d           d S )Nformat
            CREATE TABLE xx_%s (
                fldId integer NOT NULL,
                fldData varchar(10),
                fldConst varchar(30))
                onetwothreer=   r2   INSERT INTO xx_zE (fldId,fldConst,fldData) VALUES (%s,'thi%s :may cause? trouble', %s)!SELECT fldData, fldConst FROM xx_z WHERE %s=fldIDr   r  r  rw   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)rc   r$   
paramstyler&   rg   rh   rM   r   r   rk   queryr   
parameters)r   r9   r-   ro   r   r   r   sqlr  selparamss              r   testFormatParamstylez"CommonDBTests.testFormatParamstyle  sh   ##%%%!!##"{{}} j 	 	V((( 	B 	BGQJE!*YZ 
S5'"23333##%%%LL3fj@CTT   --//CA<?FFFGGGL  
 SV%@AAAA 
*-XX 	 S&!!! 
""""uuudjjj$Q"""|s""""ccc4<<<$X""" 	&111?&*LMMMmmooQ.....s   
B##B:c           
      ,   |                                   |                                 }|                                }d|_        dt          j        z  }|                    |           g d}d}|D ]}|dz  }	 |                    dt          j        z  ||d           n#  |                                  xY w|                    dt          j        z  d	|i           |                                }| 	                    |d
         |d|d
         d|d           |                    dt          j        z  ddi           |                    dt          j        z             |                                }| 	                    |d
         d           d S )Nnamed
            CREATE TABLE xx_%s (
                fldId integer NOT NULL,
                fldData varchar(10))
                fourfivesixr   r2   5INSERT INTO xx_%s (fldId,fldData) VALUES (:Id,:f_Val)f_ValIdz)SELECT fldData FROM xx_%s WHERE fldID=:Idr;  r   r  r  rw   :insert into xx_%s (fldId,fldData) VALUES (:xyz,'six:five')xyz   (SELECT fldData FROM xx_%s WHERE fldID=30six:five
rc   r$   r&   r*  rg   rh   rM   r   r   rk   r   r9   r-   ro   r   r   r   r  s           r   testNamedParamstylez!CommonDBTests.testNamedParamstyle  s   ##%%%!!##{{}}!
 j 	 	V((( 	 	GQJEKj!%U33   
##%%%LL;fjH4QV-   --//CA<?FFFGGGL    	H6:UBK	
 	
 	
 	?&*LMMMmmooQ,,,,,   8&BB6c           
      ,   |                                   |                                 }|                                }d|_        dt          j        z  }|                    |           g d}d}|D ]}|dz  }	 |                    dt          j        z  ||d           n#  |                                  xY w|                    dt          j        z  d	|i           |                                }| 	                    |d
         |d|d
         d|d           |                    dt          j        z  ddi           |                    dt          j        z             |                                }| 	                    |d
         d           d S )Npyformatr3  r4  r   r2   z=INSERT INTO xx_%s (fldId,fldData) VALUES (%%(Id)s,%%(f_Val)s)r9  z-SELECT fldData FROM xx_%s WHERE fldID=%%(Id)sr;  r   r  r  rw   z?insert into xx_%s (fldId,fldData) VALUES (%%(xyz)s,'six%%five')r=  r>  r?  zsix%fiverA  rB  s           r   testPyformatParamstylez$CommonDBTests.testPyformatParamstyle  s   ##%%%!!##{{}}$
 j 	 	V((( 	 	GQJESj!%U33   
##%%%LL?&*Lu   --//CA<?FFFGGGL    	MjBK	
 	
 	

 	?&*LMMMmmooQ,,,,,rD  c           
          |                                   |                                 }d|_        |                                }dt          j        z  }|                    |           g d}d}|D ]}|dz  }	 |                    dt          j        z   dz   ||f           n#  |                                  xY wd}|                    d	t          j        z   d
z   |g           |                                }| 	                    |d         |d|d         d|d           | 	                    |d         |           d}|D ]}|dz  }	 |                    dt          j        z  ||d           n#  |                                  xY w|                    dt          j        z  d|i           |                                }| 	                    |d         |d|d         d|d           dt          j        z  }	|
                    |	           |                    |	ddi           |                    dt          j        z             |                                }| 	                    |d         d           d S )Ndynamicr"  r#  r=   r2   r'  zD (fldId,fldConst,fldData) VALUES (?,'thi%s :may cause? troub:1e', ?)zthi%s :may cause? troub:1er(  z WHERE ?=fldIDr   r  r  rw   r   r8  r9  z)SELECT fldData FROM xx_%s WHERE :Id=fldIDr;  r<  r=  r>  r?  r@  )rc   r$   r*  r&   rg   rh   rM   r   r   rk   r   )
r   r9   r-   ro   r   r   r   troubler  ppdcmds
             r   testAutomaticParamstylez%CommonDBTests.testAutomaticParamstyle>  s   ##%%%!!###{{}} j 	 	V((( 	. 	.GQJE	%j!\] G$	   ##%%%2GLL3fj@CSS   --//CA<?FFFGGGL  
 SVW---- 	 	GQJEKj!%U33   
##%%%LL;fjH4QV-   --//CA<?FFFGGGL    I6:U 	 	VVeR[)))?&*LMMMmmooQ,,,,,s   8(B!!B8&E22F	c                 "   |                                  }|                                }|j        j        r
J d            |                     |           |j                                         |                    dt          j        z             dt          j        z  }|                    |           |	                                }t          |          dk    sJ | j                                         |                    |           |                                
J d            |                    dt          j        z             |	                                }t          |          dk    s
J d            |                                  d S )	NzUnexpected beginning condition'INSERT INTO xx_%s (fldData) VALUES(100)+SELECT fldData FROM xx_%s WHERE fldData=100r2   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&   r4   r   r   r@   rM   rg   rh   rj   rA   r9   rollbackr   rm   )r   r9   r-   	selectSqlr   s        r   testRollBackzCommonDBTests.testRollBack  sZ   !!##{{}}?-OO/OOO-++D111   >KLLLAFJN	Y]]__2ww!||||	Y}}&&M '&& 	06:=>>>]]__2ww!|||K|||  """""r   c                    	 |                                  }n# t          $ r Y d S w xY w|j        r
J d            |                                }|                     |           |                    dt          j        z             |                                 dt          j        z  }|                    |           |	                                }t          |          dk    sJ |                                 |                                 |                                 }|                                 }|                                5 }|                    |           |	                                }t          |          dk    sJ |d         d         dk    sJ 	 d d d            n# 1 swxY w Y   |                                  d S )Nzdefault should be manual commitrN  rO  r2   r   d   )getAnotherConnectionr#   r   r&   r   rM   rg   rh   r@   rj   rA   r?   r$   r'   rm   )r   con2r-   rR  r   r9   s         r   
testCommitzCommonDBTests.testCommit  s   	,,..DD" 	 	 	FF	?EE$EEE"{{}}++D111>KLLLAFJN	Y]]__2ww!||||



!!##~~[[]] 	#dLL###Br77a<<<<a58s?????		# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	#
 	  """""s    
%%	AF))F-0F-c                    	 |                                  }n# t          $ r Y d S w xY w|j        r
J d            |                                }|                     |           |                    dt          j        z             dt          j        z  }|                    |           |                                }t          |          dk    sJ |
                                 |
                                 |                                 }	 |                    |           |                                }n# t          j        $ r d }Y nw xY w|J d|            |                                  d S )Nzunexpected beginning conditionrN  rO  r2   zEcursor.fetchone should return None if a query retrieves no rows. Got )rV  r#   r   r&   r   rM   rg   rh   rj   rA   r?   r'   r   rB   rN   rm   )r   rW  r-   rR  r   rq   s         r   testAutoRollbackzCommonDBTests.testAutoRollback  s   	,,..DD" 	 	 	FF	?DD$DDD"{{}}++D111>KLLLAFJN	Y]]__2ww!||||



~~	LL   --//CC  	 	 	CCC	{{[TW[[ {{ 	  """""s    
%%)D8 8EEc                 l   	 |                      ddi          }n# t          $ r Y d S w xY w|                                }|                     |           |                    dt
          j        z             |                                 |                                 5 }dt
          j        z  }|                    |           |	                                }t          |          dk    s
J d            	 d d d            n# 1 swxY w Y   |                                 |                                  d S )Nr   TrN  rP  r   #all records should still be present)rV  r#   r&   r   rM   rg   rh   r?   r'   rj   rA   rm   )r   ac_connr-   rR  r   s        r   testAutoCommitzCommonDBTests.testAutoCommit  sv   	//t0DEEGG" 	 	 	FF	~~++D111>KLLL

^^ 	H3fj@ILL   Br77b==="G====	H 	H 	H 	H 	H 	H 	H 	H 	H 	H 	H 	H 	H 	H 	H 	  """""s    
((ADDDc                    	 |                                  }n# t          $ r Y d S w xY wd|_        |                                }|                     |           |                    dt          j        z             |                                 | 	                                }|                                 | 
                                5 }dt          j        z  }|                    |           |                                }t          |          dk    s
J d            	 d d d            n# 1 swxY w Y   |                                  d S )NTrN  rP  r   r\  )rV  r#   r   r&   r   rM   rg   rh   r?   r$   r'   rj   rA   rm   )r   r]  r-   r9   rR  r   s         r   testSwitchedAutoCommitz$CommonDBTests.testSwitchedAutoCommit  s   	//11GG" 	 	 	FF	!~~++D111>KLLL

!!##^^ 	H3fj@ILL   Br77b==="G====	H 	H 	H 	H 	H 	H 	H 	H 	H 	H 	H 	H 	H 	H 	H 	  """""s    
%%
AD--D14D1c                 
    G d dt                     } G d dt                    } G d dt                    } |t          d                    } |t	          j        dd	                    } |t	          j                              }|                                  |                                 }|                                }d
t          j
        z  }	|                    |	           |                    dt          j
        z  |||f           |                                 |                                 }|                                 5 }dt          j
        z  }
|                    |
           |                                }|                     |j        |           |                     |j        |           |                     |j        |           d d d            n# 1 swxY w Y   |                                  d S )Nc                       e Zd ZdS );CommonDBTests.testExtendedTypeHandling.<locals>.XtendStringNr+   
__module____qualname__r   r   r   XtendStringrc            Dr   rg  c                       e Zd ZdS )8CommonDBTests.testExtendedTypeHandling.<locals>.XtendIntNrd  r   r   r   XtendIntrj    rh  r   rk  c                       e Zd ZdS ):CommonDBTests.testExtendedTypeHandling.<locals>.XtendFloatNrd  r   r   r   
XtendFloatrm    rh  r   rn  r>  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   randintrc   r$   r&   rg   rh   rM   r?   r'   r   rk   r   r   assertAlmostEqualfrm   )r   rg  rk  rn  xsxixfr9   r-   ro   rR  rq   s               r   testExtendedTypeHandlingz&CommonDBTests.testExtendedTypeHandling  sd   	 	 	 	 	# 	 	 		 	 	 	 	s 	 	 		 	 	 	 	 	 	 	 [b))**XfnT3//00Z((##%%%!!##{{}}$
 j 	 	V:VZG"bRT	
 	
 	
 	

!!##^^ 	.3fj@ILL   --//CSUB'''SUB'''""35"---	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	  """""s   B
G$$G(+G()NNN)0r+   re  rf  __doc__r   r    r$   r'   r.   r;   rE   rJ   rO   rR   rs   r   r   r   r   r   r   r   r   r   rm   rc   r   r   r   r   r   r  r  r  r
  r  r  r  r0  rC  rG  rL  rS  rX  rZ  r^  r`  rv  r   r   r   r   r   ,   s       jj       " " "- - -3 3 3
 
 
	? 	? 	?
 
 
*< < <
 
 
&/' /' /'l !% A A A AFS S S  >  ,; ; ;"  K K K   4  ,& & &  V V V$# # ## # #
# 
# 
## # ## # #&	# 	# 	## # #
# 
# 
## # #X X X
A0 A0 A0F;/ ;/ ;/z,- ,- ,-\.- .- .-`G- G- G-R# # #.# # #6# # #8# # #&# # #*'# '# '# '# '#r   r   c                   @    e Zd Zd Zd Zd Zd
dZd Zd Zd Z	d	 Z
dS )TestADOwithSQLServerc                     t          j        t           j        d         i t           j        d         | _        d| j        _        d| _        t           j        | _        d S )Nr   r2   r>  r   )rg   dbSqlServerconnectconnStrSQLServerr9   timeoutr   r  r   s    r   r   zTestADOwithSQLServer.setUp(  sR    -$Q'
+1+B1+E
 
	 	+r   c                     	 | j                                          n#  Y nxY w	 | j                                          n#  Y nxY wd | _         d S r   r9   rQ  r?   r   s    r   tearDownzTestADOwithSQLServer.tearDown0  _    	I    	D	IOO	D			     > Ac                     | j         S r   r9   r   s    r   r$   z"TestADOwithSQLServer.getConnection;  
    yr   Nc                     t           j        d                                         }|r|                    |           t          j        t           j        d         i |S Nr2   r   )rg   r|  rf   updater{  r   addkeyskeyss      r   rV  z)TestADOwithSQLServer.getAnotherConnection>  sS    &q)..00 	!KK   (&*A!*DMMMMr   c                    | j                                         }d}	 |                    d           | j                                          n#  Y nxY w|                    |           |                    dd          }|d         dk    sJ |d         d            |d         d	k    sJ |d         d
            |d         dk    sJ |d         d            | j                                          d S )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"r2   r  z is not "Anne"r=   DodsworthAnnez is not "DodsworthAnne")r9   r&   rM   r@   callprocrQ  )r   r-   spdef	retvaluess       r   $testVariableReturningStoredProcedurez9TestADOwithSQLServer.testVariableReturningStoredProcedureD  s#   y!!	LLCDDDI	DUMM')P
 
	 |{***y|,R,R,R***|v%%%)A,'H'H'H%%%|...|666 /.. 		   .A Ac                 b   |                                  }|                     |           dt          j        dt          j        dt          j        d}	 |                    d           | j                                         n#  Y nxY w|                    |           |                    d          }|                                }| 	                    |d         d           |
                                dk    s
J d	            |                                r
J d
            |
                                dk    s
J d            |                                }| 	                    |d         d         d           |
                                
J d            |                                  d S )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   rg   rh   rM   r9   r@   r  r   rk   nextsetrj   rm   )r   r-   r  r  rq   rowdescs         r   testMultipleSetReturnz*TestADOwithSQLServer.testMultipleSetReturn_  s   ~~++D1111 JJJJJJJJJ

	LLDEEEI	DUMM">??	mmooQ###||~~%%%'A%%%==??CC$CCC"||~~%%%'D%%%--//A***||~~%%'P%%%  """""s   .B Bc                    | j                                         }d}	 |                    d           | j                                          n#  Y nxY w|                    |           |                    dt          j        dddddd          d	d
g          }|d         dk    sJ d|d         z              | j                                          d S )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   r2   Beepz                              r=   zDec 25 2014 12:01AM Beepzvalue was="%s")r9   r&   rM   r@   r  r   r   rQ  r   r-   r  results       r   testDatetimeProcedureParameterz3TestADOwithSQLServer.testDatetimeProcedureParameter  s    y!!	LLCDDDI	DU'b"aA66I
 

 ay66668H6RS98T666	r  c                    | j                                         }d}	 |                    d           | j                                          n#  Y nxY w|                    |           t	          j        t          j        t          j        f|j	        dgdg di          }|d         r3dt          |d                   v sd	t          |          v s
J d
            n|d         sJ |d                     | j                                          d S )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 Alicer   z	@theInputr2   rN   z(Identifies the wrong erroneous parameter)r9   r&   rM   r@   tryconnection%try_operation_with_expected_exceptionrB   	DataErrorrN   r  ro  rQ  r  s       r   %testIncorrectStoredProcedureParameterz:TestADOwithSQLServer.testIncorrectStoredProcedureParameter  s#   y!!	LLCDDDI	DU D]C-.M()AAAB	
 
 !9 	(#fQi..00Os6{{4R4R4R: 5S4RR !9''fQi''9	r  r   )r+   re  rf  r   r  r$   rV  r  r  r  r  r   r   r   ry  ry  '  s        , , ,	 	 	  N N N N  6 #  #  #D  2    r   ry  c                   .    e Zd Zd Zd Zd ZddZd ZdS )TestADOwithAccessDBc                     t          j        t           j        d         i t           j        d         | _        d| j        _        d| _        t           j        | _        d S )Nr   r2   r>  r   )rg   dbAccessconnectconnStrAccessr9   r}  r   r  r   s    r   r   zTestADOwithAccessDB.setUp  sR    *!!$
(.(<Q(?
 
	 	(r   c                     	 | j                                          n#  Y nxY w	 | j                                          n#  Y nxY wd | _         d S r   r  r   s    r   r  zTestADOwithAccessDB.tearDown  r  r  c                     | j         S r   r  r   s    r   r$   z!TestADOwithAccessDB.getConnection  r  r   Nc                      t          d          )Nz2Jet cannot use a second connection to the databaser"   )r   r  s     r   rV  z(TestADOwithAccessDB.getAnotherConnection  s    !"VWWWr   c                      | j         t          j        d         i t          j        d         }|J |                                 d S Nr   r2   )r  rg   r  r?   r   cs     r   testOkConnectz!TestADOwithAccessDB.testOkConnect  sB    DGV)!,H0DQ0GHH}}}						r   r   r+   re  rf  r   r  r$   rV  r  r   r   r   r  r    sh        ) ) )	 	 	  X X X X    r   r  c                   .    e Zd Zd Zd Zd ZddZd ZdS )TestADOwithMySqlc                     t          j        t           j        d         i t           j        d         | _        d| j        _        d| _        t           j        | _        d S )Nr   r2   r>  r   )rg   dbMySqlconnectconnStrMySqlr9   r}  r   r  r   s    r   r   zTestADOwithMySql.setUp  sR    ) #
'-':1'=
 
	 	'r   c                     	 | j                                          n#  Y nxY w	 | j                                          n#  Y nxY wd | _         d S r   r  r   s    r   r  zTestADOwithMySql.tearDown  r  r  c                     | j         S r   r  r   s    r   r$   zTestADOwithMySql.getConnection  r  r   Nc                     t           j        d                                         }|r|                    |           t          j        t           j        d         i |S r  )rg   r  rf   r  r  r  s      r   rV  z%TestADOwithMySql.getAnotherConnection  sS    "1%**,, 	!KK   $f&9!&<EEEEr   c                 h     | j         t          j        d         i t          j        d         }|J d S r  )r  rg   r  r  s     r   r  zTestADOwithMySql.testOkConnect  s5    DGV(+Fv/B1/EFF}}}}}r   r   r  r   r   r   r  r    sh        ( ( (	 	 	  F F F F    r   r  c                   .    e Zd Zd Zd Zd ZddZd ZdS )TestADOwithPostgresc                     t          j        t           j        d         i t           j        d         | _        d| j        _        d| _        t           j        | _        d S )Nr   r2   r>  r   )rg   dbPostgresConnectconnStrPostgresr9   r}  r   r  r   s    r   r   zTestADOwithPostgres.setUp  sR    ,#A&
*0*@*C
 
	 	"*r   c                     	 | j                                          n#  Y nxY w	 | j                                          n#  Y nxY wd | _         d S r   r  r   s    r   r  zTestADOwithPostgres.tearDown&  r  r  c                     | j         S r   r  r   s    r   r$   z!TestADOwithPostgres.getConnection1  r  r   Nc                     t           j        d                                         }|r|                    |           t          j        t           j        d         i |S r  )rg   r  rf   r  r  r  s      r   rV  z(TestADOwithPostgres.getAnotherConnection4  sS    %a(--// 	!KK   ')?)BKdKKKr   c                 h     | j         t          j        d         i t          j        d         }|J d S r  )r  rg   r  r  s     r   r  z!TestADOwithPostgres.testOkConnect:  s5    DGV+A.L&2H2KLL}}}}}r   r   r  r   r   r   r  r    sh        + + +	 	 	  L L L L    r   r  c                   >    e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
d	S )
TimeConverterInterfaceTestc                 B    | j                             ddd          sJ d S )N  r=   )tcr   r   s    r   	testIDatez$TimeConverterInterfaceTest.testIDate]  s&    w||D!Q'''''''r   c                 B    | j                             ddd          sJ d S )N   r=   )r  Timer   s    r   	testITimez$TimeConverterInterfaceTest.testITime`  s&    w||B1%%%%%%%r   c                 H    | j                             dddddd          sJ d S )Nr  r=   r  r2   )r  r   r   s    r   testITimestampz)TimeConverterInterfaceTest.testITimestampc  s.    w  q!RA6666666r   c                 >    | j                             d          sJ d S )N?mUxG@)r  DateObjectFromCOMDater   s    r   testIDateObjectFromCOMDatez5TimeConverterInterfaceTest.testIDateObjectFromCOMDatef  s$    w,,];;;;;;;r   c                 4    t          | j        d          sJ d S )NCOMDate)hasattrr  r   s    r   testICOMDatez'TimeConverterInterfaceTest.testICOMDatei  s     tw	*******r   c                     | j                             ddd          }| j                             |          }d}||k    s
J |            d S )N  r   r   g    @)r  r   r  r   dcomDatecorrects       r   testExactDatez(TimeConverterInterfaceTest.testExactDatel  sP    GLLr2&&'//!$$'!!!7!!!!!r   c                 J   | j                             dddddd          }| j                             |          }d}|                     ||           | j                             ddd	d
dd          }| j                             |          }d}|                     ||           d S )Nr  r   r   r   r   g    @  r           gSsn@)r  r   r  rk   r  s       r   testExactTimestampz-TimeConverterInterfaceTest.testExactTimestampr  s    GdBB155'//!$$'***GdAq"b"55'//!$$$'*****r   c                    | j                             dddddd          }| j                             |          }|                     t	          |d d                   d           | j                             d	d
d          }| j                             |          }|                     t	          |d d                   d           d S )Nr  r   r   r   r   r      z1994-11-15 12:03:10r  r  r=   z
2003-05-02)r  r   r   rk   ro  r   )r   r  isor   s       r   testIsoFormatz(TimeConverterInterfaceTest.testIsoFormat}  s    GdBB266g11!44S"X(=>>>W\\$1%%g11"55S"X55555r   N)r+   re  rf  r  r  r  r  r  r  r  r  r   r   r   r  r  \  s        ( ( (& & &7 7 7< < <+ + ++ + +	+ 	+ 	+6 6 6 6 6r   r  c                   2    e Zd Zd Zd Zd Zd Zd Zd ZdS )TestPythonTimeConverterc                 6    t          j                    | _        d S r   )rB   pythonTimeConverterr  r   s    r   r   zTestPythonTimeConverter.setUp  s    )++r   c                     t          j        d          }t          j        |          }| j                            |          }t          |dz
            dk     sJ d|z              d S )N)	r   r  r      r   r2   r     r   r  UUUUUU?z%f more than an hour wrong)timemktime	localtimer  r  r   )r   mktcmds       r   testCOMDatez#TestPythonTimeConverter.testCOMDate  sg    [UVVN2gooa  3&''(2224PSV4V22222r   c                    | j                             d          }t          j        t          j        d                    }t          j        t          j        d                    }||cxk     r|k     sn J d| d            d S )Nr  )	r   r  r   r   r  r2   r  r  r   )	r   r     r   r  r=   r  r  r   rw   z$" should be about 2002-6-28 12:15:01)r  r  r  gmtimer  )r   r  t1t2s       r   testDateObjectFromCOMDatez1TestPythonTimeConverter.testDateObjectFromCOMDate  s    g++M::[KSTT
 
 [KTUU
 
 C}}}}"}}}}}K#KKK}}}}}r   c                     t          j        d          }t          j        d          }| j                            ddd          }|t          j        |          cxk     r|k     sn J |            d S )N)	r   r  r   r  r   r2   r     r   )	r   r  r>  r  r   r2   r  r  r   r   r  r  )r  r  r  r   r   r  r   objs       r   testDatez TestPythonTimeConverter.testDate  sv    [TUU[TUUgll4B''DK$$))))r)))))3)))))r   c                     |                      | j                            ddd          t          j        d                     d S )Nr  r   r=   i  )rk   r  r  r  r  r   s    r   testTimez TestPythonTimeConverter.testTime  sF    GLLR##T[1K%L%L	
 	
 	
 	
 	
r   c                    t          j        t          j        d                    }t          j        t          j        d                    }| j                            dddddd          }||cxk     r|k     sn J |            d S )	N)	r   r  r   r  r  r2   r  r  r   )	r   r  r   r     r2   r  r  r   r   r  r   r  r   r=   )r  r  r  r  r   r  s       r   testTimestampz%TestPythonTimeConverter.testTimestamp  s    ^KTUU
 
 ^KTUU
 
 gaRQ77C}}}}"}}}}}c}}}}}r   N	r+   re  rf  r   r  r  r  r  r  r   r   r   r  r    st        , , ,W W W	L 	L 	L/ / /
 
 

" " " " "r   r  c                   2    e Zd Zd Zd Zd Zd Zd Zd ZdS )TestPythonDateTimeConverterc                 6    t          j                    | _        d S r   )rB   pythonDateTimeConverterr  r   s    r   r   z!TestPythonDateTimeConverter.setUp  s    -//r   c                     t          j         dddddd          }| j                            |          }t          |dz
            dk     s
J d	            d S )
Nr   r  r   r  r   r2   r  r  zmore than an hour wrong)r   r  r  r   )r   r  r  s      r   r  z'TestPythonDateTimeConverter.testCOMDate  s\    dAr2r155gooa  3&''(2224M22222r   c           	         | j                             d          }t          j        dddddd          }t          j        dddddd          }||cxk     r|k     sn J |            t          j        ddddddd	          }| j                             | j                             |                    }||cxk     r|k     sn J |            d S )
Nr  r   r  r   r  r  r2   r
  i )r  r  r   r  )r   r  r  r   txc1s         r   r  z5TestPythonDateTimeConverter.testDateObjectFromCOMDate  s    g++M::tQBA66tQBA66C}}}}"}}}}}c}}}!RRF
 
 W**47??2+>+>??B|||||||||R|||||r   c                     t          j        ddd          }t          j        ddd          }| j                            ddd          }||cxk     r|k     sn J |            d S )Nr   r  r   r>  r  )r   dater  r   r  s       r   r  z$TestPythonDateTimeConverter.testDate  sd    ]4B'']4B''gll4B''C}}}}"}}}}}c}}}}}r   c                     |                      | j                            ddd                                          d d         d           d S )Nr  r   r=   r  z18:15:02)rk   r  r  	isoformatr   s    r   r  z$TestPythonDateTimeConverter.testTime  sE    b"a00::<<RaR@*MMMMMr   c                     t          j         dddddd          }t          j         dddddd          }| j                            dddddd	          }||cxk     r|k     sn J |            d S )
Nr   r  r   r  r  r2   r
  r   r=   )r   r  r   r  s       r   r  z)TestPythonDateTimeConverter.testTimestamp  sz    tQBA66tQBA66gaRQ77C}}}}"}}}}}c}}}}}r   Nr  r   r   r   r  r    st        0 0 0N N N
  
  
 " " "N N N" " " " "r   r  testc                       e Zd Zd Zd ZdS )cleanup_managerc                     d S r   r   r   s    r   	__enter__zcleanup_manager.__enter__  s    r   c                 X    t          j        t           j        t           j                   d S r   )rg   cleanup
testfoldermdb_name)r   exc_typeexc_valexc_tbs       r   __exit__zcleanup_manager.__exit__  s    v(&/:::::r   N)r+   re  rf  r  r&  r   r   r   r  r    s2          ; ; ; ; ;r   r  __main__zDefault Date Converter is zChanged dateconverter to ).rw  rf   r   r   r   r	   r  unittestadodbapitestconfigrg   r  r   adodbapi.apibaseapibaserB   r   TestCaser   ry  r  r  r  r  r  r  defaultTestLoaderloadTestsFromModulesuites
doTimeTestappenddoAccessTestdoSqlServerTestdoMySqlTestdoPostgresTestr  	TestSuitesuiter+   deepcopymysuiter   defaultDateConverterr   TextTestRunnerrunr  r   r   r   <module>r=     s   - -,        # # # #           M M Mx# x# x# x# x#H% x# x# x#vQ Q Q Q Q= Q Q Qh    -   @    }   D    -   ~(6 (6 (6 (6 (6!2 (6 (6 (6V)" )" )" )" )"8 )" )" )"X#" #" #" #" #""< #" #" #"N 223NPVWW
 
 
MM"667NPVWW   
 
MM"667JFSS   
 
MM"667KVTT   
 
MM"667GPP   
 
MM"667JFSS  
; ; ; ; ; ; ; ; 	6""zdmE""G			 3 3'5g0D0DFGGG,!!%%g... 	3#dm G /Fc.E.G.GH+E-...E(#1222#H#%%))'2223 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 s   B7KKK