Author: cito
Date: Thu Jul 7 13:36:24 2011
New Revision: 428
Log:
Make decimal_type() work properly (ticket #38).
Modified:
trunk/module/TEST_PyGreSQL_dbapi20.py
trunk/module/pgdb.py
Modified: trunk/module/TEST_PyGreSQL_dbapi20.py
==============================================================================
--- trunk/module/TEST_PyGreSQL_dbapi20.py Wed Jun 22 08:39:08 2011
(r427)
+++ trunk/module/TEST_PyGreSQL_dbapi20.py Thu Jul 7 13:36:24 2011
(r428)
@@ -49,7 +49,7 @@
con = self._connect()
curs = myCursor(con)
ret = curs.execute("select 1 as a, 2 as b")
- self.assert_(ret is curs, 'execute() should return cursor')
+ self.assertTrue(ret is curs, 'execute() should return cursor')
self.assertEqual(curs.fetchone(), {'a': 1, 'b': 2})
def test_cursor_iteration(self):
@@ -91,6 +91,27 @@
finally:
con.close()
+ def test_set_decimal_type(self):
+ decimal_type = pgdb.decimal_type()
+ self.assertTrue(decimal_type is not None and callable(decimal_type))
+ con = self._connect()
+ try:
+ cur = con.cursor()
+ self.assertTrue(pgdb.decimal_type(int) is int)
+ cur.execute('select 42')
+ value = cur.fetchone()[0]
+ self.assertTrue(isinstance(value, int))
+ self.assertEqual(value, 42)
+ self.assertTrue(pgdb.decimal_type(float) is float)
+ cur.execute('select 4.25')
+ value = cur.fetchone()[0]
+ self.assertTrue(isinstance(value, float))
+ self.assertEqual(value, 4.25)
+ finally:
+ con.close()
+ pgdb.decimal_type(decimal_type)
+ self.assertTrue(pgdb.decimal_type() is decimal_type)
+
def test_nextset(self):
pass # not implemented
Modified: trunk/module/pgdb.py
==============================================================================
--- trunk/module/pgdb.py Wed Jun 22 08:39:08 2011 (r427)
+++ trunk/module/pgdb.py Thu Jul 7 13:36:24 2011 (r428)
@@ -95,13 +95,13 @@
"""Get or set global type to be used for decimal values."""
global Decimal
if decimal_type is not None:
- Decimal = decimal_type
- set_decimal(decimal_type)
+ _cast['numeric'] = Decimal = decimal_type
+ set_decimal(Decimal)
return Decimal
def _cast_bool(value):
- return value[:1] in ['t', 'T']
+ return value[:1] in ('t', 'T')
def _cast_money(value):
_______________________________________________
PyGreSQL mailing list
[email protected]
http://mailman.vex.net/mailman/listinfo/pygresql