annotate tests/dbapi20.py @ 54:6e31278d3433 MySQLdb

There's no good reason to delay imports when the module is (1) useless without it or (2) you do the same late import more than once.
author kylev
date Mon, 23 Feb 2009 23:52:44 +0000
parents d55bfb1a4701
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
18
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
1 #!/usr/bin/env python
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
2 ''' Python DB API 2.0 driver compliance unit test suite.
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
3
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
4 This software is Public Domain and may be used without restrictions.
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
5
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
6 "Now we have booze and barflies entering the discussion, plus rumours of
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
7 DBAs on drugs... and I won't tell you what flashes through my mind each
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
8 time I read the subject line with 'Anal Compliance' in it. All around
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
9 this is turning out to be a thoroughly unwholesome unit test."
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
10
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
11 -- Ian Bicking
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
12 '''
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
13
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
14 __rcs_id__ = '$Id$'
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
15 __version__ = '$Revision$'[11:-2]
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
16 __author__ = 'Stuart Bishop <[email protected]>'
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
17
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
18 import unittest
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
19 import time
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
20
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
21 # $Log$
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
22 # Revision 1.1.2.1 2006/02/25 03:44:32 adustman
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
23 # Generic DB-API unit test module
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
24 #
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
25 # Revision 1.10 2003/10/09 03:14:14 zenzen
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
26 # Add test for DB API 2.0 optional extension, where database exceptions
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
27 # are exposed as attributes on the Connection object.
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
28 #
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
29 # Revision 1.9 2003/08/13 01:16:36 zenzen
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
30 # Minor tweak from Stefan Fleiter
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
31 #
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
32 # Revision 1.8 2003/04/10 00:13:25 zenzen
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
33 # Changes, as per suggestions by M.-A. Lemburg
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
34 # - Add a table prefix, to ensure namespace collisions can always be avoided
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
35 #
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
36 # Revision 1.7 2003/02/26 23:33:37 zenzen
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
37 # Break out DDL into helper functions, as per request by David Rushby
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
38 #
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
39 # Revision 1.6 2003/02/21 03:04:33 zenzen
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
40 # Stuff from Henrik Ekelund:
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
41 # added test_None
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
42 # added test_nextset & hooks
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
43 #
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
44 # Revision 1.5 2003/02/17 22:08:43 zenzen
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
45 # Implement suggestions and code from Henrik Eklund - test that cursor.arraysize
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
46 # defaults to 1 & generic cursor.callproc test added
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
47 #
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
48 # Revision 1.4 2003/02/15 00:16:33 zenzen
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
49 # Changes, as per suggestions and bug reports by M.-A. Lemburg,
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
50 # Matthew T. Kromer, Federico Di Gregorio and Daniel Dittmar
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
51 # - Class renamed
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
52 # - Now a subclass of TestCase, to avoid requiring the driver stub
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
53 # to use multiple inheritance
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
54 # - Reversed the polarity of buggy test in test_description
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
55 # - Test exception heirarchy correctly
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
56 # - self.populate is now self._populate(), so if a driver stub
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
57 # overrides self.ddl1 this change propogates
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
58 # - VARCHAR columns now have a width, which will hopefully make the
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
59 # DDL even more portible (this will be reversed if it causes more problems)
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
60 # - cursor.rowcount being checked after various execute and fetchXXX methods
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
61 # - Check for fetchall and fetchmany returning empty lists after results
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
62 # are exhausted (already checking for empty lists if select retrieved
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
63 # nothing
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
64 # - Fix bugs in test_setoutputsize_basic and test_setinputsizes
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
65 #
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
66
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
67 class DatabaseAPI20Test(unittest.TestCase):
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
68 ''' Test a database self.driver for DB API 2.0 compatibility.
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
69 This implementation tests Gadfly, but the TestCase
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
70 is structured so that other self.drivers can subclass this
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
71 test case to ensure compiliance with the DB-API. It is
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
72 expected that this TestCase may be expanded in the future
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
73 if ambiguities or edge conditions are discovered.
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
74
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
75 The 'Optional Extensions' are not yet being tested.
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
76
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
77 self.drivers should subclass this test, overriding setUp, tearDown,
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
78 self.driver, connect_args and connect_kw_args. Class specification
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
79 should be as follows:
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
80
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
81 import dbapi20
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
82 class mytest(dbapi20.DatabaseAPI20Test):
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
83 [...]
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
84
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
85 Don't 'import DatabaseAPI20Test from dbapi20', or you will
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
86 confuse the unit tester - just 'import dbapi20'.
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
87 '''
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
88
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
89 # The self.driver module. This should be the module where the 'connect'
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
90 # method is to be found
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
91 driver = None
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
92 connect_args = () # List of arguments to pass to connect
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
93 connect_kw_args = {} # Keyword arguments for connect
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
94 table_prefix = 'dbapi20test_' # If you need to specify a prefix for tables
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
95
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
96 ddl1 = 'create table %sbooze (name varchar(20))' % table_prefix
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
97 ddl2 = 'create table %sbarflys (name varchar(20))' % table_prefix
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
98 xddl1 = 'drop table %sbooze' % table_prefix
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
99 xddl2 = 'drop table %sbarflys' % table_prefix
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
100
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
101 lowerfunc = 'lower' # Name of stored procedure to convert string->lowercase
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
102
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
103 # Some drivers may need to override these helpers, for example adding
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
104 # a 'commit' after the execute.
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
105 def executeDDL1(self,cursor):
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
106 cursor.execute(self.ddl1)
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
107
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
108 def executeDDL2(self,cursor):
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
109 cursor.execute(self.ddl2)
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
110
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
111 def setUp(self):
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
112 ''' self.drivers should override this method to perform required setup
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
113 if any is necessary, such as creating the database.
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
114 '''
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
115 pass
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
116
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
117 def tearDown(self):
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
118 ''' self.drivers should override this method to perform required cleanup
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
119 if any is necessary, such as deleting the test database.
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
120 The default drops the tables that may be created.
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
121 '''
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
122 con = self._connect()
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
123 try:
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
124 cur = con.cursor()
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
125 for ddl in (self.xddl1,self.xddl2):
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
126 try:
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
127 cur.execute(ddl)
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
128 con.commit()
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
129 except self.driver.Error:
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
130 # Assume table didn't exist. Other tests will check if
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
131 # execute is busted.
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
132 pass
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
133 finally:
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
134 con.close()
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
135
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
136 def _connect(self):
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
137 try:
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
138 return self.driver.connect(
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
139 *self.connect_args,**self.connect_kw_args
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
140 )
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
141 except AttributeError:
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
142 self.fail("No connect method found in self.driver module")
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
143
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
144 def test_connect(self):
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
145 con = self._connect()
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
146 con.close()
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
147
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
148 def test_apilevel(self):
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
149 try:
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
150 # Must exist
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
151 apilevel = self.driver.apilevel
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
152 # Must equal 2.0
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
153 self.assertEqual(apilevel,'2.0')
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
154 except AttributeError:
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
155 self.fail("Driver doesn't define apilevel")
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
156
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
157 def test_threadsafety(self):
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
158 try:
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
159 # Must exist
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
160 threadsafety = self.driver.threadsafety
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
161 # Must be a valid value
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
162 self.failUnless(threadsafety in (0,1,2,3))
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
163 except AttributeError:
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
164 self.fail("Driver doesn't define threadsafety")
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
165
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
166 def test_paramstyle(self):
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
167 try:
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
168 # Must exist
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
169 paramstyle = self.driver.paramstyle
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
170 # Must be a valid value
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
171 self.failUnless(paramstyle in (
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
172 'qmark','numeric','named','format','pyformat'
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
173 ))
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
174 except AttributeError:
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
175 self.fail("Driver doesn't define paramstyle")
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
176
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
177 def test_Exceptions(self):
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
178 # Make sure required exceptions exist, and are in the
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
179 # defined heirarchy.
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
180 self.failUnless(issubclass(self.driver.Warning,StandardError))
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
181 self.failUnless(issubclass(self.driver.Error,StandardError))
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
182 self.failUnless(
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
183 issubclass(self.driver.InterfaceError,self.driver.Error)
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
184 )
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
185 self.failUnless(
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
186 issubclass(self.driver.DatabaseError,self.driver.Error)
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
187 )
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
188 self.failUnless(
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
189 issubclass(self.driver.OperationalError,self.driver.Error)
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
190 )
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
191 self.failUnless(
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
192 issubclass(self.driver.IntegrityError,self.driver.Error)
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
193 )
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
194 self.failUnless(
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
195 issubclass(self.driver.InternalError,self.driver.Error)
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
196 )
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
197 self.failUnless(
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
198 issubclass(self.driver.ProgrammingError,self.driver.Error)
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
199 )
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
200 self.failUnless(
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
201 issubclass(self.driver.NotSupportedError,self.driver.Error)
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
202 )
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
203
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
204 def test_ExceptionsAsConnectionAttributes(self):
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
205 # OPTIONAL EXTENSION
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
206 # Test for the optional DB API 2.0 extension, where the exceptions
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
207 # are exposed as attributes on the Connection object
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
208 # I figure this optional extension will be implemented by any
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
209 # driver author who is using this test suite, so it is enabled
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
210 # by default.
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
211 con = self._connect()
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
212 drv = self.driver
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
213 self.failUnless(con.Warning is drv.Warning)
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
214 self.failUnless(con.Error is drv.Error)
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
215 self.failUnless(con.InterfaceError is drv.InterfaceError)
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
216 self.failUnless(con.DatabaseError is drv.DatabaseError)
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
217 self.failUnless(con.OperationalError is drv.OperationalError)
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
218 self.failUnless(con.IntegrityError is drv.IntegrityError)
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
219 self.failUnless(con.InternalError is drv.InternalError)
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
220 self.failUnless(con.ProgrammingError is drv.ProgrammingError)
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
221 self.failUnless(con.NotSupportedError is drv.NotSupportedError)
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
222
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
223
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
224 def test_commit(self):
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
225 con = self._connect()
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
226 try:
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
227 # Commit must work, even if it doesn't do anything
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
228 con.commit()
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
229 finally:
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
230 con.close()
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
231
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
232 def test_rollback(self):
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
233 con = self._connect()
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
234 # If rollback is defined, it should either work or throw
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
235 # the documented exception
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
236 if hasattr(con,'rollback'):
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
237 try:
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
238 con.rollback()
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
239 except self.driver.NotSupportedError:
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
240 pass
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
241
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
242 def test_cursor(self):
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
243 con = self._connect()
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
244 try:
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
245 cur = con.cursor()
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
246 finally:
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
247 con.close()
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
248
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
249 def test_cursor_isolation(self):
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
250 con = self._connect()
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
251 try:
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
252 # Make sure cursors created from the same connection have
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
253 # the documented transaction isolation level
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
254 cur1 = con.cursor()
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
255 cur2 = con.cursor()
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
256 self.executeDDL1(cur1)
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
257 cur1.execute("insert into %sbooze values ('Victoria Bitter')" % (
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
258 self.table_prefix
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
259 ))
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
260 cur2.execute("select name from %sbooze" % self.table_prefix)
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
261 booze = cur2.fetchall()
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
262 self.assertEqual(len(booze),1)
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
263 self.assertEqual(len(booze[0]),1)
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
264 self.assertEqual(booze[0][0],'Victoria Bitter')
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
265 finally:
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
266 con.close()
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
267
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
268 def test_description(self):
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
269 con = self._connect()
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
270 try:
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
271 cur = con.cursor()
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
272 self.executeDDL1(cur)
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
273 self.assertEqual(cur.description,None,
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
274 'cursor.description should be none after executing a '
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
275 'statement that can return no rows (such as DDL)'
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
276 )
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
277 cur.execute('select name from %sbooze' % self.table_prefix)
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
278 self.assertEqual(len(cur.description),1,
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
279 'cursor.description describes too many columns'
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
280 )
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
281 self.assertEqual(len(cur.description[0]),7,
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
282 'cursor.description[x] tuples must have 7 elements'
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
283 )
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
284 self.assertEqual(cur.description[0][0].lower(),'name',
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
285 'cursor.description[x][0] must return column name'
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
286 )
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
287 self.assertEqual(cur.description[0][1],self.driver.STRING,
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
288 'cursor.description[x][1] must return column type. Got %r'
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
289 % cur.description[0][1]
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
290 )
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
291
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
292 # Make sure self.description gets reset
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
293 self.executeDDL2(cur)
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
294 self.assertEqual(cur.description,None,
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
295 'cursor.description not being set to None when executing '
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
296 'no-result statements (eg. DDL)'
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
297 )
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
298 finally:
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
299 con.close()
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
300
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
301 def test_rowcount(self):
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
302 con = self._connect()
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
303 try:
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
304 cur = con.cursor()
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
305 self.executeDDL1(cur)
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
306 self.assertEqual(cur.rowcount,-1,
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
307 'cursor.rowcount should be -1 after executing no-result '
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
308 'statements'
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
309 )
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
310 cur.execute("insert into %sbooze values ('Victoria Bitter')" % (
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
311 self.table_prefix
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
312 ))
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
313 self.failUnless(cur.rowcount in (-1,1),
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
314 'cursor.rowcount should == number or rows inserted, or '
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
315 'set to -1 after executing an insert statement'
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
316 )
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
317 cur.execute("select name from %sbooze" % self.table_prefix)
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
318 self.failUnless(cur.rowcount in (-1,1),
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
319 'cursor.rowcount should == number of rows returned, or '
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
320 'set to -1 after executing a select statement'
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
321 )
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
322 self.executeDDL2(cur)
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
323 self.assertEqual(cur.rowcount,-1,
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
324 'cursor.rowcount not being reset to -1 after executing '
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
325 'no-result statements'
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
326 )
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
327 finally:
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
328 con.close()
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
329
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
330 lower_func = 'lower'
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
331 def test_callproc(self):
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
332 con = self._connect()
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
333 try:
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
334 cur = con.cursor()
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
335 if self.lower_func and hasattr(cur,'callproc'):
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
336 r = cur.callproc(self.lower_func,('FOO',))
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
337 self.assertEqual(len(r),1)
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
338 self.assertEqual(r[0],'FOO')
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
339 r = cur.fetchall()
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
340 self.assertEqual(len(r),1,'callproc produced no result set')
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
341 self.assertEqual(len(r[0]),1,
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
342 'callproc produced invalid result set'
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
343 )
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
344 self.assertEqual(r[0][0],'foo',
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
345 'callproc produced invalid results'
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
346 )
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
347 finally:
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
348 con.close()
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
349
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
350 def test_close(self):
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
351 con = self._connect()
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
352 try:
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
353 cur = con.cursor()
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
354 finally:
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
355 con.close()
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
356
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
357 # cursor.execute should raise an Error if called after connection
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
358 # closed
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
359 self.assertRaises(self.driver.Error,self.executeDDL1,cur)
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
360
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
361 # connection.commit should raise an Error if called after connection'
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
362 # closed.'
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
363 self.assertRaises(self.driver.Error,con.commit)
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
364
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
365 # connection.close should raise an Error if called more than once
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
366 self.assertRaises(self.driver.Error,con.close)
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
367
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
368 def test_execute(self):
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
369 con = self._connect()
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
370 try:
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
371 cur = con.cursor()
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
372 self._paraminsert(cur)
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
373 finally:
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
374 con.close()
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
375
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
376 def _paraminsert(self,cur):
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
377 self.executeDDL1(cur)
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
378 cur.execute("insert into %sbooze values ('Victoria Bitter')" % (
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
379 self.table_prefix
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
380 ))
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
381 self.failUnless(cur.rowcount in (-1,1))
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
382
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
383 if self.driver.paramstyle == 'qmark':
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
384 cur.execute(
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
385 'insert into %sbooze values (?)' % self.table_prefix,
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
386 ("Cooper's",)
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
387 )
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
388 elif self.driver.paramstyle == 'numeric':
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
389 cur.execute(
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
390 'insert into %sbooze values (:1)' % self.table_prefix,
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
391 ("Cooper's",)
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
392 )
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
393 elif self.driver.paramstyle == 'named':
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
394 cur.execute(
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
395 'insert into %sbooze values (:beer)' % self.table_prefix,
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
396 {'beer':"Cooper's"}
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
397 )
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
398 elif self.driver.paramstyle == 'format':
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
399 cur.execute(
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
400 'insert into %sbooze values (%%s)' % self.table_prefix,
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
401 ("Cooper's",)
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
402 )
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
403 elif self.driver.paramstyle == 'pyformat':
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
404 cur.execute(
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
405 'insert into %sbooze values (%%(beer)s)' % self.table_prefix,
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
406 {'beer':"Cooper's"}
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
407 )
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
408 else:
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
409 self.fail('Invalid paramstyle')
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
410 self.failUnless(cur.rowcount in (-1,1))
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
411
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
412 cur.execute('select name from %sbooze' % self.table_prefix)
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
413 res = cur.fetchall()
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
414 self.assertEqual(len(res),2,'cursor.fetchall returned too few rows')
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
415 beers = [res[0][0],res[1][0]]
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
416 beers.sort()
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
417 self.assertEqual(beers[0],"Cooper's",
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
418 'cursor.fetchall retrieved incorrect data, or data inserted '
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
419 'incorrectly'
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
420 )
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
421 self.assertEqual(beers[1],"Victoria Bitter",
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
422 'cursor.fetchall retrieved incorrect data, or data inserted '
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
423 'incorrectly'
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
424 )
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
425
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
426 def test_executemany(self):
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
427 con = self._connect()
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
428 try:
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
429 cur = con.cursor()
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
430 self.executeDDL1(cur)
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
431 largs = [ ("Cooper's",) , ("Boag's",) ]
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
432 margs = [ {'beer': "Cooper's"}, {'beer': "Boag's"} ]
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
433 if self.driver.paramstyle == 'qmark':
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
434 cur.executemany(
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
435 'insert into %sbooze values (?)' % self.table_prefix,
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
436 largs
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
437 )
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
438 elif self.driver.paramstyle == 'numeric':
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
439 cur.executemany(
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
440 'insert into %sbooze values (:1)' % self.table_prefix,
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
441 largs
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
442 )
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
443 elif self.driver.paramstyle == 'named':
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
444 cur.executemany(
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
445 'insert into %sbooze values (:beer)' % self.table_prefix,
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
446 margs
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
447 )
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
448 elif self.driver.paramstyle == 'format':
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
449 cur.executemany(
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
450 'insert into %sbooze values (%%s)' % self.table_prefix,
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
451 largs
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
452 )
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
453 elif self.driver.paramstyle == 'pyformat':
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
454 cur.executemany(
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
455 'insert into %sbooze values (%%(beer)s)' % (
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
456 self.table_prefix
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
457 ),
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
458 margs
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
459 )
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
460 else:
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
461 self.fail('Unknown paramstyle')
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
462 self.failUnless(cur.rowcount in (-1,2),
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
463 'insert using cursor.executemany set cursor.rowcount to '
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
464 'incorrect value %r' % cur.rowcount
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
465 )
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
466 cur.execute('select name from %sbooze' % self.table_prefix)
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
467 res = cur.fetchall()
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
468 self.assertEqual(len(res),2,
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
469 'cursor.fetchall retrieved incorrect number of rows'
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
470 )
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
471 beers = [res[0][0],res[1][0]]
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
472 beers.sort()
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
473 self.assertEqual(beers[0],"Boag's",'incorrect data retrieved')
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
474 self.assertEqual(beers[1],"Cooper's",'incorrect data retrieved')
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
475 finally:
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
476 con.close()
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
477
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
478 def test_fetchone(self):
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
479 con = self._connect()
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
480 try:
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
481 cur = con.cursor()
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
482
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
483 # cursor.fetchone should raise an Error if called before
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
484 # executing a select-type query
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
485 self.assertRaises(self.driver.Error,cur.fetchone)
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
486
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
487 # cursor.fetchone should raise an Error if called after
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
488 # executing a query that cannnot return rows
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
489 self.executeDDL1(cur)
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
490 self.assertRaises(self.driver.Error,cur.fetchone)
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
491
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
492 cur.execute('select name from %sbooze' % self.table_prefix)
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
493 self.assertEqual(cur.fetchone(),None,
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
494 'cursor.fetchone should return None if a query retrieves '
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
495 'no rows'
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
496 )
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
497 self.failUnless(cur.rowcount in (-1,0))
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
498
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
499 # cursor.fetchone should raise an Error if called after
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
500 # executing a query that cannnot return rows
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
501 cur.execute("insert into %sbooze values ('Victoria Bitter')" % (
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
502 self.table_prefix
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
503 ))
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
504 self.assertRaises(self.driver.Error,cur.fetchone)
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
505
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
506 cur.execute('select name from %sbooze' % self.table_prefix)
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
507 r = cur.fetchone()
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
508 self.assertEqual(len(r),1,
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
509 'cursor.fetchone should have retrieved a single row'
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
510 )
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
511 self.assertEqual(r[0],'Victoria Bitter',
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
512 'cursor.fetchone retrieved incorrect data'
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
513 )
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
514 self.assertEqual(cur.fetchone(),None,
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
515 'cursor.fetchone should return None if no more rows available'
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
516 )
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
517 self.failUnless(cur.rowcount in (-1,1))
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
518 finally:
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
519 con.close()
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
520
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
521 samples = [
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
522 'Carlton Cold',
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
523 'Carlton Draft',
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
524 'Mountain Goat',
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
525 'Redback',
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
526 'Victoria Bitter',
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
527 'XXXX'
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
528 ]
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
529
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
530 def _populate(self):
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
531 ''' Return a list of sql commands to setup the DB for the fetch
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
532 tests.
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
533 '''
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
534 populate = [
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
535 "insert into %sbooze values ('%s')" % (self.table_prefix,s)
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
536 for s in self.samples
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
537 ]
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
538 return populate
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
539
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
540 def test_fetchmany(self):
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
541 con = self._connect()
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
542 try:
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
543 cur = con.cursor()
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
544
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
545 # cursor.fetchmany should raise an Error if called without
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
546 #issuing a query
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
547 self.assertRaises(self.driver.Error,cur.fetchmany,4)
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
548
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
549 self.executeDDL1(cur)
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
550 for sql in self._populate():
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
551 cur.execute(sql)
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
552
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
553 cur.execute('select name from %sbooze' % self.table_prefix)
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
554 r = cur.fetchmany()
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
555 self.assertEqual(len(r),1,
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
556 'cursor.fetchmany retrieved incorrect number of rows, '
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
557 'default of arraysize is one.'
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
558 )
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
559 cur.arraysize=10
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
560 r = cur.fetchmany(3) # Should get 3 rows
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
561 self.assertEqual(len(r),3,
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
562 'cursor.fetchmany retrieved incorrect number of rows'
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
563 )
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
564 r = cur.fetchmany(4) # Should get 2 more
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
565 self.assertEqual(len(r),2,
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
566 'cursor.fetchmany retrieved incorrect number of rows'
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
567 )
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
568 r = cur.fetchmany(4) # Should be an empty sequence
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
569 self.assertEqual(len(r),0,
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
570 'cursor.fetchmany should return an empty sequence after '
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
571 'results are exhausted'
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
572 )
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
573 self.failUnless(cur.rowcount in (-1,6))
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
574
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
575 # Same as above, using cursor.arraysize
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
576 cur.arraysize=4
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
577 cur.execute('select name from %sbooze' % self.table_prefix)
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
578 r = cur.fetchmany() # Should get 4 rows
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
579 self.assertEqual(len(r),4,
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
580 'cursor.arraysize not being honoured by fetchmany'
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
581 )
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
582 r = cur.fetchmany() # Should get 2 more
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
583 self.assertEqual(len(r),2)
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
584 r = cur.fetchmany() # Should be an empty sequence
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
585 self.assertEqual(len(r),0)
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
586 self.failUnless(cur.rowcount in (-1,6))
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
587
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
588 cur.arraysize=6
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
589 cur.execute('select name from %sbooze' % self.table_prefix)
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
590 rows = cur.fetchmany() # Should get all rows
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
591 self.failUnless(cur.rowcount in (-1,6))
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
592 self.assertEqual(len(rows),6)
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
593 self.assertEqual(len(rows),6)
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
594 rows = [r[0] for r in rows]
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
595 rows.sort()
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
596
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
597 # Make sure we get the right data back out
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
598 for i in range(0,6):
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
599 self.assertEqual(rows[i],self.samples[i],
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
600 'incorrect data retrieved by cursor.fetchmany'
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
601 )
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
602
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
603 rows = cur.fetchmany() # Should return an empty list
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
604 self.assertEqual(len(rows),0,
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
605 'cursor.fetchmany should return an empty sequence if '
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
606 'called after the whole result set has been fetched'
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
607 )
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
608 self.failUnless(cur.rowcount in (-1,6))
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
609
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
610 self.executeDDL2(cur)
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
611 cur.execute('select name from %sbarflys' % self.table_prefix)
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
612 r = cur.fetchmany() # Should get empty sequence
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
613 self.assertEqual(len(r),0,
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
614 'cursor.fetchmany should return an empty sequence if '
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
615 'query retrieved no rows'
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
616 )
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
617 self.failUnless(cur.rowcount in (-1,0))
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
618
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
619 finally:
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
620 con.close()
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
621
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
622 def test_fetchall(self):
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
623 con = self._connect()
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
624 try:
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
625 cur = con.cursor()
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
626 # cursor.fetchall should raise an Error if called
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
627 # without executing a query that may return rows (such
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
628 # as a select)
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
629 self.assertRaises(self.driver.Error, cur.fetchall)
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
630
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
631 self.executeDDL1(cur)
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
632 for sql in self._populate():
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
633 cur.execute(sql)
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
634
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
635 # cursor.fetchall should raise an Error if called
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
636 # after executing a a statement that cannot return rows
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
637 self.assertRaises(self.driver.Error,cur.fetchall)
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
638
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
639 cur.execute('select name from %sbooze' % self.table_prefix)
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
640 rows = cur.fetchall()
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
641 self.failUnless(cur.rowcount in (-1,len(self.samples)))
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
642 self.assertEqual(len(rows),len(self.samples),
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
643 'cursor.fetchall did not retrieve all rows'
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
644 )
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
645 rows = [r[0] for r in rows]
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
646 rows.sort()
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
647 for i in range(0,len(self.samples)):
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
648 self.assertEqual(rows[i],self.samples[i],
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
649 'cursor.fetchall retrieved incorrect rows'
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
650 )
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
651 rows = cur.fetchall()
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
652 self.assertEqual(
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
653 len(rows),0,
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
654 'cursor.fetchall should return an empty list if called '
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
655 'after the whole result set has been fetched'
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
656 )
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
657 self.failUnless(cur.rowcount in (-1,len(self.samples)))
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
658
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
659 self.executeDDL2(cur)
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
660 cur.execute('select name from %sbarflys' % self.table_prefix)
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
661 rows = cur.fetchall()
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
662 self.failUnless(cur.rowcount in (-1,0))
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
663 self.assertEqual(len(rows),0,
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
664 'cursor.fetchall should return an empty list if '
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
665 'a select query returns no rows'
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
666 )
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
667
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
668 finally:
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
669 con.close()
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
670
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
671 def test_mixedfetch(self):
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
672 con = self._connect()
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
673 try:
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
674 cur = con.cursor()
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
675 self.executeDDL1(cur)
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
676 for sql in self._populate():
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
677 cur.execute(sql)
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
678
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
679 cur.execute('select name from %sbooze' % self.table_prefix)
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
680 rows1 = cur.fetchone()
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
681 rows23 = cur.fetchmany(2)
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
682 rows4 = cur.fetchone()
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
683 rows56 = cur.fetchall()
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
684 self.failUnless(cur.rowcount in (-1,6))
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
685 self.assertEqual(len(rows23),2,
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
686 'fetchmany returned incorrect number of rows'
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
687 )
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
688 self.assertEqual(len(rows56),2,
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
689 'fetchall returned incorrect number of rows'
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
690 )
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
691
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
692 rows = [rows1[0]]
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
693 rows.extend([rows23[0][0],rows23[1][0]])
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
694 rows.append(rows4[0])
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
695 rows.extend([rows56[0][0],rows56[1][0]])
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
696 rows.sort()
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
697 for i in range(0,len(self.samples)):
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
698 self.assertEqual(rows[i],self.samples[i],
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
699 'incorrect data retrieved or inserted'
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
700 )
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
701 finally:
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
702 con.close()
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
703
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
704 def help_nextset_setUp(self,cur):
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
705 ''' Should create a procedure called deleteme
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
706 that returns two result sets, first the
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
707 number of rows in booze then "name from booze"
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
708 '''
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
709 raise NotImplementedError,'Helper not implemented'
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
710 #sql="""
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
711 # create procedure deleteme as
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
712 # begin
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
713 # select count(*) from booze
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
714 # select name from booze
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
715 # end
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
716 #"""
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
717 #cur.execute(sql)
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
718
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
719 def help_nextset_tearDown(self,cur):
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
720 'If cleaning up is needed after nextSetTest'
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
721 raise NotImplementedError,'Helper not implemented'
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
722 #cur.execute("drop procedure deleteme")
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
723
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
724 def test_nextset(self):
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
725 con = self._connect()
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
726 try:
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
727 cur = con.cursor()
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
728 if not hasattr(cur,'nextset'):
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
729 return
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
730
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
731 try:
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
732 self.executeDDL1(cur)
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
733 sql=self._populate()
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
734 for sql in self._populate():
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
735 cur.execute(sql)
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
736
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
737 self.help_nextset_setUp(cur)
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
738
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
739 cur.callproc('deleteme')
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
740 numberofrows=cur.fetchone()
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
741 assert numberofrows[0]== len(self.samples)
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
742 assert cur.nextset()
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
743 names=cur.fetchall()
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
744 assert len(names) == len(self.samples)
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
745 s=cur.nextset()
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
746 assert s == None,'No more return sets, should return None'
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
747 finally:
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
748 self.help_nextset_tearDown(cur)
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
749
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
750 finally:
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
751 con.close()
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
752
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
753 def test_nextset(self):
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
754 raise NotImplementedError,'Drivers need to override this test'
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
755
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
756 def test_arraysize(self):
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
757 # Not much here - rest of the tests for this are in test_fetchmany
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
758 con = self._connect()
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
759 try:
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
760 cur = con.cursor()
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
761 self.failUnless(hasattr(cur,'arraysize'),
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
762 'cursor.arraysize must be defined'
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
763 )
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
764 finally:
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
765 con.close()
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
766
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
767 def test_setinputsizes(self):
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
768 con = self._connect()
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
769 try:
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
770 cur = con.cursor()
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
771 cur.setinputsizes( (25,) )
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
772 self._paraminsert(cur) # Make sure cursor still works
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
773 finally:
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
774 con.close()
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
775
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
776 def test_setoutputsize_basic(self):
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
777 # Basic test is to make sure setoutputsize doesn't blow up
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
778 con = self._connect()
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
779 try:
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
780 cur = con.cursor()
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
781 cur.setoutputsize(1000)
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
782 cur.setoutputsize(2000,0)
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
783 self._paraminsert(cur) # Make sure the cursor still works
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
784 finally:
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
785 con.close()
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
786
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
787 def test_setoutputsize(self):
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
788 # Real test for setoutputsize is driver dependant
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
789 raise NotImplementedError,'Driver need to override this test'
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
790
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
791 def test_None(self):
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
792 con = self._connect()
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
793 try:
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
794 cur = con.cursor()
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
795 self.executeDDL1(cur)
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
796 cur.execute('insert into %sbooze values (NULL)' % self.table_prefix)
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
797 cur.execute('select name from %sbooze' % self.table_prefix)
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
798 r = cur.fetchall()
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
799 self.assertEqual(len(r),1)
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
800 self.assertEqual(len(r[0]),1)
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
801 self.assertEqual(r[0][0],None,'NULL value not returned as None')
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
802 finally:
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
803 con.close()
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
804
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
805 def test_Date(self):
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
806 d1 = self.driver.Date(2002,12,25)
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
807 d2 = self.driver.DateFromTicks(time.mktime((2002,12,25,0,0,0,0,0,0)))
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
808 # Can we assume this? API doesn't specify, but it seems implied
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
809 # self.assertEqual(str(d1),str(d2))
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
810
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
811 def test_Time(self):
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
812 t1 = self.driver.Time(13,45,30)
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
813 t2 = self.driver.TimeFromTicks(time.mktime((2001,1,1,13,45,30,0,0,0)))
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
814 # Can we assume this? API doesn't specify, but it seems implied
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
815 # self.assertEqual(str(t1),str(t2))
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
816
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
817 def test_Timestamp(self):
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
818 t1 = self.driver.Timestamp(2002,12,25,13,45,30)
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
819 t2 = self.driver.TimestampFromTicks(
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
820 time.mktime((2002,12,25,13,45,30,0,0,0))
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
821 )
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
822 # Can we assume this? API doesn't specify, but it seems implied
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
823 # self.assertEqual(str(t1),str(t2))
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
824
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
825 def test_Binary(self):
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
826 b = self.driver.Binary('Something')
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
827 b = self.driver.Binary('')
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
828
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
829 def test_STRING(self):
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
830 self.failUnless(hasattr(self.driver,'STRING'),
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
831 'module.STRING must be defined'
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
832 )
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
833
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
834 def test_BINARY(self):
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
835 self.failUnless(hasattr(self.driver,'BINARY'),
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
836 'module.BINARY must be defined.'
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
837 )
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
838
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
839 def test_NUMBER(self):
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
840 self.failUnless(hasattr(self.driver,'NUMBER'),
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
841 'module.NUMBER must be defined.'
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
842 )
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
843
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
844 def test_DATETIME(self):
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
845 self.failUnless(hasattr(self.driver,'DATETIME'),
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
846 'module.DATETIME must be defined.'
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
847 )
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
848
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
849 def test_ROWID(self):
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
850 self.failUnless(hasattr(self.driver,'ROWID'),
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
851 'module.ROWID must be defined.'
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
852 )
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
853