[pywin32-checkins] pywin32/adodbapi/tests adodbapitest.py,1.3,1.4
OLD project page for the Python extensions for Windows
Brought to you by:
mhammond
From: Vernon C. <kf...@us...> - 2008-09-05 18:50:00
|
Update of /cvsroot/pywin32/pywin32/adodbapi/tests In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv5601 Modified Files: adodbapitest.py Log Message: v.2.2.1 bugfix for earlier 2.1 bugfix. Do not truncate string values loaded into numeric columns Index: adodbapitest.py =================================================================== RCS file: /cvsroot/pywin32/pywin32/adodbapi/tests/adodbapitest.py,v retrieving revision 1.3 retrieving revision 1.4 diff -C2 -d -r1.3 -r1.4 *** adodbapitest.py 29 Aug 2008 14:32:44 -0000 1.3 --- adodbapitest.py 5 Sep 2008 18:49:48 -0000 1.4 *************** *** 35,39 **** import adodbapitestconfig ! #adodbapi.adodbapi.verbose = True import types --- 35,39 ---- import adodbapitestconfig ! #adodbapi.adodbapi.verbose = 3 import types *************** *** 163,169 **** fldId integer NOT NULL, fldData """ + sqlDataTypeString + ")\n" ! ## """ NULL ! ##) ! ##""" crsr.execute(tabdef) --- 163,167 ---- fldId integer NOT NULL, fldData """ + sqlDataTypeString + ")\n" ! crsr.execute(tabdef) *************** *** 181,193 **** if DBAPIDataTypeString=='STRING': ! assert descTuple[1] == adodbapi.STRING elif DBAPIDataTypeString == 'NUMBER': ! assert descTuple[1] == adodbapi.NUMBER elif DBAPIDataTypeString == 'BINARY': ! assert descTuple[1] == adodbapi.BINARY elif DBAPIDataTypeString == 'DATETIME': ! assert descTuple[1] == adodbapi.DATETIME elif DBAPIDataTypeString == 'ROWID': ! assert descTuple[1] == adodbapi.ROWID else: raise "DBAPIDataTypeString not provided" --- 179,191 ---- if DBAPIDataTypeString=='STRING': ! assert descTuple[1] == adodbapi.STRING, 'was "%s"'%descTuple[1] elif DBAPIDataTypeString == 'NUMBER': ! assert descTuple[1] == adodbapi.NUMBER, 'was "%s"'%descTuple[1] elif DBAPIDataTypeString == 'BINARY': ! assert descTuple[1] == adodbapi.BINARY, 'was "%s"'%descTuple[1] elif DBAPIDataTypeString == 'DATETIME': ! assert descTuple[1] == adodbapi.DATETIME, 'was "%s"'%descTuple[1] elif DBAPIDataTypeString == 'ROWID': ! assert descTuple[1] == adodbapi.ROWID, 'was "%s"'%descTuple[1] else: raise "DBAPIDataTypeString not provided" *************** *** 205,215 **** except: conn.printADOerrors() ! crsr.execute("SELECT fldData FROM tblTemp WHERE ?=fldID", [fldId]) rs=crsr.fetchone() if allowedReturnValues: ! self.assertEquals(type(rs[0]),type(allowedReturnValues[0]) ) else: ! self.assertEquals( type(rs[0]) ,type(pyData)) if compareAlmostEqual and DBAPIDataTypeString == 'DATETIME': --- 203,216 ---- except: conn.printADOerrors() ! raise crsr.execute("SELECT fldData FROM tblTemp WHERE ?=fldID", [fldId]) rs=crsr.fetchone() if allowedReturnValues: ! allowedTypes = tuple([type(aRV) for aRV in allowedReturnValues]) ! assert isinstance(rs[0],allowedTypes), \ ! 'result type "%s" must be one of %s'%(type(rs[0]),allowedTypes) else: ! assert isinstance(rs[0] ,type(pyData)), \ ! 'result type "%s" must be instance of %s'%(type(rs[0]),type(pyData)) if compareAlmostEqual and DBAPIDataTypeString == 'DATETIME': *************** *** 229,233 **** else: self.assertEquals(rs[0] , pyData) - self.helpRollbackTblTemp() --- 230,233 ---- *************** *** 236,248 **** self.helpTestDataType("float",'NUMBER',1.79e37,compareAlmostEqual=1) ! #v2.1 Cole -- use decimal for money if self.getEngine() != 'MySQL': self.helpTestDataType("smallmoney",'NUMBER',decimal.Decimal('214748.02')) self.helpTestDataType("money",'NUMBER',decimal.Decimal('-922337203685477.5808')) ! def testDataTypeInt(self): self.helpTestDataType("tinyint",'NUMBER',115) self.helpTestDataType("smallint",'NUMBER',-32768) ! self.helpTestDataType("int",'NUMBER',2147483647) if self.getEngine() != 'ACCESS': self.helpTestDataType("bit",'NUMBER',1) #Does not work correctly with access --- 236,249 ---- self.helpTestDataType("float",'NUMBER',1.79e37,compareAlmostEqual=1) ! def testDataTypeMoney(self): #v2.1 Cole -- use decimal for money if self.getEngine() != 'MySQL': self.helpTestDataType("smallmoney",'NUMBER',decimal.Decimal('214748.02')) self.helpTestDataType("money",'NUMBER',decimal.Decimal('-922337203685477.5808')) ! def testDataTypeInt(self): self.helpTestDataType("tinyint",'NUMBER',115) self.helpTestDataType("smallint",'NUMBER',-32768) ! self.helpTestDataType("int",'NUMBER',2147483647, ! pyDataInputAlternatives='2137483647') if self.getEngine() != 'ACCESS': self.helpTestDataType("bit",'NUMBER',1) #Does not work correctly with access *************** *** 393,402 **** crsr=conn.cursor() crsr.execute(tabdef) - for multiplier in (1,decimal.Decimal('2.5'),78,9999,99999,7007): crsr.execute("DELETE FROM tblTemp") correct = decimal.Decimal('12.50') * multiplier crsr.execute("INSERT INTO tblTemp(fldCurr) VALUES (?)",[correct]) - sql="SELECT fldCurr FROM tblTemp " try: --- 394,401 ---- *************** *** 404,413 **** except: conn.printADOerrors() - print sql fldcurr=crsr.fetchone()[0] self.assertEquals( fldcurr,correct) ! def testErrorConnect(self): ! self.assertRaises(adodbapi.DatabaseError,adodbapi.connect,'not a valid connect string') class TestADOwithSQLServer(CommonDBTests): --- 403,411 ---- except: conn.printADOerrors() fldcurr=crsr.fetchone()[0] self.assertEquals( fldcurr,correct) ! def testErrorConnect(self): ! self.assertRaises(adodbapi.DatabaseError,adodbapi.connect,'not a valid connect string') class TestADOwithSQLServer(CommonDBTests): *************** *** 431,449 **** def testSQLServerDataTypes(self): ! self.helpTestDataType("decimal(18,2)",'NUMBER',3.45, allowedReturnValues=[u'3.45',u'3,45']) ! self.helpTestDataType("numeric(18,2)",'NUMBER',3.45, allowedReturnValues=[u'3.45',u'3,45']) def testUserDefinedConversionForExactNumericTypes(self): ! # By default decimal and numbers are returned as strings. ! # (see testSQLServerDataTypes method) # Instead, make them return as floats ! oldconverter=adodbapi.variantConversions[adodbapi.adoExactNumericTypes] ! ! adodbapi.variantConversions[adodbapi.adoExactNumericTypes]=adodbapi.cvtFloat self.helpTestDataType("decimal(18,2)",'NUMBER',3.45,compareAlmostEqual=1) self.helpTestDataType("numeric(18,2)",'NUMBER',3.45,compareAlmostEqual=1) ! ! adodbapi.variantConversions[adodbapi.adoExactNumericTypes]=oldconverter #Restore ! def testVariableReturningStoredProcedure(self): --- 429,450 ---- def testSQLServerDataTypes(self): ! self.helpTestDataType("decimal(18,2)",'NUMBER',3.45, ! allowedReturnValues=[u'3.45',u'3,45',decimal.Decimal('3.45')]) ! self.helpTestDataType("numeric(18,2)",'NUMBER',3.45, ! allowedReturnValues=[u'3.45',u'3,45',decimal.Decimal('3.45')]) def testUserDefinedConversionForExactNumericTypes(self): ! # By default decimal and numbers are returned as decimals. # Instead, make them return as floats ! oldconverter=adodbapi.variantConversions[adodbapi.adNumeric] ! adodbapi.variantConversions[adodbapi.adNumeric]=adodbapi.cvtFloat self.helpTestDataType("decimal(18,2)",'NUMBER',3.45,compareAlmostEqual=1) self.helpTestDataType("numeric(18,2)",'NUMBER',3.45,compareAlmostEqual=1) ! # now strings ! adodbapi.variantConversions[adodbapi.adNumeric]=adodbapi.cvtString ! self.helpTestDataType("numeric(18,2)",'NUMBER','3.45') ! # now the way they were ! adodbapi.variantConversions[adodbapi.adNumeric]=oldconverter #Restore ! self.helpTestDataType("numeric(18,2)",'NUMBER',decimal.Decimal('3.45')) def testVariableReturningStoredProcedure(self): *************** *** 477,487 **** spdef= """ ! CREATE PROCEDURE sp_DeleteMeOnlyForTesting AS SELECT fldData FROM tblTemp ORDER BY fldData ASC SELECT fldData FROM tblTemp ORDER BY fldData DESC """ try: ! crsr.execute("DROP PROCEDURE sp_DeleteMeOnlyForTesting") self.conn.commit() except: #Make sure it is empty --- 478,489 ---- spdef= """ ! CREATE PROCEDURE sp_DeleteMe_OnlyForTesting AS SELECT fldData FROM tblTemp ORDER BY fldData ASC + SELECT fldData From tblTemp where fldData = -9999 SELECT fldData FROM tblTemp ORDER BY fldData DESC """ try: ! crsr.execute("DROP PROCEDURE sp_DeleteMe_OnlyForTesting") self.conn.commit() except: #Make sure it is empty *************** *** 489,500 **** crsr.execute(spdef) ! retvalues=crsr.callproc('sp_DeleteMeOnlyForTesting') row=crsr.fetchone() self.assertEquals(row[0], 0) ! assert crsr.nextset() rowdesc=crsr.fetchall() self.assertEquals(rowdesc[0][0],8) ! s=crsr.nextset() ! assert s== None,'No more return sets, should return None' self.helpRollbackTblTemp() --- 491,503 ---- crsr.execute(spdef) ! retvalues=crsr.callproc('sp_DeleteMe_OnlyForTesting') row=crsr.fetchone() self.assertEquals(row[0], 0) ! assert crsr.nextset() == True, 'Operation should succede' ! assert not crsr.fetchall(), 'Should be an empty second set' ! assert crsr.nextset() == True, 'third set should be present' rowdesc=crsr.fetchall() self.assertEquals(rowdesc[0][0],8) ! assert crsr.nextset() == None,'No more return sets, should return None' self.helpRollbackTblTemp() *************** *** 653,657 **** t1=time.gmtime(time.mktime((2002,6,28,12,14,01, 4,31+28+31+30+31+28,-1))) t2=time.gmtime(time.mktime((2002,6,28,12,16,01, 4,31+28+31+30+31+28,-1))) ! assert t1<cmd<t2,cmd def testDate(self): --- 656,660 ---- t1=time.gmtime(time.mktime((2002,6,28,12,14,01, 4,31+28+31+30+31+28,-1))) t2=time.gmtime(time.mktime((2002,6,28,12,16,01, 4,31+28+31+30+31+28,-1))) ! assert t1<cmd<t2,repr(cmd)+' should be about 2002-6-28 12:15:01' def testDate(self): |