[pywin32-checkins] pywin32/win32/test test_odbc.py, 1.7.2.1, 1.7.2.2
OLD project page for the Python extensions for Windows
Brought to you by:
mhammond
From: Roger U. <ru...@us...> - 2008-10-20 03:31:40
|
Update of /cvsroot/pywin32/pywin32/win32/test In directory ddv4jf1.ch3.sourceforge.com:/tmp/cvs-serv3749 Modified Files: Tag: py3k test_odbc.py Log Message: Add tests for widechar and binary fields larger than cursor data size Stress test by performing each insert/select 100 times Index: test_odbc.py =================================================================== RCS file: /cvsroot/pywin32/pywin32/win32/test/test_odbc.py,v retrieving revision 1.7.2.1 retrieving revision 1.7.2.2 diff -C2 -d -r1.7.2.1 -r1.7.2.2 *** test_odbc.py 17 Sep 2008 03:21:09 -0000 1.7.2.1 --- test_odbc.py 20 Oct 2008 03:31:32 -0000 1.7.2.2 *************** *** 13,16 **** --- 13,17 ---- class TestStuff(unittest.TestCase): def setUp(self): + self.tablename = "pywin32test_users" self.db_filename = None self.conn = self.cur = None *************** *** 20,26 **** except KeyError: # Create a local MSAccess DB for testing. ! self.db_filename = os.path.join(tempfile.gettempdir(), "test_odbc.mdb") ! if os.path.isfile(self.db_filename): ! os.unlink(self.db_filename) # Create a brand-new database - what is the story with these? --- 21,25 ---- except KeyError: # Create a local MSAccess DB for testing. ! self.db_filename = tempfile.NamedTemporaryFile().name + '.mdb' # Create a brand-new database - what is the story with these? *************** *** 44,57 **** conn_str = "Driver={Microsoft Access Driver (*.mdb)};dbq=%s;Uid=;Pwd=;" \ % (self.db_filename,) self.conn = odbc.odbc(conn_str) # And we expect a 'users' table for these tests. self.cur = self.conn.cursor() try: ! self.cur.execute("""drop table pywin32test_users""") except (odbc.error, odbc.progError): pass ! self.assertEqual(self.cur.execute( ! """create table pywin32test_users ( userid varchar(25), username varchar(25), --- 43,61 ---- conn_str = "Driver={Microsoft Access Driver (*.mdb)};dbq=%s;Uid=;Pwd=;" \ % (self.db_filename,) + ## print ('Connection string:', conn_str) self.conn = odbc.odbc(conn_str) # And we expect a 'users' table for these tests. self.cur = self.conn.cursor() + ## self.cur.setoutputsize(1000) try: ! self.cur.execute("""drop table %s""" %self.tablename) except (odbc.error, odbc.progError): pass ! ! ## This needs to be adjusted for sql server syntax for unicode fields ! ## - memo -> TEXT ! ## - varchar -> nvarchar self.assertEqual(self.cur.execute( ! """create table %s ( userid varchar(25), username varchar(25), *************** *** 59,72 **** intfield integer, floatfield float, ! datefield date, ! rawfield varbinary(100) ! )"""),-1) def tearDown(self): if self.cur is not None: try: ! self.cur.execute("""drop table pywin32test_users""") except (odbc.error, odbc.progError) as why: ! print ("Failed to delete test table:", why) self.cur.close() --- 63,78 ---- intfield integer, floatfield float, ! datefield datetime, ! rawfield varbinary(100), ! longtextfield memo, ! longbinaryfield image ! )""" %self.tablename),-1) def tearDown(self): if self.cur is not None: try: ! self.cur.execute("""drop table %s""" %self.tablename) except (odbc.error, odbc.progError) as why: ! print ("Failed to delete test table %s" %self.tablename, why) self.cur.close() *************** *** 76,104 **** self.conn = None if self.db_filename is not None: ! os.unlink(self.db_filename) def test_insert_select(self, userid='Frank', username='Frank Millman'): ! self.assertEqual(self.cur.execute("insert into pywin32test_users (userid, username) \ ! values (?,?)", [userid, username]),1) ! self.assertEqual(self.cur.execute("select * from pywin32test_users \ ! where userid = ?", [userid.lower()]),0) ! self.assertEqual(self.cur.execute("select * from pywin32test_users \ ! where username = ?", [username.lower()]),0) ! ! def test_insert_select_large(self): ! # hard-coded 256 limit in ODBC to trigger large value support ! # (but for now ignore a warning about the value being truncated) ! try: ! self.test_insert_select(userid='Frank' * 200, username='Frank Millman' * 200) ! except odbc.noError: ! pass def test_insert_select_unicode(self, userid='Frank', username="Frank Millman"): ! self.assertEqual(self.cur.execute("insert into pywin32test_users (userid, username)\ ! values (?,?)", [userid, username]),1) ! self.assertEqual(self.cur.execute("select * from pywin32test_users \ ! where userid = ?", [userid.lower()]),0) ! self.assertEqual(self.cur.execute("select * from pywin32test_users \ ! where username = ?", [username.lower()]),0) def test_insert_select_unicode_ext(self): --- 82,105 ---- self.conn = None if self.db_filename is not None: ! try: ! os.unlink(self.db_filename) ! except OSError: ! pass def test_insert_select(self, userid='Frank', username='Frank Millman'): ! self.assertEqual(self.cur.execute("insert into %s (userid, username) \ ! values (?,?)" %self.tablename, [userid, username]),1) ! self.assertEqual(self.cur.execute("select * from %s \ ! where userid = ?" %self.tablename, [userid.lower()]),0) ! self.assertEqual(self.cur.execute("select * from %s \ ! where username = ?" %self.tablename, [username.lower()]),0) def test_insert_select_unicode(self, userid='Frank', username="Frank Millman"): ! self.assertEqual(self.cur.execute("insert into %s (userid, username)\ ! values (?,?)" %self.tablename, [userid, username]),1) ! self.assertEqual(self.cur.execute("select * from %s \ ! where userid = ?" %self.tablename, [userid.lower()]),0) ! self.assertEqual(self.cur.execute("select * from %s \ ! where username = ?" %self.tablename, [username.lower()]),0) def test_insert_select_unicode_ext(self): *************** *** 108,121 **** def _test_val(self, fieldName, value): ! self.cur.execute("delete from pywin32test_users where userid='Frank'") ! self.assertEqual(self.cur.execute( ! "insert into pywin32test_users (userid, %s) values (?,?)" % fieldName, ! ["Frank", value]), 1) ! self.cur.execute("select %s from pywin32test_users where userid = ?" % fieldName, ! ["Frank"]) ! rows = self.cur.fetchmany() ! self.failUnlessEqual(1, len(rows)) ! row = rows[0] ! self.failUnlessEqual(row[0], value) def testBit(self): --- 109,123 ---- def _test_val(self, fieldName, value): ! for x in range(100): ! self.cur.execute("delete from %s where userid='Frank'" %self.tablename) ! self.assertEqual(self.cur.execute( ! "insert into %s (userid, %s) values (?,?)" % (self.tablename, fieldName), ! ["Frank", value]), 1) ! self.cur.execute("select %s from %s where userid = ?" % (fieldName, self.tablename), ! ["Frank"]) ! rows = self.cur.fetchmany() ! self.failUnlessEqual(1, len(rows)) ! row = rows[0] ! self.failUnlessEqual(row[0], value) def testBit(self): *************** *** 135,138 **** --- 137,148 ---- self._test_val('username', 'foo') + def testLongVarchar(self): + """ Test a long text field in excess of internal cursor data size (65536)""" + self._test_val('longtextfield', 'abc' * 70000) + + def testLongBinary(self): + """ Test a long raw field in excess of internal cursor data size (65536)""" + self._test_val('longbinaryfield', memoryview(b'\0\1\2' * 70000)) + def testRaw(self): ## Test binary data *************** *** 148,152 **** import datetime for v in ( ! (1800, 12, 25, 23, 59,), ): d = datetime.datetime(*v) --- 158,162 ---- import datetime for v in ( ! (1900, 12, 25, 23, 39, 59), ): d = datetime.datetime(*v) *************** *** 154,174 **** def test_set_nonzero_length(self): ! self.assertEqual(self.cur.execute("insert into pywin32test_users (userid,username) " ! "values (?,?)",['Frank', 'Frank Millman']),1) ! self.assertEqual(self.cur.execute("update pywin32test_users set username = ?", ['Frank']),1) ! self.assertEqual(self.cur.execute("select * from pywin32test_users"),0) self.assertEqual(len(self.cur.fetchone()[1]),5) def test_set_zero_length(self): ! self.assertEqual(self.cur.execute("insert into pywin32test_users (userid,username) " ! "values (?,?)",[b'Frank', '']),1) ! self.assertEqual(self.cur.execute("select * from pywin32test_users"),0) self.assertEqual(len(self.cur.fetchone()[1]),0) def test_set_zero_length_unicode(self): ! self.assertEqual(self.cur.execute("insert into pywin32test_users (userid,username) " ! "values (?,?)",['Frank', '']),1) ! self.assertEqual(self.cur.execute("select * from pywin32test_users"),0) self.assertEqual(len(self.cur.fetchone()[1]),0) --- 164,184 ---- def test_set_nonzero_length(self): ! self.assertEqual(self.cur.execute("insert into %s (userid,username) " ! "values (?,?)" %self.tablename, ['Frank', 'Frank Millman']),1) ! self.assertEqual(self.cur.execute("update %s set username = ?" %self.tablename, ['Frank']),1) ! self.assertEqual(self.cur.execute("select * from %s" %self.tablename), 0) self.assertEqual(len(self.cur.fetchone()[1]),5) def test_set_zero_length(self): ! self.assertEqual(self.cur.execute("insert into %s (userid,username) " ! "values (?,?)" %self.tablename, [b'Frank', '']),1) ! self.assertEqual(self.cur.execute("select * from %s" %self.tablename), 0) self.assertEqual(len(self.cur.fetchone()[1]),0) def test_set_zero_length_unicode(self): ! self.assertEqual(self.cur.execute("insert into %s (userid,username) " ! "values (?,?)" %self.tablename, ['Frank', '']),1) ! self.assertEqual(self.cur.execute("select * from %s" %self.tablename), 0) self.assertEqual(len(self.cur.fetchone()[1]),0) |