Mercurial > p > mysql-python > mysqldb-2
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''' |