home *** CD-ROM | disk | FTP | other *** search
- # Source Generated with Decompyle++
- # File: in.pyc (Python 2.6)
-
- import os
- import unittest
- import sqlite3 as sqlite
-
- class CollationTests(unittest.TestCase):
-
- def setUp(self):
- pass
-
-
- def tearDown(self):
- pass
-
-
- def CheckCreateCollationNotCallable(self):
- con = sqlite.connect(':memory:')
-
- try:
- con.create_collation('X', 42)
- self.fail('should have raised a TypeError')
- except TypeError:
- e = None
- self.failUnlessEqual(e.args[0], 'parameter must be callable')
-
-
-
- def CheckCreateCollationNotAscii(self):
- con = sqlite.connect(':memory:')
-
- try:
- con.create_collation('coll\xe4', cmp)
- self.fail('should have raised a ProgrammingError')
- except sqlite.ProgrammingError:
- e = None
-
-
-
- def CheckCollationIsUsed(self):
- if sqlite.version_info < (3, 2, 1):
- return None
-
- def mycoll(x, y):
- return -cmp(x, y)
-
- con = sqlite.connect(':memory:')
- con.create_collation('mycoll', mycoll)
- sql = "\n select x from (\n select 'a' as x\n union\n select 'b' as x\n union\n select 'c' as x\n ) order by x collate mycoll\n "
- result = con.execute(sql).fetchall()
- if result[0][0] != 'c' and result[1][0] != 'b' or result[2][0] != 'a':
- self.fail('the expected order was not returned')
-
- con.create_collation('mycoll', None)
-
- try:
- result = con.execute(sql).fetchall()
- self.fail('should have raised an OperationalError')
- except sqlite.OperationalError:
- e = None
- self.failUnlessEqual(e.args[0].lower(), 'no such collation sequence: mycoll')
-
-
-
- def CheckCollationRegisterTwice(self):
- con = sqlite.connect(':memory:')
- con.create_collation('mycoll', cmp)
- con.create_collation('mycoll', (lambda x, y: -cmp(x, y)))
- result = con.execute("\n select x from (select 'a' as x union select 'b' as x) order by x collate mycoll\n ").fetchall()
- if result[0][0] != 'b' or result[1][0] != 'a':
- self.fail('wrong collation function is used')
-
-
-
- def CheckDeregisterCollation(self):
- con = sqlite.connect(':memory:')
- con.create_collation('mycoll', cmp)
- con.create_collation('mycoll', None)
-
- try:
- con.execute("select 'a' as x union select 'b' as x order by x collate mycoll")
- self.fail('should have raised an OperationalError')
- except sqlite.OperationalError:
- e = None
- if not e.args[0].startswith('no such collation sequence'):
- self.fail('wrong OperationalError raised')
-
- except:
- e.args[0].startswith('no such collation sequence')
-
-
-
-
- class ProgressTests(unittest.TestCase):
-
- def CheckProgressHandlerUsed(self):
- con = sqlite.connect(':memory:')
- progress_calls = []
-
- def progress():
- progress_calls.append(None)
- return 0
-
- con.set_progress_handler(progress, 1)
- con.execute('\n create table foo(a, b)\n ')
- self.failUnless(progress_calls)
-
-
- def CheckOpcodeCount(self):
- con = sqlite.connect(':memory:')
- progress_calls = []
-
- def progress():
- progress_calls.append(None)
- return 0
-
- con.set_progress_handler(progress, 1)
- curs = con.cursor()
- curs.execute('\n create table foo (a, b)\n ')
- first_count = len(progress_calls)
- progress_calls = []
- con.set_progress_handler(progress, 2)
- curs.execute('\n create table bar (a, b)\n ')
- second_count = len(progress_calls)
- self.failUnless(first_count > second_count)
-
-
- def CheckCancelOperation(self):
- con = sqlite.connect(':memory:')
- progress_calls = []
-
- def progress():
- progress_calls.append(None)
- return 1
-
- con.set_progress_handler(progress, 1)
- curs = con.cursor()
- self.assertRaises(sqlite.OperationalError, curs.execute, 'create table bar (a, b)')
-
-
- def CheckClearHandler(self):
- con = sqlite.connect(':memory:')
- action = 0
-
- def progress():
- action = 1
- return 0
-
- con.set_progress_handler(progress, 1)
- con.set_progress_handler(None, 1)
- con.execute('select 1 union select 2 union select 3').fetchall()
- self.failUnlessEqual(action, 0, 'progress handler was not cleared')
-
-
-
- def suite():
- collation_suite = unittest.makeSuite(CollationTests, 'Check')
- progress_suite = unittest.makeSuite(ProgressTests, 'Check')
- return unittest.TestSuite((collation_suite, progress_suite))
-
-
- def test():
- runner = unittest.TextTestRunner()
- runner.run(suite())
-
- if __name__ == '__main__':
- test()
-
-