comparison tests/test_MySQLdb_capabilities.py @ 18:d55bfb1a4701 MySQLdb

Tons of changes from major refactoring/cleanup. This is all really broken right now. In particular, all results are returned as strings.
author adustman
date Fri, 14 Mar 2008 23:06:29 +0000
parents
children 7fe4b0b37e8e
comparison
equal deleted inserted replaced
17:7c7a89123d65 18:d55bfb1a4701
1 #!/usr/bin/env python
2 import capabilities
3 import unittest
4 import MySQLdb
5 import warnings
6
7 warnings.filterwarnings('error')
8
9 class test_MySQLdb(capabilities.DatabaseTest):
10
11 db_module = MySQLdb
12 connect_args = ()
13 connect_kwargs = dict(db='test', read_default_file='~/.my.cnf',
14 charset='utf8', sql_mode="ANSI,STRICT_TRANS_TABLES,TRADITIONAL")
15 create_table_extra = "ENGINE=INNODB CHARACTER SET UTF8"
16 leak_test = False
17
18 def quote_identifier(self, ident):
19 return "`%s`" % ident
20
21 def test_TIME(self):
22 from datetime import timedelta
23 def generator(row,col):
24 return timedelta(0, row*8000)
25 self.check_data_integrity(
26 ('col1 TIME',),
27 generator)
28
29 def test_TINYINT(self):
30 # Number data
31 def generator(row,col):
32 v = (row*row) % 256
33 if v > 127:
34 v = v-256
35 return v
36 self.check_data_integrity(
37 ('col1 TINYINT',),
38 generator)
39
40 def test_stored_procedures(self):
41 db = self.connection
42 c = self.cursor
43 try:
44 self.create_table(('pos INT', 'tree CHAR(20)'))
45 c.executemany("INSERT INTO %s (pos,tree) VALUES (%%s,%%s)" % self.table,
46 list(enumerate('ash birch cedar larch pine'.split())))
47 db.commit()
48
49 c.execute("""
50 CREATE PROCEDURE test_sp(IN t VARCHAR(255))
51 BEGIN
52 SELECT pos FROM %s WHERE tree = t;
53 END
54 """ % self.table)
55 db.commit()
56
57 c.callproc('test_sp', ('larch',))
58 rows = c.fetchall()
59 self.assertEquals(len(rows), 1)
60 self.assertEquals(rows[0][0], 3)
61 c.nextset()
62 finally:
63 c.execute("DROP PROCEDURE IF EXISTS test_sp")
64 c.execute('drop table %s' % (self.table))
65
66 def test_small_CHAR(self):
67 # Character data
68 def generator(row,col):
69 i = (row*col+62)%256
70 if i == 62: return ''
71 if i == 63: return None
72 return chr(i)
73 self.check_data_integrity(
74 ('col1 char(1)','col2 char(1)'),
75 generator)
76
77 if __name__ == '__main__':
78 if test_MySQLdb.leak_test:
79 import gc
80 gc.enable()
81 gc.set_debug(gc.DEBUG_LEAK)
82 unittest.main()
83 print '''"Huh-huh, he said 'unit'." -- Butthead'''