summaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
Diffstat (limited to 'tests')
-rwxr-xr-xtests/test_extras_dictcursor.py65
1 files changed, 63 insertions, 2 deletions
diff --git a/tests/test_extras_dictcursor.py b/tests/test_extras_dictcursor.py
index a9201f1..1d5dfd0 100755
--- a/tests/test_extras_dictcursor.py
+++ b/tests/test_extras_dictcursor.py
@@ -15,6 +15,7 @@
# License for more details.
import time
+import pickle
from datetime import timedelta
import psycopg2
import psycopg2.extras
@@ -140,7 +141,6 @@ class ExtrasDictCursorTests(_DictCursorBase):
self.failUnless(row[0] == 'bar')
def testPickleDictRow(self):
- import pickle
curs = self.conn.cursor(cursor_factory=psycopg2.extras.DictCursor)
curs.execute("select 10 as a, 20 as b")
r = curs.fetchone()
@@ -184,6 +184,37 @@ class ExtrasDictCursorTests(_DictCursorBase):
self.assert_(not isinstance(r.items(), list))
self.assertEqual(len(list(r.items())), 2)
+ def test_order(self):
+ curs = self.conn.cursor(cursor_factory=psycopg2.extras.DictCursor)
+ curs.execute("select 5 as foo, 4 as bar, 33 as baz, 2 as qux")
+ r = curs.fetchone()
+ self.assertEqual(list(r), [5, 4, 33, 2])
+ self.assertEqual(list(r.keys()), ['foo', 'bar', 'baz', 'qux'])
+ self.assertEqual(list(r.values()), [5, 4, 33, 2])
+ self.assertEqual(list(r.items()),
+ [('foo', 5), ('bar', 4), ('baz', 33), ('qux', 2)])
+
+ r1 = pickle.loads(pickle.dumps(r))
+ self.assertEqual(list(r1), list(r))
+ self.assertEqual(list(r1.keys()), list(r.keys()))
+ self.assertEqual(list(r1.values()), list(r.values()))
+ self.assertEqual(list(r1.items()), list(r.items()))
+
+ @skip_from_python(3)
+ def test_order_iter(self):
+ curs = self.conn.cursor(cursor_factory=psycopg2.extras.DictCursor)
+ curs.execute("select 5 as foo, 4 as bar, 33 as baz, 2 as qux")
+ r = curs.fetchone()
+ self.assertEqual(list(r.iterkeys()), ['foo', 'bar', 'baz', 'qux'])
+ self.assertEqual(list(r.itervalues()), [5, 4, 33, 2])
+ self.assertEqual(list(r.iteritems()),
+ [('foo', 5), ('bar', 4), ('baz', 33), ('qux', 2)])
+
+ r1 = pickle.loads(pickle.dumps(r))
+ self.assertEqual(list(r1.iterkeys()), list(r.iterkeys()))
+ self.assertEqual(list(r1.itervalues()), list(r.itervalues()))
+ self.assertEqual(list(r1.iteritems()), list(r.iteritems()))
+
class ExtrasDictCursorRealTests(_DictCursorBase):
def testDictCursorWithPlainCursorRealFetchOne(self):
@@ -216,7 +247,6 @@ class ExtrasDictCursorRealTests(_DictCursorBase):
self.failUnless(row['foo'] == 'bar')
def testPickleRealDictRow(self):
- import pickle
curs = self.conn.cursor(cursor_factory=psycopg2.extras.RealDictCursor)
curs.execute("select 10 as a, 20 as b")
r = curs.fetchone()
@@ -293,6 +323,37 @@ class ExtrasDictCursorRealTests(_DictCursorBase):
self.assert_(not isinstance(r.items(), list))
self.assertEqual(len(list(r.items())), 2)
+ def test_order(self):
+ curs = self.conn.cursor(cursor_factory=psycopg2.extras.RealDictCursor)
+ curs.execute("select 5 as foo, 4 as bar, 33 as baz, 2 as qux")
+ r = curs.fetchone()
+ self.assertEqual(list(r), ['foo', 'bar', 'baz', 'qux'])
+ self.assertEqual(list(r.keys()), ['foo', 'bar', 'baz', 'qux'])
+ self.assertEqual(list(r.values()), [5, 4, 33, 2])
+ self.assertEqual(list(r.items()),
+ [('foo', 5), ('bar', 4), ('baz', 33), ('qux', 2)])
+
+ r1 = pickle.loads(pickle.dumps(r))
+ self.assertEqual(list(r1), list(r))
+ self.assertEqual(list(r1.keys()), list(r.keys()))
+ self.assertEqual(list(r1.values()), list(r.values()))
+ self.assertEqual(list(r1.items()), list(r.items()))
+
+ @skip_from_python(3)
+ def test_order_iter(self):
+ curs = self.conn.cursor(cursor_factory=psycopg2.extras.RealDictCursor)
+ curs.execute("select 5 as foo, 4 as bar, 33 as baz, 2 as qux")
+ r = curs.fetchone()
+ self.assertEqual(list(r.iterkeys()), ['foo', 'bar', 'baz', 'qux'])
+ self.assertEqual(list(r.itervalues()), [5, 4, 33, 2])
+ self.assertEqual(list(r.iteritems()),
+ [('foo', 5), ('bar', 4), ('baz', 33), ('qux', 2)])
+
+ r1 = pickle.loads(pickle.dumps(r))
+ self.assertEqual(list(r1.iterkeys()), list(r.iterkeys()))
+ self.assertEqual(list(r1.itervalues()), list(r.itervalues()))
+ self.assertEqual(list(r1.iteritems()), list(r.iteritems()))
+
class NamedTupleCursorTest(ConnectingTestCase):
def setUp(self):