Format: application/x-python-code
⬇ Download File (38.7 KB)
   1  o
   2  
   3  ��h���@s\dZ	ddlZddlZddlZddlZddlZddlZddlZddlZ	ddl
   4  Z
   5  ddlZddlm
   6  Zdd�ZGdd�dej�ZGdd�de�ZGd	d
   7  �d
   8  e�ZGdd�de�ZGd
   9  d�de�ZGdd�dej�ZGdd�de�ZGdd�de�Zej�ed�gZe	jr�e�ej�ed��e	jr�e�ej�ed��e	jr�e�ej�ed��e	j r�e�ej�ed��e	j!r�e�ej�ed��Gdd�d�Z"e�#e�Z$e%dk�r,e�&e$�Z'e"��Hej(Z)e*e�e*de)f�e)Z(e�+��,e'�e	j�re�&e$�Z'e�-�ej_(e*d�e*ejj(�e�+��,e'�Wd�dSWd�dS1�s%wYdSdS)z'Unit tests version 2.6.1.0 for adodbapi�NcCsd�dd�td�D��S)N�cSsg|]}t�tj��qS�)�random�choice�string�
  10  ascii_letters)�.0�nrr�Pc:\Users\shubh\Videos\agent\nova\Lib\site-packages\adodbapi/test/adodbapitest.py�
  11  <listcomp>)sz randomstring.<locals>.<listcomp>� )�join�range)�lengthrrr
  12  �randomstring(�rc@sxeZdZdZdd�Zdd�Zdd�Zdd	�Zd
  13  d�Zdd
  14  �Z	dd�Z
  15  dd�Zdd�Zdd�Z
  16  dd�Z			d[dd�Zdd�Zdd�Zdd �Zd!d"�Zd#d$�Zd%d&�Zd'd(�Zd)d*�Zd+d,�Zd-d.�Zd/d0�Zd1d2�Zd3d4�Zd5d6�Zd7d8�Zd9d:�Zd;d<�Z d=d>�Z!d?d@�Z"dAdB�Z#dCdD�Z$dEdF�Z%dGdH�Z&dIdJ�Z'dKdL�Z(dMdN�Z)dOdP�Z*dQdR�Z+dSdT�Z,dUdV�Z-dWdX�Z.dYdZ�Z/dS)\�
  17  CommonDBTestszdSelf contained super-simple tests in easy syntax, should work on everything between mySQL and OraclecCs
  18  d|_dS)N�unknown��engine��selfrrr
  19  �setUp/s
  20  zCommonDBTests.setUpcC�|jS�Nrrrrr
  21  �	getEngine2�zCommonDBTests.getEnginecCst�r��NotImplementedErrorrrrr
  22  �
  23  getConnection5�zCommonDBTests.getConnectioncCs|����Sr)r�cursorrrrr
  24  �	getCursor8�zCommonDBTests.getCursorcCs|��}|jjdksJ�dS)NZCursor)r"�	__class__�__name__�r�crsrrrr
  25  �testConnection;szCommonDBTests.testConnectioncCs4|��}dd�}||_|��}|j|ksJd��dS)NcS�dS�N�r��
  26  connectionr!Z
  27  errorclassZ
  28  errorvaluerrr
  29  �<lambda>A�z8CommonDBTests.testErrorHandlerInherits.<locals>.<lambda>z5Error handler on crsr should be same as on connection)r�errorhandlerr!)r�conn�
  30  mycallabler'rrr
  31  �testErrorHandlerInherits?s�z&CommonDBTests.testErrorHandlerInheritscCsx|��}|jdd�=z|��|��WdSt|j�dks"J�t|jd�dks-J�|jddtjks9J�YdS)Nr+r�)r�messages�close�commit�len�apiZProgrammingError�rr1rrr
  32  �!testDefaultErrorHandlerConnectionHsz/CommonDBTests.testDefaultErrorHandlerConnectioncCsvdd�}|��}||_|��|��t|j�dksJ�d|_z
  33  |��|��WnYt|j�dks9Jd��dS)NcSr)r*rr,rrr
  34  r.Ur/z=CommonDBTests.testOwnErrorHandlerConnection.<locals>.<lambda>r�JSetting errorhandler to none  should bring back the standard error handler)rr0r6r7r8r5)rr2r1rrr
  35  �testOwnErrorHandlerConnectionSs ��z+CommonDBTests.testOwnErrorHandlerConnectioncCsv|����}|jdd�=z|�d�WdSt|j�dks!J�t|jd�dks,J�|jddtjks8J�YdS)N�SELECT abbtytddrf FROM dasdasdr+rr4)rr!r5�executer8r9�
  36  DatabaseErrorr&rrr
  37  �testDefaultErrorHandlerCursorhsz+CommonDBTests.testDefaultErrorHandlerCursorcCsndd�}|����}||_|�d�t|j�dksJ�d|_z|�d�WnYt|j�dks5Jd��dS)NcSr)r*rr,rrr
  38  r.tr/z9CommonDBTests.testOwnErrorHandlerCursor.<locals>.<lambda>r>rr<)rr!r0r?r8r5)rr2r'rrr
  39  �testOwnErrorHandlerCursorrs�
  40  �z'CommonDBTests.testOwnErrorHandlerCursorcsnz�dd�}|d�dks
  41  J�|��|���|�t�fdd�dg�t�tj��_���}dtj	}|�
  42  |�|�
  43  dtj	�|�
  44  d	tj	�|�jtj<|�
  45  d
  46  tj	�|��}|d}|�
  47  |dd�|d}|�
  48  |dd
  49  �|�
  50  |dd�dd�}|d�dks�J�||jd<|�
  51  |dd
  52  �|�
  53  |dd�Wz�`WnY|��dSz�`WnY|��w)NcSs|dS)Nr4r�ZaStringFieldrrr
  54  r.��z:CommonDBTests.testUserDefinedConversions.<locals>.<lambda>ZgabbaZ
  55  gabbagabbacs
  56  �j|Sr)�variantConversions)�x�r1rr
  57  r.�s
  58  r4zDCREATE TABLE xx_%s (fldData VARCHAR(100) NOT NULL, fld2 VARCHAR(20))z7INSERT INTO xx_%s(fldData,fld2) VALUES('gabba','booga')z2INSERT INTO xx_%s(fldData,fld2) VALUES('hey','yo')z/SELECT fldData,fld2 FROM xx_%s ORDER BY fldDatarr+ZheyheyZyoyocSs|��Sr)�upperrCrrr
  59  r.�rDZupThisZUPTHISZYO)�helpForceDropOnTblTempr�assertRaises�AttributeError�copyr9rEr!�config�tmpr?ZadoStringTypes�fetchall�assertEqual�
  60  converters�helpRollbackTblTemp)rZduplicatingConverterr'�tabdef�rows�rowZupcaseConverterrrGr
  61  �testUserDefinedConversions�sT��
  62  ��
  63  �
  64  z(CommonDBTests.testUserDefinedConversionsNcCs�|��|��}|��}dtj|d}	|�|	�|�dtj�|�dtj�|��}
  65  |�|
  66  dd�|
  67  ddks>J�|jd}|ddvsSJd|dd	f��|d
  68  krk|dt	j
  69  ksjJd|dt	j
  70  jf��nz|dkr�|dt	jks�Jd|dt	jjf��nb|dkr�|dt	j
  71  ks�Jd|dt	j
  72  jf��nJ|d
  73  kr�|dt	jks�Jd|dt	jjf��n2|dkr�|dt	jks�Jd|dt	jjf��n|dkr�|dt	jks�Jd|dt	jjf��nt�|g}|r�|�|�t|�}d}
  74  |D]�}|
  75  d7}
  76  z
  77  |�dtj|
  78  |f�Wn|���|�dtj|
  79  g�|��}
  80  |�rBtdd�|D��}t|
  81  d|��sAJdt|
  82  d�|f��nt|
  83  dt|���sZJdt|
  84  d�t|�f��|�rw|d
  85  k�rwtj�|
  86  d�}tj�|�}|�||�q�|�r�t|�}t|
  87  d�}t||�|dk�s�Jd|
  88  d|f��q�|�r�d}|�|
  89  d|vd|
  90  d�d|���q�|�|
  91  d|d|
  92  d|f�q�dS)Nzb
  93              CREATE TABLE xx_%s (
  94                  fldId integer NOT NULL,
  95                  fldData z)
  96  z$INSERT INTO xx_%s (fldId) VALUES (1)zSELECT fldId,fldData FROM xx_%sr+r)�fldDataZflddatazwas "%s" expected "%s"rW�STRING�NUMBER�BINARY�DATETIME�ROWID�UUIDz.INSERT INTO xx_%s (fldId,fldData) VALUES (?,?)z'SELECT fldData FROM xx_%s WHERE ?=fldIDcSsg|]}t|��qSr)�type)rZaRVrrr
  97  rsz2CommonDBTests.helpTestDataType.<locals>.<listcomp>z"result type "%s" must be one of %sz'result type "%s" must be instance of %sg�h㈵��>z-Values not almost equal recvd=%s, expected=%fFzValue "z	" not in z.Values are not equal recvd="%s", expected="%s")rIrr!rMrNr?�fetchonerP�descriptionr9rX�valuesrYrZr[r\�OTHERr�extend�set�printADOerrors�tuple�
  98  isinstancer^�adodbapi�
  99  dateconverter�DateObjectToIsoFormatString�float�abs�
 100  assertTrue)rZsqlDataTypeStringZDBAPIDataTypeStringZpyDataZpyDataInputAlternatives�compareAlmostEqual�allowedReturnValuesr1r'rS�rsZ	descTuple�inputs�fldId�inParamZallowedTypesZiso1Ziso2�s�v�okrrr
 101  �helpTestDataType�s�	����
 102  
 103  
 104  �
 105  �
 106  �
 107  �
 108  �
 109  �
 110  �
 111  ���
 112  ����
 113  �
 114  ���zCommonDBTests.helpTestDataTypecCs(|jddddd�|jddddd�dS)N�realrY皙����@T�rnrkgd��F��G�rwrrrr
 115  �testDataTypeFloat9szCommonDBTests.testDataTypeFloatc	Cs�|jdddddt�d�gd�|jdddddt�d�gd�|jddd	d
 116  dt�d�gd�|��d
 117  kr?|jddddgd�dSdS)Nz
 118  decimal(18,2)rYryz3.45z3,45�roz
 119  numeric(18,2)z
 120  decimal(20,2)lG#xoW1z444444444444444444.00z444444444444444444,00Z444444444444444444�MSSQLZuniqueidentifierr]z&{71A4F49E-39F3-42B1-A41E-48FF154996E6})rw�decimal�Decimalrrrrr
 121  �testDataTypeDecmal=s:����
 122  
 123  ��z CommonDBTests.testDataTypeDecmalc	Cs�|��dkr|�ddt�d��dS|��dkr,|jddt�d�ddt�d�gd	�dS|�d
 124  dt�d��|�ddt�d��dS)N�MySQLz
 125  DECIMAL(20,4)rYz-922337203685477.5808�
 126  PostgreSQLZmoneyTg-C��6
 127  �)rnroZ
 128  smallmoneyz	214748.02)rrwrr�rrrr
 129  �testDataTypeMoney\s$��
 130  ��zCommonDBTests.testDataTypeMoneycCsv|��dkr
 131  |�ddd�|�ddd�|��dvr!|�ddd	�|��d
 132  vr2|jdddddgd
 133  �|�ddd�dS)Nr�ZtinyintrY�sZsmallinti���)�ACCESSr��bitr+)r~r�Zbigintl^�er}�inti����rrwrrrr
 134  �testDataTypeIntrs��zCommonDBTests.testDataTypeIntcCs$dD]
 135  }|j|ddgd�d�qdS)N)zchar(6)znchar(6)rX�spam  )�spamr�r�r�r}r{)r�sqlDataTyperrr
 136  �testDataTypeChar�s��zCommonDBTests.testDataTypeCharcCsT|��dkrddg}n|��dkrgd�}ngd�}|D]}|�|dddg�qdS)	Nr��varchar(10)�textr�)r�r�zcharacter varying)r�znvarchar(10)r�ZntextrXr�r�)rZstringKindsr�rrr
 137  �testDataTypeVarChar�s
 138  
 139  �z!CommonDBTests.testDataTypeVarCharcCs�|��dkr	d}nd}|j|dt�ddd�dd	�|��d
 140  vr-|jddt�ddd�dd	�tdkrJ|��d
 141  vrL|j|dt�dddd
 142  dd�dd	�dSdSdS)Nr��	timestamp�datetimer[���
 143  �Trz)r�r�Z
 144  smalldatetimeZ
 145  pythontime��r+)rrwrh�Date�tag�	Timestamp)r�dtrrr
 146  �testDataTypeDate�s*��
 147  ��zCommonDBTests.testDataTypeDatecCs�d}|t�|�t|�g}|��dkr |jddt�|�|d�dS|jddt�|�|d�|jddt�|�|d�|��dkrL|jd	dt�|�|d�dSdS)
 148  Ns�@*r�ZbytearZr}z	binary(5)zvarbinary(100)r��image)rh�Binary�bytesrrw)rZbinfldZarvrrr
 149  �testDataTypeBinary�s(
 150  ���
 151  ��z CommonDBTests.testDataTypeBinarycCs|��dSr)rIrrrr
 152  rR�r#z!CommonDBTests.helpRollbackTblTempcCsr|��}|���'}z|�dtj�|js|��WnYWd�dSWd�dS1s2wYdS)NzDROP TABLE xx_%s)rr!r?rMrN�
 153  autocommitr7)rr1r'rrr
 154  rI�s
 155  ���"z$CommonDBTests.helpForceDropOnTblTempcCsfdtj}z|�|�Wntjy|��|�|�Ynwtd�D]}|�dtj|f�q$dS)Nz\
 156              CREATE TABLE xx_%s (
 157                  fldData INTEGER
 158              )
 159              �	z'INSERT INTO xx_%s (fldData) VALUES (%i))rMrNr?r9r@rIr)rr'rS�irrr
 160  �helpCreateAndPopulateTableTemp�s����z,CommonDBTests.helpCreateAndPopulateTableTempcCst|��}|�|�|�dtj�|��}t|�dksJ�d}|dd�D]}|d|ks/J�|d7}q%|��dS)N�SELECT fldData FROM xx_%sr�������rr+)r"r�r?rMrNrOr8rR)rr'rpr�rUrrr
 161  �testFetchAll�s
 162  
 163  zCommonDBTests.testFetchAllcCsf|��}|�|�|�dtj�|�|j�|��}t|�dks#J�|dddks-J�|�	�dS)Nr�r�r4r)
 164  r"r��preparerMrNr?�commandrOr8rR�rr'rprrr
 165  �testPreparedStatement�s
 166  z#CommonDBTests.testPreparedStatementcCsd|��}|�|�|�d�|�dtj�|��}t|�dks"J�|dddks,J�|��dS)NzSELECT * FROM nowherer�r�r4r)	r"r�r�r?rMrNrOr8rRr�rrr
 167  �testWrongPreparedStatements
 168  
 169  �z(CommonDBTests.testWrongPreparedStatementcCsP|��}|�|�|�dtj�t|�D]\}}|d|ks!J�q|��dS)Nr�r)r"r�r?rMrN�	enumeraterR)rr'r�rUrrr
 170  �testIterators
 171  �zCommonDBTests.testIteratorcCs�|��}|�|�ddg}|�dtj|�|jdkr$t|��d�n|�|jd�|�	dtj�|�
 172  �}t|�dks?J�|��dS)	N)�o)��z&INSERT INTO xx_%s (fldData) VALUES (?)�����z7 Provider does not support rowcount (on .executemany())r4r��)
 173  r"r�ZexecutemanyrMrN�rowcount�printrrPr?rOr8rR)rr'Z
 174  seq_of_valuesrprrr
 175  �testExecuteManys"
 176  
 177  �
 178  ��zCommonDBTests.testExecuteManycCsH|��}|�|�|�dtj�|jdkrn|�|jd�|��dS)Nr�r�r�)r"r�r?rMrNr�rPrRr&rrr
 179  �testRowCount+s
 180  
 181  zCommonDBTests.testRowCountcCsX|��}|�|�|�dtj�|jdkrt|��d�n|�|jd�|�	�dS)Nz$DELETE FROM xx_%s WHERE fldData >= 5r�z/ Provider does not support rowcount (on DELETE)�)
 182  r"r�r?rMrNr�r�rrPrRr&rrr
 183  �testRowCountNoRecordset6s
 184  
 185  z%CommonDBTests.testRowCountNoRecordsetcCs||��}|�|�|�dtj�|�d�}t|�dksJ�|�d�}t|�dks+J�|�d�}t|�dks8J�|��dS)Nr�r��r+)r"r�r?rMrN�	fetchmanyr8rRr�rrr
 186  �
 187  testFetchMany@s
 188  
 189  
 190  
 191  zCommonDBTests.testFetchManycCs�|��}|�|�|�dtj�|��}t|�dksJ�d|_|��}t|�dks,J�|��}t|�dks8J�|��}t|�dksDJ�|��dS)Nr�r+r�r)	r"r�r?rMrNr�r8Z	arraysizerRr�rrr
 192  �testFetchManyWithArraySizeLs
 193  z(CommonDBTests.testFetchManyWithArraySizecCs(|��}|��|�tj|jdi�dS)Nznot a valid connect string)rr6rJr9r@�dbr:rrr
 194  �testErrorConnect[szCommonDBTests.testErrorConnectc
 195  	Cs:|��|��}|��}dtj}|�|�ddg}d}|D]�}|d7}z|�dtj||d|d|df�Wn|���|�dtj|g�|��}tt	|��D]}||||kslJd	||||f��qVt
 196  |�|ks~Jd
 197  |�d|�d���t
 198  |dd
 199  ��}	t
 200  |dd��}
 201  |	|
 202  ks�Jd
 203  |	�d|
 204  �d���|d|dks�J�|j|dks�J�|j|dks�J�q|�dtj�|�
 205  �}|dddks�J�|dddks�J�|dddks�J�|ddks�J�|ddks�J�|ddks�J�td�D]}td�D]}||||||fk�sJ��q�qdS)Nz�
 206              CREATE TABLE xx_%s (
 207                  fldId integer NOT NULL,
 208                  fldTwo integer,
 209                  fldThree integer,
 210                  fldFour integer)
 211                  )r4r�r�)�f�g�hr+zBINSERT INTO xx_%s (fldId,fldTwo,fldThree,fldFour) VALUES (?,?,?,?)rr4z7SELECT fldTwo,fldThree,fldFour FROM xx_%s WHERE ?=fldID�&returned value:"%s" != test value:"%s"zreturned value:"z" != test value:"�"r��fldTwoz)select fldThree,fldFour,fldTwo from xx_%sr�r��fldFourr�)rrr�)rr�)r+r4r�)rIrr!rMrNr?rer_rr8rfZfldThreer�rO)
 212  rr1r'rSrqrrrs�rec�jZslice1Zslice2Zrecsr�rrr
 213  �testRowIterator`sn��
 214  
 215  �����
 216  �"��zCommonDBTests.testRowIteratorcCsb|��|��}d|_|��}dtj}|�|�gd�}d}|D]G}|d7}dtjd}z
 217  |�|||f�Wn|���|�dtjd	|g�|��}|�	|d
 218  |d|d
 219  |f�|�	|dd�q!d
 220  tjd}	d}
 221  |�|	|
 222  �d|j
 223  vs�Jdd|j
 224  f��|j|	ks�Jd|	|jf��|�	|j|
 225  �|�dtj�|��}|�	|d
 226  d�dS)N�format��
 227              CREATE TABLE xx_%s (
 228                  fldId integer NOT NULL,
 229                  fldData varchar(10),
 230                  fldConst varchar(30))
 231                  ��one�two�threer4r+�INSERT INTO xx_zE (fldId,fldConst,fldData) VALUES (%s,'thi%s :may cause? trouble', %s)�!SELECT fldData, fldConst FROM xx_z WHERE %s=fldIDrr�zthi%s :may cause? troublezinsert into xx_z) (fldId,fldData) VALUES (%s,'four%sfive'))�z(?,zexpected:"%s" in "%s"zexpected:"%s" but found "%s"z(SELECT fldData FROM xx_%s WHERE fldID=20z
 232  four%sfive)
 233  rIr�
 234  paramstyler!rMrNr?rer_rP�queryr��
 235  parameters)rr1r'rSrqrrrs�sqlr��sel�paramsrrr
 236  �testFormatParamstyle�sZ��
 237  	������z"CommonDBTests.testFormatParamstylecC��|��|��}|��}d|_dtj}|�|�gd�}d}|D];}|d7}z|�dtj||d��Wn|���|�dtjd	|i�|��}|�	|d
 238  |d|d
 239  |f�q!|�dtjd
 240  di�|�dtj�|��}|�	|d
 241  d�dS)N�named�
 242              CREATE TABLE xx_%s (
 243                  fldId integer NOT NULL,
 244                  fldData varchar(10))
 245                  ��four�five�sixr�r+�5INSERT INTO xx_%s (fldId,fldData) VALUES (:Id,:f_Val)�Zf_Val�Idz)SELECT fldData FROM xx_%s WHERE fldID=:Idr�rr��:insert into xx_%s (fldId,fldData) VALUES (:xyz,'six:five')�xyz��(SELECT fldData FROM xx_%s WHERE fldID=30�six:five�
 246  rIrr!r�rMrNr?rer_rP�rr1r'rSrqrrrsr�rrr
 247  �testNamedParamstyle�sN��
 248  �����z!CommonDBTests.testNamedParamstylecCr�)NZpyformatr�r�r�r+z=INSERT INTO xx_%s (fldId,fldData) VALUES (%%(Id)s,%%(f_Val)s)r�z-SELECT fldData FROM xx_%s WHERE fldID=%%(Id)sr�rr�z?insert into xx_%s (fldId,fldData) VALUES (%%(xyz)s,'six%%five')r�r�r�zsix%fiver�r�rrr
 249  �testPyformatParamstylesT��
 250  ������z$CommonDBTests.testPyformatParamstylec
 251  Cs�|��|��}d|_|��}dtj}|�|�gd�}d}|D]G}|d7}z|�dtjd||f�Wn|���d}|�d	tjd
 252  |g�|��}|�	|d|d|d|f�|�	|d|�q!d
 253  }|D];}|d7}z|�dtj||d��Wn|���|�dtjd|i�|��}|�	|d|d|d|f�qmdtj}	|�
 254  |	�|�|	ddi�|�dtj�|��}|�	|dd�dS)NZdynamicr�r�r4r+r�zD (fldId,fldConst,fldData) VALUES (?,'thi%s :may cause? troub:1e', ?)zthi%s :may cause? troub:1er�z WHERE ?=fldIDrr�r�r�r�z)SELECT fldData FROM xx_%s WHERE :Id=fldIDr�r�r�r�r�r�)rIrr�r!rMrNr?rer_rPr�)
 255  rr1r'rSrqrrrsZtroubler�Zppdcmdrrr
 256  �testAutomaticParamstyle>s���
 257  	����������
 258  z%CommonDBTests.testAutomaticParamstylecCs�|��}|��}|jjrJd��|�|�|j��|�dtj�dtj}|�|�|�	�}t
 259  |�dks8J�|j��|�|�|�
 260  �dusLJd��|�dtj�|�	�}t
 261  |�dksbJd��|��dS)	NzUnexpected beginning condition�'INSERT INTO xx_%s (fldData) VALUES(100)�+SELECT fldData FROM xx_%s WHERE fldData=100r+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)rr!r-r�r�r7r?rMrNrOr8r1�rollbackr_rR)rr1r'�	selectSqlrprrr
 262  �testRollBack�s&
 263  
 264  
 265  
 266  
 267  
 268  �zCommonDBTests.testRollBackcCsz|��}Wn
 269  tyYdSw|jrJd��|��}|�|�|�dtj�|��dtj}|�|�|�	�}t
 270  |�dksCJ�|��|��|��}|�
 271  �}|���#}|�|�|�	�}t
 272  |�dksiJ�|dddkssJ�Wd�n1s}wY|��dS)Nzdefault should be manual commitr�r�r+r�d)�getAnotherConnectionrr�r!r�r?rMrNr7rOr8r6rr"rR)r�con2r'r�rpr1rrr
 273  �
 274  testCommit�s2�
 275  
 276  
 277  
 278  
 279  �zCommonDBTests.testCommitcCs�z|��}Wn
 280  tyYdSw|jrJd��|��}|�|�|�dtj�dtj}|�|�|��}t	|�dks?J�|�
 281  �|�
 282  �|��}z|�|�|��}Wnt
 283  jybd}Ynw|dusnJd|����|��dS)Nzunexpected beginning conditionr�r�r+zEcursor.fetchone should return None if a query retrieves no rows. Got )r�rr�r!r�r?rMrNrOr8r6r"r_r9r@rR)rr�r'r�rprUrrr
 284  �testAutoRollback�s8�
 285  
 286  
 287  ��
 288  �zCommonDBTests.testAutoRollbackcCs�z	|�ddi�}Wn
 289  tyYdSw|��}|�|�|�dtj�|��|��� }dtj}|�|�|�	�}t
 290  |�dksFJd��Wd�n1sPwY|��|��dS)Nr�Tr�r�r��#all records should still be present)r�rr!r�r?rMrNr6r"rOr8rR)r�ac_connr'r�rprrr
 291  �testAutoCommit�s&�
 292  
 293  
 294  ��zCommonDBTests.testAutoCommitcCs�z|��}Wn
 295  tyYdSwd|_|��}|�|�|�dtj�|��|�	�}|��|�
 296  �� }dtj}|�|�|��}t|�dksNJd��Wd�n1sXwY|�
 297  �dS)NTr�r�r�r�)r�rr�r!r�r?rMrNr6rr"rOr8rR)rr�r'r1r�rprrr
 298  �testSwitchedAutoCommit�s*�
 299  
 300  
 301  ��z$CommonDBTests.testSwitchedAutoCommitcCs&Gdd�dt�}Gdd�dt�}Gdd�dt�}|td��}|t�dd	��}|t���}|��|��}|��}d
 302  t	j
 303  }	|�|	�|�dt	j
 304  |||f�|��|��}|�
 305  ��+}dt	j
 306  }
 307  |�|
 308  �|��}|�|j|�|�|j|�|�|j|�Wd�n1s�wY|��dS)
 309  Nc@�eZdZdS)z;CommonDBTests.testExtendedTypeHandling.<locals>.XtendStringN�r%�
 310  __module__�__qualname__rrrr
 311  �XtendString��rc@r�)z8CommonDBTests.testExtendedTypeHandling.<locals>.XtendIntNr�rrrr
 312  �XtendIntrrc@r�)z:CommonDBTests.testExtendedTypeHandling.<locals>.XtendFloatNr�rrrr
 313  �
 314  XtendFloatrrr�i����i�z�
 315              CREATE TABLE xx_%s (
 316                  s VARCHAR(40) NOT NULL,
 317                  i INTEGER NOT NULL,
 318                  f REAL NOT NULL)z,INSERT INTO xx_%s (s, i, f) VALUES (?, ?, ?)zSELECT s, i, f from xx_%s)�strr�rkrr�randintrIrr!rMrNr?r6r"r_rPrtr�ZassertAlmostEqual�frR)rrrrZxs�xiZxfr1r'rSr�rUrrr
 319  �testExtendedTypeHandling�s<��
 320  �
 321  
 322  ��	z&CommonDBTests.testExtendedTypeHandling)NNN)0r%rr�__doc__rrrr"r(r3r;r=rArBrVrwr|r�r�r�r�r�r�r�rRrIr�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r
 323  rrrr
 324  r,sd	
 325  6
 326  �	
 327  
 328  
 329  
 330  
 331  C=.0Irc@sNeZdZdd�Zdd�Zdd�Zddd	�Zd
 332  d�Zdd
 333  �Zdd�Z	dd�Z
 334  dS)�TestADOwithSQLServercC�8tjtjditjd��|_d|j_d|_tj|_dS)Nrr+r�r~)rM�dbSqlServerconnect�connStrSQLServerr1�timeoutrr�rrrr
 335  r(���zTestADOwithSQLServer.setUpcC�:z|j��WnYz|j��WnYd|_dSr�r1r�r6rrrr
 336  �tearDown0�
 337  zTestADOwithSQLServer.tearDowncCrrrGrrrr
 338  r;rz"TestADOwithSQLServer.getConnectionNcC�2tjd��}|r|�|�tjtjdi|��S�Nr+r)rMrrL�updater�r�addkeys�keysrrr
 339  r�>�
 340  z)TestADOwithSQLServer.getAnotherConnectioncCs�|j��}d}z|�d�|j��WnY|�|�|�dd�}|ddks2J|d�d���|dd	ksAJ|d�d
 341  ���|ddksPJ|d�d
 342  ���|j��dS)Na
 343              CREATE PROCEDURE sp_DeleteMeOnlyForTesting
 344                  @theInput varchar(50),
 345                  @theOtherInput varchar(50),
 346                  @theOutput varchar(100) OUTPUT
 347              AS
 348                  SET @theOutput=@theInput+@theOtherInput
 349                      �(DROP PROCEDURE sp_DeleteMeOnlyForTesting�sp_DeleteMeOnlyForTesting)�	Dodsworth�Annez              rrz is not "Dodsworth"r+r z is not "Anne"r4Z
 350  DodsworthAnnez is not "DodsworthAnne")r1r!r?r7�callprocr�)rr'�spdef�	retvaluesrrr
 351  �$testVariableReturningStoredProcedureDs"
 352  
 353  
 354  ��z9TestADOwithSQLServer.testVariableReturningStoredProcedurecCs�|��}|�|�dtjtjtjf}z|�d�|j��WnY|�|�|�d�}|��}|�	|dd�|�
 355  �dksDJd��|��rLJd��|�
 356  �dksVJd��|��}|�	|ddd	�|�
 357  �dusnJd
 358  ��|��dS)Na
 359              CREATE PROCEDURE sp_DeleteMe_OnlyForTesting
 360              AS
 361                  SELECT fldData FROM xx_%s ORDER BY fldData ASC
 362                  SELECT fldData From xx_%s where fldData = -9999
 363                  SELECT fldData FROM xx_%s ORDER BY fldData DESC
 364                      z)DROP PROCEDURE sp_DeleteMe_OnlyForTestingZsp_DeleteMe_OnlyForTestingrTzOperation should succeedzShould be an empty second setzthird set should be present�z'No more return sets, should return None)
 365  r"r�rMrNr?r1r7r!r_rPZnextsetrOrR)rr'r"r#rUZrowdescrrr
 366  �testMultipleSetReturn_s0
 367  ��
 368  
 369  
 370  z*TestADOwithSQLServer.testMultipleSetReturncCs�|j��}d}z|�d�|j��WnY|�|�|�dt�dddddd�d	d
 371  g�}|ddks<Jd
 372  |d��|j��dS)Na1
 373              CREATE PROCEDURE sp_DeleteMeOnlyForTesting
 374                  @theInput DATETIME,
 375                  @theOtherInput varchar(50),
 376                  @theOutput varchar(100) OUTPUT
 377              AS
 378                  SET @theOutput = CONVERT(CHARACTER(20), @theInput, 0) + @theOtherInput
 379                      rri�r��rr+ZBeepz                              r4zDec 25 2014 12:01AM Beepzvalue was="%s")r1r!r?r7r!rhr�r��rr'r"�resultrrr
 380  �testDatetimeProcedureParameter�s
 381  
 382  
 383  �z3TestADOwithSQLServer.testDatetimeProcedureParametercCs�|j��}d}z|�d�|j��WnY|�|�t�tjtjf|j	dgdgd�i�}|drFdt
 384  |d�vsEd	t
 385  |�vsEJd
 386  ��n
 387  |dsPJ|d��|j��dS)Na.
 388              CREATE PROCEDURE sp_DeleteMeOnlyForTesting
 389                  @theInput DATETIME,
 390                  @theOtherInput varchar(50),
 391                  @theOutput varchar(100) OUTPUT
 392              AS
 393                  SET @theOutput = CONVERT(CHARACTER(20), @theInput) + @theOtherInput
 394                      rrr�)z
 395  this is wrongr z	not Alicerz	@theInputr+r@z(Identifies the wrong erroneous parameter)r1r!r?r7�
 396  tryconnectionZ%try_operation_with_expected_exceptionr9Z	DataErrorr@r!rr�r(rrr
 397  �%testIncorrectStoredProcedureParameter�s.
 398  
 399  
 400  
 401  
 402  ����z:TestADOwithSQLServer.testIncorrectStoredProcedureParameterr)r%rrrrrr�r$r&r*r,rrrr
 403  r's
 404  "rc@�6eZdZdd�Zdd�Zdd�Zddd	�Zd
 405  d�ZdS)
 406  �TestADOwithAccessDBcCr
 407  )Nrr+r�r�)rMZdbAccessconnect�
 408  connStrAccessr1rrr�rrrr
 409  r�rzTestADOwithAccessDB.setUpcCrrrrrrr
 410  r�rzTestADOwithAccessDB.tearDowncCrrrGrrrr
 411  r�rz!TestADOwithAccessDB.getConnectionNcCstd��)Nz2Jet cannot use a second connection to the databaser)rrrrr
 412  r��sz(TestADOwithAccessDB.getAnotherConnectioncCs4|jtjditjd��}|dusJ�|��dS�Nrr+)r�rMr/r6�r�crrr
 413  �
 414  testOkConnect�sz!TestADOwithAccessDB.testOkConnectr�r%rrrrrr�r3rrrr
 415  r.�s
 416  r.c@r-)
 417  �TestADOwithMySqlcCr
 418  )Nrr+r�r�)rM�dbMySqlconnect�connStrMySqlr1rrr�rrrr
 419  r�rzTestADOwithMySql.setUpcCrrrrrrr
 420  r�rzTestADOwithMySql.tearDowncCrrrGrrrr
 421  r�rzTestADOwithMySql.getConnectionNcCrr)rMr7rLrr6rrrr
 422  r��rz%TestADOwithMySql.getAnotherConnectioncC�,|jtjditjd��}|dusJ�dSr0)r�rMr7r1rrr
 423  r3��zTestADOwithMySql.testOkConnectrr4rrrr
 424  r5��
 425  r5c@r-)
 426  �TestADOwithPostgrescCr
 427  )Nrr+r�r�)rM�dbPostgresConnect�connStrPostgresr1rrr�rrrr
 428  rrzTestADOwithPostgres.setUpcCrrrrrrr
 429  r&rzTestADOwithPostgres.tearDowncCrrrGrrrr
 430  r1rz!TestADOwithPostgres.getConnectionNcCrr)rMr=rLrr<rrrr
 431  r�4rz(TestADOwithPostgres.getAnotherConnectioncCr8r0)r�rMr=r1rrr
 432  r3:r9z!TestADOwithPostgres.testOkConnectrr4rrrr
 433  r;r:r;c@sLeZdZdd�Zdd�Zdd�Zdd�Zd	d
 434  �Zdd�Zd
 435  d�Z	dd�Z
 436  dS)�TimeConverterInterfaceTestcC�|j�ddd�s
 437  J�dS)N��r4)�tcr�rrrr
 438  �	testIDate]rz$TimeConverterInterfaceTest.testIDatecCr?)N�
 439  r4)rA�Timerrrr
 440  �	testITime`rz$TimeConverterInterfaceTest.testITimecCs|j�dddddd�s
 441  J�dS)Nr@r4rCr+)rAr�rrrr
 442  �testITimestampcsz)TimeConverterInterfaceTest.testITimestampcCs|j�d�sJ�dS)N�?�mUxG�@)rA�DateObjectFromCOMDaterrrr
 443  �testIDateObjectFromCOMDatef�z5TimeConverterInterfaceTest.testIDateObjectFromCOMDatecCst|jd�sJ�dS)N�COMDate)�hasattrrArrrr
 444  �testICOMDateirJz'TimeConverterInterfaceTest.testICOMDatecCs4|j�ddd�}|j�|�}d}||ksJ|��dS)N��r�r�g���@)rAr�rK�r�dZcomDateZcorrectrrr
 445  �
 446  testExactDatelsz(TimeConverterInterfaceTest.testExactDatecCsh|j�dddddd�}|j�|�}d}|�||�|j�ddd	d
 447  dd�}|j�|�}d}|�||�dS)
 448  NrNr�r�r�rg���@��r����gS��sn�@)rAr�rKrPrOrrr
 449  �testExactTimestamprsz-TimeConverterInterfaceTest.testExactTimestampcCsr|j�dddddd�}|j�|�}|�t|dd��d�|j�d	d
 450  d�}|j�|�}|�t|dd��d�dS)
 451  NrNr�r�r�r�r��z1994-11-15 12:03:10rRr�r4z
 452  2003-05-02)rAr�rjrPrr�)rrPZisor�rrr
 453  �
 454  testIsoFormat}sz(TimeConverterInterfaceTest.testIsoFormatN)r%rrrBrErFrIrMrQrVrXrrrr
 455  r>\sr>c@�<eZdZdd�Zdd�Zdd�Zdd�Zd	d
 456  �Zdd�Zd
 457  S)�TestPythonTimeConvertercC�t��|_dSr)r9�pythonTimeConverterrArrrr
 458  r��zTestPythonTimeConverter.setUpcCs@t�d�}t�|�}|j�|�}t|d�dksJd|��dS)N)	r�rSr��r�r+r��r�rG�UUUUUU�?z%f more than an hour wrong)�time�mktime�	localtimerArKrl)r�mk�t�cmdrrr
 459  �testCOMDate�s
 460  
 461   z#TestPythonTimeConverter.testCOMDatecCsV|j�d�}t�t�d��}t�t�d��}||kr |ks)nJd|�d���dS)NrG)	r�rSr�rrTr+r�r_r�)	r�rS�r�rTr4r�r_r�r�z$" should be about 2002-6-28 12:15:01)rArHra�gmtimerb)rrf�t1�t2rrr
 462  �testDateObjectFromCOMDate�s��*z1TestPythonTimeConverter.testDateObjectFromCOMDatecCsRt�d�}t�d�}|j�ddd�}|t�|�kr"|ks'J|��J|��dS)N)	r�rSr�r^r�r+r��r)	r�rSr�r^r�r+r�r_rr�rSrh)rarbrAr��rrjrk�objrrr
 463  �testDate�s
 464  
 465  .z TestPythonTimeConverter.testDatecCs"|�|j�ddd�t�d��dS)Nr^r�r4i�)rPrArDrarirrrr
 466  �testTime�s�z TestPythonTimeConverter.testTimecCs^t�t�d��}t�t�d��}|j�dddddd�}||kr(|ks-J|��J|��dS)	N)	r�rSr�r^rTr+r�r_r�)	r�rSr�r^�r+r�r_r�r�rSr�r^r�r4)rarcrbrAr�rnrrr
 467  �
 468  testTimestamp�s��(z%TestPythonTimeConverter.testTimestampN�	r%rrrrgrlrprqrsrrrr
 469  rZ�srZc@rY)�TestPythonDateTimeConvertercCr[r)r9ZpythonDateTimeConverterrArrrr
 470  r�r]z!TestPythonDateTimeConverter.setUpcCs<t�dddddd�}|j�|�}t|d�dksJd	��dS)
 471  Nr�rSr�r^r�r+rGr`zmore than an hour wrong)r�rArKrl)rrerfrrr
 472  rg�sz'TestPythonDateTimeConverter.testCOMDatec	Cs�|j�d�}t�dddddd�}t�dddddd�}||kr'|ks,J|��J|��t�ddddddd	�}|j�|j�|��}||krN|ksSJ|��J|��dS)
 473  NrGr�rSr�r^rTr+rri��
 474  )rArHr�rK)rrfrjrkZtx�c1rrr
 475  rl�s$�(z5TestPythonDateTimeConverter.testDateObjectFromCOMDatecCsTt�ddd�}t�ddd�}|j�ddd�}||kr#|ks(J|��J|��dS)Nr�rSr�r�rh)r��daterAr�rnrrr
 476  rp�s(z$TestPythonDateTimeConverter.testDatecCs(|�|j�ddd���dd�d�dS)Nr^r�r4r%z18:15:02)rPrArD�	isoformatrrrr
 477  rq�s(z$TestPythonDateTimeConverter.testTimecCsft�dddddd�}t�dddddd�}|j�dddddd	�}||kr,|ks1J|��J|��dS)
 478  Nr�rSr�r^rTr+rrr�r4)r�rAr�rnrrr
 479  rs�s(z)TestPythonDateTimeConverter.testTimestampNrtrrrr
 480  ru�sru�testc@seZdZdd�Zdd�ZdS)�cleanup_managercCsdSrrrrrr
 481  �	__enter__�r zcleanup_manager.__enter__cCst�tjtj�dSr)rM�cleanupZ
 482  testfolderZmdb_name)r�exc_type�exc_val�exc_tbrrr
 483  �__exit__�rJzcleanup_manager.__exit__N)r%rrr{r�rrrr
 484  rz�srz�__main__zDefault Date Converter is %szChanged dateconverter to ).rrLr�rrrraZunittestZadodbapitestconfigrMr+rhZadodbapi.apibaseZapibaser9rZTestCaserrr.r5r;r>rZruZdefaultTestLoaderZloadTestsFromModuleZsuitesZ
 485  doTimeTest�appendZdoAccessTestZdoSqlServerTestZdoMySqlTestZdoPostgresTestrzZ	TestSuiteZsuiter%�deepcopyZmysuiteriZdefaultDateConverterr�ZTextTestRunner�runr\rrrr
 486  �<module>s� B?+,'������
 487  
 488  
 489  ��$��