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

Reply via email to