home *** CD-ROM | disk | FTP | other *** search
/ Maximum CD 2010 November / maximum-cd-2010-11.iso / DiscContents / calibre-0.7.13.msi / file_2582 (.txt) < prev    next >
Encoding:
Python Compiled Bytecode  |  2010-08-06  |  7.3 KB  |  181 lines

  1. # Source Generated with Decompyle++
  2. # File: in.pyc (Python 2.6)
  3.  
  4. import sys
  5. import os
  6. import unittest
  7. import odbc
  8. import dbi
  9. import tempfile
  10. from win32com.client.gencache import EnsureDispatch
  11. from win32com.client import constants
  12. import pythoncom
  13.  
  14. class TestStuff(unittest.TestCase):
  15.     
  16.     def setUp(self):
  17.         self.db_filename = None
  18.         self.conn = None
  19.         self.cur = None
  20.         
  21.         try:
  22.             conn_str = os.environ['TEST_ODBC_CONNECTION_STRING']
  23.         except KeyError:
  24.             self.db_filename = os.path.join(tempfile.gettempdir(), 'test_odbc.mdb')
  25.             if os.path.isfile(self.db_filename):
  26.                 os.unlink(self.db_filename)
  27.             
  28.             for suffix in ('.36', '.35', '.30'):
  29.                 
  30.                 try:
  31.                     dbe = EnsureDispatch('DAO.DBEngine' + suffix)
  32.                 continue
  33.                 except pythoncom.com_error:
  34.                     continue
  35.                 
  36.  
  37.             else:
  38.                 raise RuntimeError, "Can't find a DB engine"
  39.             workspace = (None<EXCEPTION MATCH>pythoncom.com_error).Workspaces(0)
  40.             newdb = workspace.CreateDatabase(self.db_filename, constants.dbLangGeneral, constants.dbEncrypt)
  41.             newdb.Close()
  42.             conn_str = 'Driver={Microsoft Access Driver (*.mdb)};dbq=%s;Uid=;Pwd=;' % (self.db_filename,)
  43.  
  44.         self.conn = odbc.odbc(conn_str)
  45.         self.cur = self.conn.cursor()
  46.         
  47.         try:
  48.             self.cur.execute('drop table pywin32test_users')
  49.         except (odbc.error, dbi.progError):
  50.             pass
  51.  
  52.         self.assertEqual(self.cur.execute('create table pywin32test_users (\n                    userid varchar(5),  username varchar(25),\n                    bitfield bit,       intfield integer,\n                    floatfield float,\n                    datefield date,\n                )'), -1)
  53.  
  54.     
  55.     def tearDown(self):
  56.         if self.cur is not None:
  57.             
  58.             try:
  59.                 self.cur.execute('drop table pywin32test_users')
  60.             except (odbc.error, dbi.progError):
  61.                 why = None
  62.                 print 'Failed to delete test table:', why
  63.  
  64.             self.cur.close()
  65.             self.cur = None
  66.         
  67.         if self.conn is not None:
  68.             self.conn.close()
  69.             self.conn = None
  70.         
  71.         if self.db_filename is not None:
  72.             os.unlink(self.db_filename)
  73.         
  74.  
  75.     
  76.     def test_insert_select(self, userid = 'Frank', username = 'Frank Millman'):
  77.         self.assertEqual(self.cur.execute('insert into pywin32test_users (userid, username)             values (?,?)', [
  78.             userid,
  79.             username]), 1)
  80.         self.assertEqual(self.cur.execute('select * from pywin32test_users             where userid = ?', [
  81.             userid.lower()]), 0)
  82.         self.assertEqual(self.cur.execute('select * from pywin32test_users             where username = ?', [
  83.             username.lower()]), 0)
  84.  
  85.     
  86.     def test_insert_select_large(self):
  87.         
  88.         try:
  89.             self.test_insert_select(userid = 'Frank' * 200, username = 'Frank Millman' * 200)
  90.         except dbi.noError:
  91.             pass
  92.  
  93.  
  94.     
  95.     def test_insert_select_unicode(self, userid = u'Frank', username = u'Frank Millman'):
  96.         self.assertEqual(self.cur.execute('insert into pywin32test_users (userid, username)            values (?,?)', [
  97.             userid,
  98.             username]), 1)
  99.         self.assertEqual(self.cur.execute('select * from pywin32test_users             where userid = ?', [
  100.             userid.lower()]), 0)
  101.         self.assertEqual(self.cur.execute('select * from pywin32test_users             where username = ?', [
  102.             username.lower()]), 0)
  103.  
  104.     
  105.     def test_insert_select_unicode_ext(self):
  106.         userid = unicode('t-\xe0\xf2', 'mbcs')
  107.         username = unicode('test-\xe0\xf2 name', 'mbcs')
  108.         self.test_insert_select_unicode(userid, username)
  109.  
  110.     
  111.     def _test_val(self, fieldName, value):
  112.         self.cur.execute("delete from pywin32test_users where userid='Frank'")
  113.         self.assertEqual(self.cur.execute('insert into pywin32test_users (userid, %s) values (?,?)' % fieldName, [
  114.             'Frank',
  115.             value]), 1)
  116.         self.cur.execute('select %s from pywin32test_users where userid = ?' % fieldName, [
  117.             'Frank'])
  118.         rows = self.cur.fetchmany()
  119.         self.failUnlessEqual(1, len(rows))
  120.         row = rows[0]
  121.         self.failUnlessEqual(row[0], value)
  122.  
  123.     
  124.     def testBit(self):
  125.         self._test_val('bitfield', 1)
  126.         self._test_val('bitfield', 0)
  127.  
  128.     
  129.     def testInt(self):
  130.         self._test_val('intfield', 1)
  131.         self._test_val('intfield', 0)
  132.         self._test_val('intfield', sys.maxint)
  133.  
  134.     
  135.     def testFloat(self):
  136.         self._test_val('floatfield', 1.01)
  137.         self._test_val('floatfield', 0)
  138.  
  139.     
  140.     def testVarchar(self):
  141.         self._test_val('username', 'foo')
  142.  
  143.     
  144.     def testDates(self):
  145.         import datetime
  146.         for v in ((1800, 12, 25, 23, 59),):
  147.             d = datetime.datetime(*v)
  148.             self._test_val('datefield', 'd')
  149.         
  150.  
  151.     
  152.     def test_set_nonzero_length(self):
  153.         self.assertEqual(self.cur.execute('insert into pywin32test_users (userid,username) values (?,?)', [
  154.             'Frank',
  155.             'Frank Millman']), 1)
  156.         self.assertEqual(self.cur.execute('update pywin32test_users set username = ?', [
  157.             'Frank']), 1)
  158.         self.assertEqual(self.cur.execute('select * from pywin32test_users'), 0)
  159.         self.assertEqual(len(self.cur.fetchone()[1]), 5)
  160.  
  161.     
  162.     def test_set_zero_length(self):
  163.         self.assertEqual(self.cur.execute('insert into pywin32test_users (userid,username) values (?,?)', [
  164.             'Frank',
  165.             '']), 1)
  166.         self.assertEqual(self.cur.execute('select * from pywin32test_users'), 0)
  167.         self.assertEqual(len(self.cur.fetchone()[1]), 0)
  168.  
  169.     
  170.     def test_set_zero_length_unicode(self):
  171.         self.assertEqual(self.cur.execute('insert into pywin32test_users (userid,username) values (?,?)', [
  172.             u'Frank',
  173.             u'']), 1)
  174.         self.assertEqual(self.cur.execute('select * from pywin32test_users'), 0)
  175.         self.assertEqual(len(self.cur.fetchone()[1]), 0)
  176.  
  177.  
  178. if __name__ == '__main__':
  179.     unittest.main()
  180.  
  181.